Docker常用命令大全
Docker是一个强大的工具,它允许开发者和系统管理员在容器中运行应用程序。以下是100个常用的Docker命令,每个命令都附带使用场景和示例。
1. docker run
- 创建并启动一个新容器
- 场景:需要启动一个新的容器实例。
- 示例:
docker run -d --name mynginx -p 8080:80 nginx
2. docker start
- 启动一个或多个已停止的容器
- 场景:容器已停止,需要重新启动。
- 示例:
docker start mynginx
3. docker stop
- 停止一个或多个正在运行的容器
- 场景:需要安全地停止容器。
- 示例:
docker stop mynginx
4. docker restart
- 重启一个或多个容器
- 场景:需要重启容器以应用配置更改。
- 示例:
docker restart mynginx
5. docker rm
- 移除一个或多个容器
- 场景:容器不再需要,需要删除。
- 示例:
docker rm mynginx
6. docker rmi
- 移除一个或多个镜像
- 场景:不再需要某个镜像,需要从本地删除。
- 示例:
docker rmi nginx
7. docker images
- 列出本地镜像
- 场景:查看本地Docker镜像。
- 示例:
docker images
8. docker ps
- 列出当前正在运行的容器
- 场景:查看正在运行的容器。
- 示例:
docker ps
9. docker logs
- 获取容器的日志输出
- 场景:需要查看容器的日志信息。
- 示例:
docker logs mynginx
10. docker attach
- 附加到一个正在运行的容器
- 场景:需要与容器的标准输入、输出和错误流交互。
- 示例:
docker attach mynginx
11. docker exec
- 在运行的容器中执行命令
- 场景:需要在容器内执行命令。
- 示例:
docker exec -it mynginx /bin/bash
12. docker build
- 从Dockerfile构建镜像
- 场景:需要根据Dockerfile构建新的镜像。
- 示例:
docker build -t mynginx .
13. docker pull
- 从仓库拉取镜像
- 场景:需要从Docker Hub或其他仓库下载镜像。
- 示例:
docker pull nginx
14. docker push
- 上传镜像到仓库
- 场景:需要将本地镜像上传到Docker Hub。
- 示例:
docker push myusername/mynginx
15. docker login
- 登录到Docker Hub
- 场景:需要登录Docker Hub以推送或拉取私有镜像。
- 示例:
docker login
16. docker logout
- 从Docker Hub登出
- 场景:完成操作后需要登出。
- 示例:
docker logout
17. docker tag
- 标记本地镜像,为其设置仓库标签
- 场景:需要为镜像设置标签以便于推送。
- 示例:
docker tag nginx myusername/mynginx
18. docker inspect
- 返回容器或镜像的详细低级信息
- 场景:需要获取容器或镜像的详细信息。
- 示例:
docker inspect mynginx
19. docker network ls
- 列出Docker网络
- 场景:查看所有Docker网络。
- 示例:
docker network ls
20. docker network create
- 创建Docker网络
- 场景:需要创建一个新的Docker网络。
- 示例:
docker network create mynet
21. docker network rm
- 删除Docker网络
- 场景:不再需要某个Docker网络。
- 示例:
docker network rm mynet
22. docker network inspect
- 显示网络详情
- 场景:需要查看网络的详细信息。
- 示例:
docker network inspect mynet
23. docker volume ls
- 列出Docker卷
- 场景:查看所有Docker卷。
- 示例:
docker volume ls
24. docker volume create
- 创建Docker卷
- 场景:需要创建一个新的Docker卷。
- 示例:
docker volume create myvol
25. docker volume rm
- 删除Docker卷
- 场景:不再需要某个Docker卷。
- 示例:
docker volume rm myvol
26. docker volume inspect
- 显示卷的详细信息
- 场景:需要查看卷的详细信息。
- 示例:
docker volume inspect myvol
27. docker cp
- 在Docker主机和容器之间复制文件或文件夹
- 场景:需要从容器中拷贝文件到主机或反之。
- 示例:
docker cp mynginx:/usr/share/nginx/html/index.html .
28. docker commit
- 从容器创建一个新的镜像
- 场景:需要保存更改后的容器状态为新的镜像。
- 示例:
docker commit mynginx mynginx:v2
29. docker save
- 将镜像保存到文件中
- 场景:需要保存镜像到文件以便备份或迁移。
- 示例:
docker save -o mynginx.tar mynginx:v2
30. docker load
- 从文件中加载镜像
- 场景:需要从文件中加载镜像到Docker。
- 示例:
docker load -i mynginx.tar
31. docker export
- 导出容器的内容为一个tar文件
- 场景:需要导出容器文件系统的tar文件。
- 示例:
docker export mynginx > mynginx.tar
32. docker import
- 从tar文件创建一个新的镜像
- 场景:需要从tar文件创建新的镜像。
- 示例:
docker import mynginx.tar mynginx:new
33. docker stats
- 显示容器的实时资源使用统计
- 场景:需要查看容器的资源使用情况。
- 示例:
docker stats
34. docker top
- 查看容器内运行的进程
- 场景:需要查看容器内部的进程信息。
- 示例:
docker top mynginx
35. docker port
- 列出容器的端口映射
- 场景:需要查看容器端口映射到主机的情况。
- 示例:
docker port mynginx
36. docker rename
- 重命名容器
- 场景:需要更改容器的名称。
- 示例:
docker rename mynginx newname
37. docker update
- 更新容器配置
- 场景:需要更新容器的资源限制。
- 示例:
docker update --cpus="2" mynginx
38. docker pause
- 暂停容器内的所有进程
- 场景:需要暂停容器中的所有进程。
- 示例:
docker pause mynginx
39. docker unpause
- 恢复容器内的所有进程
- 场景:需要恢复容器中的所有进程。
- 示例:
docker unpause mynginx
40. docker create
- 创建一个新的容器但不启动它
- 场景:需要创建容器但立即不运行。
- 示例:
docker create --name mynginx -p 8080:80 nginx
41. docker diff
- 查看容器文件系统的更改
- 场景:需要查看容器文件系统的更改。
- 示例:
docker diff mynginx
42. docker events
- 显示实时的Docker事件
- 场景:需要监视Docker守护进程的实时事件。
- 示例:
docker events
43. docker search
- 在Docker Hub搜索镜像
- 场景:需要在Docker Hub搜索可用的镜像。
- 示例:
docker search nginx
44. docker prune
- 移除未使用的Docker对象
- 场景:需要清理未使用的容器、镜像、网络和卷。
- 示例:
docker system prune
45. docker system df
- 显示Docker系统的数据使用情况
- 场景:需要查看Docker占用的磁盘空间。
- 示例:
docker system df
46. docker build --cache-from
- 使用缓存来加速镜像构建
- 场景:需要利用已有的镜像缓存来加速构建过程。
- 示例:
docker build --cache-from nginx:latest -t mynginx .
47. docker network connect
- 将容器连接到网络
- 场景:需要将容器连接到已存在的网络。
- 示例:
docker network connect mynet mynginx
48. docker network disconnect
- 将容器从网络断开
- 场景:需要将容器从网络中断开。
- 示例:
docker network disconnect mynet mynginx
49. docker container prune
- 清理已停止的容器
- 场景:需要清理所有已停止的容器。
- 示例:
docker container prune
50. docker image prune
- 清理未使用的镜像
- 场景:需要清理所有未使用的镜像。
- 示例:
docker image prune
51. docker volume prune
- 清理未使用的卷
- 场景:需要清理所有未使用的卷以释放空间。
- 示例:
docker volume prune
52. docker network prune
- 清理未使用的网络
- 场景:需要清理所有未使用的网络。
- 示例:
docker network prune
53. docker rmi -f
- 强制删除一个或多个镜像
- 场景:需要删除即使被容器使用的镜像。
- 示例:
docker rmi -f mynginx
54. docker rm -f
- 强制删除一个或多个容器
- 场景:需要删除即使正在运行的容器。
- 示例:
docker rm -f mynginx
55. docker logs -f
- 跟踪容器的日志输出
- 场景:需要实时跟踪容器的日志输出。
- 示例:
docker logs -f mynginx
56. docker stats -a
- 显示所有容器的资源使用统计
- 场景:需要查看所有容器的资源使用情况。
- 示例:
docker stats -a
57. docker build --no-cache
- 构建镜像时不使用缓存
- 场景:需要确保镜像构建时总是最新的。
- 示例:
docker build --no-cache -t mynginx .
58. docker build --progress=plain
- 显示简单的构建进度
- 场景:需要在构建镜像时显示简单的进度信息。
- 示例:
docker build --progress=plain -t mynginx .
59. docker run --read-only
- 以只读模式运行容器
- 场景:需要确保容器文件系统是只读的。
- 示例:
docker run --read-only -d --name mynginx nginx
60. docker run --cap-add
- 向容器添加Linux能力
- 场景:需要给容器添加特定的Linux能力。
- 示例:
docker run --cap-add SYS_ADMIN -d --name mynginx nginx
61. docker run --cap-drop
- 从容器中删除Linux能力
- 场景:需要从容器中删除特定的Linux能力。
- 示例:
docker run --cap-drop MKNOD -d --name mynginx nginx
62. docker run --pid=host
- 与宿主机共享PID命名空间
- 场景:需要容器与宿主机共享进程ID。
- 示例:
docker run --pid=host -d --name mynginx nginx
63. docker run --uts=host
- 与宿主机共享UTS命名空间
- 场景:需要容器与宿主机共享网络接口。
- 示例:
docker run --uts=host -d --name mynginx nginx
64. docker run --ipc=host
- 与宿主机共享IPC命名空间
- 场景:需要容器与宿主机共享进程间通信资源。
- 示例:
docker run --ipc=host -d --name mynginx nginx
65. docker run --privileged
- 以特权模式运行容器
- 场景:需要容器拥有更多的权限。
- 示例:
docker run --privileged -d --name mynginx nginx
66. docker run --user
- 指定容器内运行用户
- 场景:需要指定容器内运行的非root用户。
- 示例:
docker run --user 1000:1000 -d --name mynginx nginx
67. docker run --env
- 设置环境变量
- 场景:需要在容器内设置环境变量。
- 示例:
docker run --env MY_ENV_VAR=my_value -d --name mynginx nginx
68. docker run --env-file
- 从文件设置环境变量
- 场景:需要从文件中设置多个环境变量。
- 示例:
docker run --env-file ./env.list -d --name mynginx nginx
69. docker run --label
- 设置容器的元数据
- 场景:需要为容器设置标签(label)。
- 示例:
docker run --label com.example.key=value -d --name mynginx nginx
70. docker run --device
- 添加主机设备到容器
- 场景:需要将宿主机的设备添加到容器中。
- 示例:
docker run --device /dev/snd:/dev/snd -d --name mynginx nginx
71. docker run -v
- 挂载卷或目录到容器
- 场景:需要将宿主机的目录挂载到容器中。
- 示例:
docker run -v /my/data:/data -d --name mynginx nginx
72. docker run --volumes-from
- 挂载其他容器的卷
- 场景:需要挂载其他容器的卷到当前容器。
- 示例:
docker run --volumes-from other_container -d --name mynginx nginx
73. docker run --add-host
- 添加自定义的DNS条目
- 场景:需要添加自定义的DNS条目。
- 示例:
docker run --add-host myhost:192.168.1.1 -d --name mynginx nginx
74. docker run --net=host
- 使用宿主机网络
- 场景:需要容器使用宿主机的网络。
- 示例:
docker run --net=host -d --name mynginx nginx
75. docker run --dns
- 设置容器的DNS服务器
- 场景:需要为容器设置特定的DNS服务器。
- 示例:
docker run --dns 8.8.8.8 -d --name mynginx nginx
76. docker run --restart
- 设置容器的重启策略
- 场景:需要设置容器的重启策略。
- 示例:
docker run --restart always -d --name mynginx nginx
77. docker run --link
- 将容器连接到另一个容器或服务
- 场景:需要将容器连接到另一个容器或服务。
- 示例:
docker run --link other_container:alias -d --name mynginx nginx
78. docker run --cpu-period
- 设置CPU周期的总量
- 场景:需要限制容器的CPU周期总量。
- 示例:
docker run --cpu-period 50000 -d --name mynginx nginx
79. docker run --cpu-quota
- 设置CPU配额
- 场景:需要限制容器的CPU使用配额。
- 示例:
docker run --cpu-quota 50000 -d --name mynginx nginx
80. docker run --memory
- 设置容器的内存限制
- 场景:需要限制容器的内存使用。
- 示例:
docker run --memory 512m -d --name mynginx nginx
81. docker run --cpu-shares
- 设置CPU共享权重
- 场景:需要调整容器的CPU共享权重。
- 示例:
docker run --cpu-shares 1024 -d --name mynginx nginx
82. docker run --oom-kill-disable
- 禁用OOM(内存不足)时杀死容器
- 场景:需要禁用当内存不足时自动杀死容器。
- 示例:
docker run --oom-kill-disable -d --name mynginx nginx
83. docker run --oom-score-adj
- 设置OOM调整分数
- 场景:需要设置容器的OOM调整分数。
- 示例:
docker run --oom-score-adj=500 -d --name mynginx nginx
84. docker run --stop-signal
- 设置容器的停止信号
- 场景:需要设置容器的停止信号。
- 示例:
docker run --stop-signal=SIGRTMIN+3 -d --name mynginx nginx
85. docker run --ulimit
- 设置ulimit选项
- 场景:需要设置容器的ulimit选项。
- 示例:
docker run --ulimit nofile=1024:1024 -d --name mynginx nginx
86. docker run --health-cmd
- 设置健康检查命令
- 场景:需要设置容器的健康检查命令。
- 示例:
docker run --health-cmd="curl -f http://localhost/ || exit 1" -d --name mynginx nginx
87. docker run --health-interval
- 设置健康检查间隔
- 场景:需要设置容器的健康检查间隔。
- 示例:
docker run --health-interval=5s -d --name mynginx nginx
88. docker run --health-retries
- 设置健康检查重试次数
- 场景:需要设置容器的健康检查重试次数。
- 示例:
docker run --health-retries=3 -d --name mynginx nginx
89. docker run --health-timeout
- 设置健康检查超时时间
- 场景:需要设置容器的健康检查超时时间。
- 示例:
docker run --health-timeout=2s -d --name mynginx nginx
90. docker run --health-start-period
- 设置健康检查开始前的等待时间
- 场景:需要设置容器启动后健康检查开始前的等待时间。
- 示例:
docker run --health-start-period=10s -d --name mynginx nginx
91. docker build --build-arg
- 为Dockerfile设置构建参数
- 场景:需要在构建镜像时传递参数。
- 示例:
docker build --build-arg ENV_VAR=value -t mynginx .
92. docker run --shm-size
- 设置容器的共享内存大小
- 场景:需要为容器设置共享内存的大小。
- 示例:
docker run --shm-size=1g -d --name mynginx nginx
93. docker run --cpuset
- 设置容器的CPU亲和性
- 场景:需要限制容器运行在特定的CPU核心上。
- 示例:
docker run --cpuset="0-1" -d --name mynginx nginx
94. docker run --gpus
- 允许容器访问GPU
- 场景:需要容器访问宿主机的GPU资源。
- 示例:
docker run --gpus all -d --name mygpuapp mygpuimage
95. docker run --isolation
- 设置容器的隔离技术
- 场景:需要指定容器的隔离技术(Windows平台)。
- 示例:
docker run --isolation=hyperv -d --name mywindowsapp mywindowsimage
96. docker run --sysctl
- 设置容器的内核参数
- 场景:需要为容器设置特定的内核参数。
- 示例:
docker run --sysctl net.core.somaxconn=1024 -d --name mynginx nginx
97. docker run --add-your-unix-group
- 添加用户到容器的Unix组
- 场景:需要将用户添加到容器的Unix组。
- 示例:
docker run --add-your-unix-group -d --name mynginx nginx
98. docker run --stop-timeout
- 设置容器停止时的超时时间
- 场景:需要设置容器在停止时等待的超时时间。
- 示例:
docker run --stop-timeout 60 -d --name mynginx nginx
99. docker run --tmpfs
- 挂载tmpfs卷
- 场景:需要为容器挂载tmpfs卷,提供临时存储。
- 示例:
docker run --tmpfs /run --tmpfs /tmp -d --name mynginx nginx
100. docker run --init
- 运行一个init进程来管理容器内进程的生命周期
- 场景:需要为容器设置init进程。
- 示例:
docker run --init -d --name mynginx nginx
结语
Docker命令行工具提供了丰富的功能,帮助用户高效地管理容器化应用。以上列出的100个命令覆盖了从基本操作到高级管理的各个方面。掌握这些命令将极大地提升你在使用Docker时的效率和灵活性。
希望这篇博文能够成为你学习和使用Docker的宝贵资源。