docker常用命令
# docker常用命令
# 镜像命令(image)
# docker search 查找某个镜像
--no-trunc # 显示完整的镜像描述
-s # 列出收藏数不小于指定值的镜像
--automated # 只列出 automated build类型的镜像
1
2
3
2
3
# docker pull 拉取镜像
docker pull 镜像名字[:TAG]
1
# docker image
# docker image ls 查看本地镜像
-a # 显示所有镜像
--no-trunc # 显示完整的镜像描述
-q # 只查看镜像ID
1
2
3
2
3
# docker image inspect 镜像详细信息查看
docker image inspect 镜像名字[:TAG]
1
# docker image save/load 镜像导入/导出
docker image save 镜像ID > /tmp/centos.tar
docker image load -i /tmp/centos.tar
docker image tag 镜像ID centos:8.4
1
2
3
2
3
# docker image rm 删除镜像
docker image rm -f 镜像ID # 删除单个镜像
docker image rm -f 镜像ID[:TAG] 镜像ID[:TAG] # 删除单个镜像
docker image rm -f $(docker images -qa) # 删除全部镜像
docker image rm $(docker images -a | awk '/^<none>/ { print $3 }') -f # 删除标签为<none>的镜像
1
2
3
4
2
3
4
# 容器命令(container)
# docker run 运行容器
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
示例:
# 交互式容器操作
docker run -it centos /bin/bash # 交互运行容器,并执行/bin/bash命令
两种退出方式
exit 或 ctrl + D 容器停止退出
ctrl + P + Q 容器不停止退出
#守护容器
docker run -it -d -v /tmp/nginx:/etc/nginx/ --name nginx_master -p 81:80 -v /tmp/nginx/log:/var/log/nginx nginx # 以后台模式运行nginx,并把容器内80端口映射到宿主机81端口。映射本地目录到容器内,容器命名为 nginx_master
1
2
3
4
5
6
7
2
3
4
5
6
7
端口映射:
容器中可以运行一些应用,通过-p
或-P
参数来指定端口映射。
-p hostPort:containerPort
-p ip:hostPort:containerPort
-p ip::containerPort(随机端口:32768-60999)
-p hostPort:containerPort/udp
1
2
3
4
2
3
4
宿主机的一个端口只能映射到容器内部的某一个端口上,比如:8080->80之后,就不能8080->81 容器内部的某个端口可以被宿主机的多个端口映射,比如:8080->80,8090->80,8099->80
- 选择一个端口进行映射
-p docker会选择一个具体的宿主机端口映射到容器内部开放的网络端口上。 -P docker会随机选择一个宿主机端口映射到容器内部开放的网络端口上。
docker run -it -d -p 81:80 nginx # 容器内80端口映射到宿主机81端口
docker run -it -d -P nginx # 容器内开放的端口映射到宿主机随机端口
1
2
2
2. 启动时,绑定外部ip和端口 可以看到如果绑定了ip地址的话,就只能从绑定ip地址访问
- 启动时可以指定 TCP 还是 UDP 协议进行访问
数据卷容器:
集中管理集群中,大批量的容器都需要挂载相同的多个数据卷时,可以采用数据卷容器进行统一管理
mkdir -p /opt/volume1 /opt/volume2 # 新建目录
docker run -it -d -p 81:80 -v /opt/volume1:/opt/volume1 -v /opt/volume2:/opt/volume2 --name volume_test nginx # 新建数据卷
docker run -it -d --volumes-from volume_test --name nginx_master -p 82:80 nginx # 挂载数据卷
docker run -it -d --volumes-from volume_test --name nginx_salve -p 83:80 nginx # 挂载数据卷
1
2
3
4
2
3
4
# docker start/stop/restart/kill
docker start 容器ID或容器名
docker stop 容器ID或容器名
docker restart 容器ID或容器名
docker kill 容器ID或容器名
1
2
3
4
2
3
4
# docker rm 删除容器
docker rm 容器ID -f
# 一次性删除多个容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
1
2
3
4
2
3
4
# docker attach 进入容器
docker attach 容器ID或容器名
1
# docker exec 容器内运行命令
相当于在已有工作容器中生成子进程,做登录.可以用于进行容器的调试,退出时也不会影响到当前容器
docker exec -it 容器ID或容器名 /bin/bash
1
# docker container/docker ps 查看容器
docker container ls -a = docker ps -a
1
# docker logs 查看容器日志
-f : 跟踪日志输出
-t : 显示时间戳
--tail :仅列出最新N条容器日志
1
2
3
2
3
示例:
docker logs -t -f 容器ID或容器名
docker logs --since='2021-11-11' --tail=10 容器ID或容器名 # 查看从2021-11-11号之后的最后10条日志
1
2
2
# docker cp 拷贝文件
docker cp 容器ID:容器内路径 目的主机路径
1
示例:
docker cp /etc/nginx/nginx.conf 容器ID或容器名:/tmp/ # 把文件拷贝到容器中
docker cp 容器ID或容器名:/tmp/nginx.conf /tmp # 把文件从容器中拷贝出来
1
2
2
# docker常用命令总结
上次更新: 2024/05/11, 03:55:33