docker基础命令解释
文章目录
- 一、下载镜像
- 二、列出本地Docker镜像
- 三、创建并启动
-
- 工作流程
- 四、进入已运行的容器
- 五、退出容器
- 六、验证容器是否在运行
- 七、查看容器的日志
- 八、启动/停止/重启容器
- 九、删除容器
-
- 删除选项
- 删除流程
- 十、删除镜像
-
- 删除流程
- 注意事项
- 十一、构建镜像
- 十二、标记镜像
-
- 主要功能
- 十三、推送镜像到仓库
-
- 应用场景
- 十四、保存为 .tar 包
- 十五、从 .tar 包加载镜像
一、下载镜像
docker pull ubuntu:20.04# 腾讯云镜像源docker pull ccr.ccs.tencentyun.com/library/ubuntu:20.044
执行时,Docker默认会从DockerHub下载镜像。DockerHub是Docker官方的公共镜像仓库,类似于GitHub之于代码。
默认:不特别指定registry地址,Docker 会从 Docker Hub(docker.io/library/ubuntu:20.04)下载镜像
二、列出本地Docker镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZEubuntu 20.04 a0ce5a295b63 2 weeks ago 72.8MBnginx latest 2b7d6430f78d 3 weeks ago 142MB
列名含义
三、创建并启动
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
从镜像创建并启动一个新的容器
IMAGE:要运行的镜像名称(如 ubuntu:20.04)。
COMMAND:容器启动后执行的命令(默认使用镜像中定义的 CMD)。
OPTIONS:控制容器行为的参数(如端口映射、数据卷等)。
docker run -it ubuntu:20.04 /bin/bash# -it:进入容器的交互式 Shell。# /bin/bash:覆盖镜像默认的 CMD,启动 Bash。
docker run -d -p 8080:80 --name my-nginx nginx# -d:后台运行。# -p 8080:80:通过主机 8080 端口访问容器的 80 端口。# --name:指定容器名称
docker run -d \\ -v /home/user/app:/app \\ -e APP_COLOR=blue \\ --name my-app \\ my-webapp:latest # -v:将主机的 /home/user/app 挂载到容器的 /app。# -e:设置环境变量 APP_COLOR=blue。
docker run --cpus=1 --memory=1g --rm alpine sleep 30# --cpus=1:限制使用 1 核 CPU。# --memory=1g:限制内存为 1GB。# --rm:容器退出后自动删除。
工作流程
docker run = docker create + docker start(一次性完成创建和启动)
- 检查镜像:如果本地不存在 IMAGE,会自动执行 docker pull。
- 创建容器:基于镜像创建一个可写的容器层。
- 分配资源:根据选项分配网络、存储、CPU 等资源。
- 执行命令:运行 CMD 或用户指定的 COMMAND。
# 如果需要先配置容器再启动,可以分开操作docker create -it --name temp ubuntu:20.04docker start -ai temp
四、进入已运行的容器
docker exec -it my-container /bin/bash
docker run -it 是创建时进入,docker exec 是进入已存在的容器。
五、退出容器
退出当前交互式会话,并停止容器:
在容器内部执行 exit或按快捷键 Ctrl + D
仅退出当前 Shell,保持容器运行:
Ctrl + P连 Ctrl + Q
六、验证容器是否在运行
docker ps
# 列出所有容器(包括已停止的)docker ps -a# 仅显示容器 ID(适合批量操作)docker ps -q# 按状态过滤容器-只显示已退出的容器docker ps -a --filter \"status=exited\"# 按名称过滤容器docker ps --filter \"name=my-nginx\"# 显示容器占用磁盘大小docker ps -s
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESa1b2c3d4e5f6 nginx:latest \"/docker-entrypoint.…\" 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp my-nginx
列名含义
- Up(正在运行)
- Exited (0)(已退出,括号内是退出代码)
常用选项
七、查看容器的日志
docker logs my-container
#查看实时日志docker logs -f my-container
#查看最后N行docker logs --tail=100 my-container
八、启动/停止/重启容器
docker start container_namedocker stop container_namedocker restart container_name
九、删除容器
# 删除已停止的容器docker rm container_name# 强制删除运行中的容器docker rm -f container_name# 删除所有已停止的容器docker container prune
删除选项
删除流程
- 列出容器确认要删除的对象
docker ps -a
- 停止运行中的容器
docker stop 容器ID
- 删除容器
docker rm -v 容器ID
- 验证删除结果
docker ps -a | grep 容器ID
十、删除镜像
docker rmi image_namedocker rmi image_id# 删除悬空镜像docker image prune
删除流程
1.列出镜像
docker images
2.检查是否有容器使用该镜像
docker ps -a --filter \"ancestor=镜像名\"
3.删除镜像(可选择强制删除)
docker rmi 镜像ID
- 验证删除结果
docker images | grep 镜像名
注意事项
如果有容器(即使已停止)使用该镜像,默认无法删除;
一个镜像可能有多个标签,删除一个标签不会删除镜像数据,直到最后一个标签被删除。
十一、构建镜像
# 使用当前目录的Dockerfile构建docker build -t myimage:1.0 .# 指定Dockerfile路径docker build -f /path/to/Dockerfile -t myimage:1.0 .
十二、标记镜像
docker tag myimage:1.0 myrepo/myimage:latest
主要功能
创建镜像别名:原始镜像和新标签共享相同的镜像ID
准备推送镜像:为本地镜像添加符合仓库规范的名称
版本管理:为同一镜像创建多个版本标签
十三、推送镜像到仓库
docker push myrepo/myimage:latest
应用场景
版本发布流程:
docker build -t myapp:1.1 .docker tag myapp:1.1 myapp:latestdocker tag myapp:1.1 registry.io/team/myapp:1.1docker push registry.io/team/myapp:1.1docker push registry.io/team/myapp:latest
环境标记:
docker tag myapp:build-123 myapp:stagingdocker tag myapp:build-123 myapp:production
十四、保存为 .tar 包
docker save [OPTIONS] IMAGE [IMAGE...] -o output.tar
# 保存单个镜像docker save -o nginx.tar nginx:latest# 通过镜像 ID 保存docker save -o myapp.tar abc123456789 # 实际镜像 ID# 保存多个镜像docker save -o myimages.tar nginx:latest alpine:3.14
十五、从 .tar 包加载镜像
docker load [OPTIONS] -i input.tar
# 加载单个镜像docker load -i nginx.tar# 加载多个镜像docker load -i myimages.tar# 输出# Loaded image: nginx:latest# Loaded image: alpine:3.14