Docker常用命令

运行一个docker实例

1
docker run xxx # xxx是实例的名称,如hello-world

查看本地docker镜像信息

1
docker images

卸载docker

1
2
3
4
5
6
# ubnutu 下
# 卸载docker引擎,应用程序
sudo apt-get purge docker-ce docker-ce-cli containerd.io
# 删除docker镜像,资源
sudo rm -rf /var/lib/docker # docker的默认工作路径
sudo rm -rf /var/lib/containerd

帮助命令

1
2
3
docker vsersion  # 显示docker信息
docker info # 显示docker的系统信息
docker 命令 --help

[docker官方命令地址](Reference documentation | Docker Documentation)

镜像命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
docker login # 登录dockerhub 账号,有些镜像需要账号才能下载
docker images # 查看所有docker镜像
docker search java # 搜索镜像
docker pull ascdc/jdk8 # 下载镜像
Using default tag: latest # 默认拉取最新版本
latest: Pulling from ascdc/jdk8
297061f60c36: Pull complete # 分层下载( 如果下载其他镜像有相同的层时就不会重复下载 )
e9ccef17b516: Pull complete
dbc33716854d: Pull complete
8fe36b178d25: Pull complete
686596545a94: Pull complete
dfa7782be422: Pull complete
25d4d9080d04: Pull complete
0615a7c60138: Pull complete
a8a7a10db50a: Pull complete
Digest: sha256:44af3f9184a2fde277ccd785f47bfe2ef3f04f2c35bf6d92adf4b40cb585a5f7 #标签
Status: Downloaded newer image for ascdc/jdk8:latest
docker.io/ascdc/jdk8:latest # 真实的仓库地址
docker rmi -f (imgaeId/imageName) # 删除image,多个中间加空格
docker rmi -f $(docker images -qa) # 删除所有的image

容器命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 下载镜像并运行镜像
docker run [参数] images
## 参数
--name="Name" #容器名字
-d #后台运行
-it # 使用交互模式运行
-p # 指定一个port运行容器
-p ip:主机端口:容器端口
-p 主机端口:容器端口 ( 常用 )
-p 容器端口
-P # 随机一个port

# 启动并进入容器
long@ltp:/$ docker run -it centos /bin/bash
[root@04f98154528b /]#
# 退出命令
exit # 会关闭容器
ctrl + P + Q # 不关闭容器退出
# 列出所有运行的命令
docker ps
docker ps -a
docker ps -a -n=1 # 显示最后一次运行的容器
docker ps -qa
# 删除容器
docker rm #容器Id
docker rm -f $( docker ps -aq ) #删除所有容器
# 启动和停止容器
docker start 容器Id # 启动一个容器
docker restart 容器Id # 重启一个容器
docker stop 容器Id
docker kill 容器Id
# 重新进入容器
docker exec -it 容器Id /bin/bash
docker attach 容器Id

docker exec # 开启一个新的终端 ( 常用 )
docker attach # 使用容器之前的终端

常用的其他命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 后台启动容器
docker run -d centos
# 常见的问题
# docker 容器使用后台运行,就必须要有一个前台应用,docker发现没有前台应用,就会自动停止

# 查看日志
-tf
-tail 10 显示10行日志
docker --logs 容器Id

# 查看容器中的进程信息
docker top 容器Id

# 查看容器内部信息
docker inspect 容器Id

# 从容器内拷贝文件到宿主机上
docker cp 容器Id:/文件地址 宿主机目标目录

# 查看容器 资源状态
docker stats

# 提交容器 -> 将一个容器打包成一个新的镜像
# 首先需要运行容器
docker commit -m="描述信息" -a="作者" 容器Id [Tag信息]

# 查看 image build的步骤
docker history imageName/imageId

# 数据持久化/数据卷挂载
docker run -it -v 宿主目录:容器目录

# 匿名挂载
-v 容器目录
DRIVER VOLUME NAME
local 2ddc412e3e1d7274549550589ed28bd16f2a8d9ab899d9d853edcac504c5e8e5
# 具名挂载
-v 具名:容器目录

# 区分具名挂载、匿名挂载和指定目录挂载
docker -v 容器目录 # 匿名挂载
docker -v 具名:容器目录 # 具名挂载
dokcer -v /宿主机路径:容器目录 # 指定目录挂载

# 拓展
# ro readOnly 只读权限
# rw readWriter 读写权限
docker -v 容器目录:[ro|rw]


# 查看所有数据卷
docker vloume ls

# 提交镜像
# 提交镜像之前需要先登录账号
# docker hub
docker pull authorName/imageName:[Tag]

# 修改image信息
docker tag imageId 修改之后的信息

# 查看所有的docker网络
docker network ls