Docker命令大全:从入门到精通
作为一名开发人员或运维工程师,掌握Docker已经成为必备技能。无论你是刚刚接触Docker的新手,还是需要随时查阅命令的老兵,这份超全、超实用的Docker命令大全都将为你提供极大的便利。本文涵盖了镜像管理、容器操作、网络配置、数据卷等全场景高频命令,附带简洁说明和实用示例,助你提升容器化管理和开发效率。
一、Docker基础概念
在深入命令之前,先简单回顾Docker的核心概念:
-
镜像(Image):容器的模板,类似于面向对象中的类
-
容器(Container):镜像的运行实例,类似于类的实例化对象
-
仓库(Repository):存放镜像的地方,如Docker Hub
二、帮助命令
当你对Docker命令不熟悉时,首先应该掌握帮助命令:
bash
docker version # 查看docker版本信息 docker info # 显示系统范围的信息:cite[2] docker --help # 查看docker中的所有命令及相关参数信息:cite[2]
三、镜像管理命令
镜像是容器的基础,掌握镜像管理是使用Docker的第一步。
1. 查看与搜索镜像
bash
# 列出本地所有镜像 docker images# 在Docker Hub搜索镜像,只列出前5个结果 docker search --limit 5 redis:cite[2]
2. 拉取与推送镜像
bash
# 从仓库拉取镜像,不写标签默认为latest docker pull nginx:latest# 将本地镜像推送到镜像仓库 docker push myapp:v1
3. 构建与删除镜像
bash
# 使用当前目录的Dockerfile构建镜像 docker build -t myapp:v1 .# 删除一个镜像 docker rmi myapp:v1# 强制删除多个镜像 docker rmi -f image1:v1 image2:v1:cite[2]# 清理悬空镜像(build失败残留) docker image prune
4. 镜像导入导出与历史
bash
# 将镜像保存为tar归档文件 docker save myapp > myapp.tar# 从tar归档文件加载镜像 docker load < myapp.tar# 显示镜像的历史信息 docker history nginx# 为镜像添加一个新的标签 docker tag nginx myregistry/nginx:v1
四、容器管理命令
容器是镜像的运行实例,是Docker的核心。
1. 容器生命周期管理
bash
# 创建并启动一个交互式容器 docker run -it ubuntu /bin/bash:cite[2]# 启动守护式容器(后台运行) docker run -d nginx:cite[2]# 启动已停止的容器 docker start mycontainer# 停止正在运行的容器(优雅关闭) docker stop mycontainer# 重启容器 docker restart mycontainer# 立即终止容器的运行 docker kill mycontainer:cite[2]:cite[5]
docker run 常用选项详解:
-
-d
:后台运行容器(守护模式) -
-it
:交互模式运行容器,并分配伪终端 -
--name
:为容器指定名称 -
-p
:端口映射,格式为宿主机端口:容器端口
-
-v
:挂载数据卷,格式为宿主机路径:容器路径
-
-e
:设置环境变量 -
--network
:指定容器网络 -
--restart
:设置重启策略(no, on-failure, always, unless-stopped) -
--rm
:容器退出时自动删除
2. 容器信息查看
bash
# 查看正在运行的容器 docker ps# 查看所有容器(包括已停止的) docker ps -a:cite[2]:cite[8]# 查看最近创建的5个容器 docker ps -n 5:cite[5]# 查看容器日志 docker logs mycontainer# 实时跟踪日志 docker logs -f mycontainer# 获取容器的详细信息 docker inspect mycontainer:cite[2]# 显示容器内运行的进程 docker top mycontainer:cite[2]# 显示容器的实时资源使用情况 docker stats mycontainer# 显示容器的端口映射 docker port mycontainer
3. 容器操作与维护
bash
# 进入正在运行的容器并以命令行交互(推荐方式) docker exec -it mycontainer /bin/bash:cite[2]:cite[3]# 连接到正在运行的容器(不推荐,退出会导致容器停止) docker attach mycontainer:cite[3]# 从容器复制文件到主机 docker cp mycontainer:/path/to/file /host/path# 从主机复制文件到容器 docker cp /host/path mycontainer:/container/path:cite[7]# 从容器创建新的镜像 docker commit mycontainer newimage:v1:cite[7]# 重命名容器 docker rename old_name new_name:cite[7]# 更新容器的CPU份额限制 docker update --cpu-shares 512 mycontainer
4. 容器删除
bash
# 删除已停止的容器 docker rm mycontainer# 强制删除正在运行的容器 docker rm -f mycontainer:cite[2]# 删除所有停止的容器 docker container prune
五、数据卷与挂载命令
数据卷可以实现数据持久化和容器间数据共享。
1. 数据卷管理
bash
# 创建一个数据卷 docker volume create mydata# 查看所有数据卷 docker volume ls# 删除数据卷 docker volume rm mydata# 删除所有未使用的卷 docker volume prune
2. 挂载方式
bash
# 方式1:挂载主机目录(推荐开发环境) docker run -d -v /host/path:/container/path nginx# 方式2:使用命名卷(推荐生产环境) docker run -d -v mydata:/data nginx# 方式3:只读挂载 docker run -d -v /host/config:/etc/config:ro nginx# 方式4:使用--mount选项(更详细的配置) docker run --mount type=bind,source=/host/path,target=/container/path nginx
六、网络管理命令
Docker网络允许容器之间以及容器与外部世界通信。
1. 网络管理基础
bash
# 查看所有网络 docker network ls# 创建自定义网络 docker network create mynet# 删除网络 docker network rm mynet# 显示网络的详细信息 docker network inspect mynet
2. 容器网络连接
bash
# 将容器加入网络 docker network connect mynet mycontainer# 将容器移出网络 docker network disconnect mynet mycontainer# 启动时指定网络 docker run --network=mynet nginx
3. 网络示例:容器互通
bash
# 创建网络 docker network create mynet# 启动两个容器并加入同一网络 docker run -d --name db --network mynet redis docker run -d --name app --network mynet myapp:v1# 此时app容器可以直接用`db`作为主机名访问Redis
七、实用技巧与常见场景
1. 常用场景示例
bash
# 运行Nginx容器并挂载网页目录 docker run -d --name my-nginx -p 80:80 -v /host/html:/usr/share/nginx/html nginx# 进入Redis容器并执行命令 docker exec -it my-redis redis-cli# 查看容器IP地址 docker inspect mycontainer | grep "IPAddress"# 构建时跳过缓存 docker build --no-cache -t myapp:v1 .# 运行Node-RED并持久化数据 docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red:cite[6]
2. 资源限制
bash
# 设置容器内存和CPU限制 docker run --memory=2g --cpus=1.5 -d nginx# 设置容器重启策略 docker run --restart=always -d myapp
3. 环境变量配置
bash
# 通过-e选项设置环境变量 docker run -e "DB_HOST=db" -e "DB_USER=admin" -d myapp# 通过环境变量文件设置 docker run --env-file ./env.list -d myapp
八、Docker系统维护命令
定期清理可以释放磁盘空间,保持系统高效运行。
bash
# 查看Docker磁盘使用情况 docker system df# 清理所有未使用的资源(容器、网络、镜像、构建缓存) docker system prune# 清理所有未使用的镜像(包括未被引用的) docker system prune -a# 实时获取Docker系统的事件 docker system events
注意:prune -a
会删除所有未使用的镜像,确认后再执行!
总结
本文涵盖了Docker最常用的命令及其具体实例,从基础的镜像和容器管理,到高级的网络配置和数据持久化。建议收藏本文,在日常使用中随时查阅。记住,熟练掌握Docker命令的最佳方式就是多实践、多尝试,随着使用经验的积累,这些命令将逐渐变成你的第二本能。