Dokcer常用命令

1 Docker常用命令

1.1 镜像管理

1
2
3
4
5
6
7
8
9
10
# 列出本地所有镜像
docker images
# 查找image
docker search <IMAGE_ID/NAME>
# 下载image
docker pull <IMAGE_ID>
# 上传image
docker push <IMAGE_ID>
# 删除image
docker rmi <IMAGE_ID>

1.2 容器管理

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
docker run -i -t <IMAGE_ID> /bin/bash:   
-i:标准输入给容器
-t:分配一个虚拟终端
/bin/bash:执行bash脚本
-d:以守护进程方式运行(后台)
-P:默认匹配docker容器的5000端口号到宿主机的49153 to 65535端口
-p <HOT_PORT>:<CONTAINER_PORT>:指定端口号
--name: 指定容器的名称
--rm:退出时删除容器

# 停止container
docker stop <CONTAINER_ID>
#重新启动container
docker start <CONTAINER_ID>
#显示运行的容器
docker ps
-l:显示最后启动的容器
-a:同时显示停止的容器,默认只显示启动状态

# 连接到启动的容器
docker attach <CONTAINER_ID>
#输出容器日志
docker logs <CONTAINER_ID>
-f:实时输出

# 复制容器内的文件到宿主机目录上
docker cp <CONTAINER_ID>:路径 宿主机路径
# 删除container
docker rm <CONTAINER_ID>
# 删除所有容器
docker rm `docker ps -a -q`
docker kill `docker ps -q`
docker rmi `docker images -q -a`
docker wait <CONTAINER_ID>:阻塞对容器的其他调用方法,直到容器停止后退出

# 查看容器中运行的进程
docker top <CONTAINER_ID>
# 查看容器中的变化
docker diff <CONTAINER_ID>
# 查看容器详细信息(输出为Json)
docker inspect <CONTAINER_ID>
-f:查找特定信息,如docker inspect -f '{{ .NetworkSettings.IPAddress }}'
docker commit -m "comment" -a "author" <CONTAINER_ID> ouruser/imagename:tag

docker extc -it <CONTAINER> <COMMAND>:在容器里执行命令,并输出结果

1.3 网络管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 随机分配端口号
docker run -P
# 绑定特定端口号(主机的所有网络接口的5000端口均绑定容器的5000端口)
docker run -p 5000:5000
# 绑定主机的特定接口的端口号
docker run -p 127.0.0.1:5000:5000
# 绑定udp端口号
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
# 查看容器的5000端口对应本地机器的IP和端口号
docker port <CONTAINER_ID> 5000
# 使用Docker Linking连接容器:
# Docker为源容器和接收容器创建一个安全的通道,容器之间不需要暴露端口,接收的容器可以访问源容器的数据

docker run -d -P --name <CONTAINER_NAME> --link <CONTAINER_NAME_TO_LINK>:<ALIAS>

1.4 数据管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Data Volumes:volume是在一个或多个容器里指定的特殊目录
# 数据卷可以在容器间共享和重复使用
# 可以直接修改容器卷的数据
# 容器卷里的数据不会被包含到镜像中
# 容器卷保持到没有容器再使用它
# 可以在容器启动的时候添加-v参数指定容器卷,也可以在Dockerfile里用VOLUMN命令添加
docker run -d -P --name web -v /webapp training/webapp python app.py
# 也可以将容器卷挂载到宿主机目录或宿主机的文件上,<容器目录或文件>的内容会被替换为<宿主机目录或文件>的内容,默认容器对这个目录有可读写权限
docker run -d -P --name web -v <宿主机目录>:<容器目录> training/webapp python app.py
# 可以通过指定ro,将权限改为只读
docker run -d -P --name web -v <宿主机目录>:<容器目录>:ro training/webapp python app.py
# 在一个容器创建容器卷后,其他容器便可以通过--volumes-from共享这个容器卷数据,如下:
docker run -d -v /dbdata --name db1 training/postgres echo Data-only container for postgres
# 首先启动了一个容器,并为这个容器增加一个数据卷/dbdata,然后启动另一个容器,共享这个数据卷
docker run -d --volumes-from db1 --name db2 training/postgres
# 此时db2使用了db1的容器卷,当容器db1被删除时,容器卷也不会被删除,只有所有容器不再使用此容器卷时,才会被删除
docker rm -v:删除容器卷
# 除了共享数据外,容器卷另一个作用是用来备份、恢复和迁移数据
docker run --volumes-from db1 -v /home/backup:/backup ubuntu tar cvf /backup/backup.tar /dbdata
# 启动一个容器数据卷使用db1容器的数据卷,同时新建立一个数据卷指向宿主机目录/home/backup,将/dbdata目录的数据压缩为/backup/backup.tar
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
docker run --volumes-from dbdata2 -v /home/backup:/backup busybox tar xvf /backup/backup.tar
# 启动一个容器,同时把backup.tar的内容解压到容器的backup

1.5 仓库管理

docker login:登录

1.6 镜像打包及恢复

1.6.1 保存镜像为文件

1
2
3
4
# centos为镜像,centos为打包名,centos后可以指定标签
docker save -o centos.tar centos
or
docker save -o centos.tar centos:7.2

1.6.2 从文件载入镜像

1
2
3
4
# home/centos.tar为镜像文件路径
docker load --input /home/centos.tar
or
docker load < /home/centos.tar
-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!