> 技术文档 > docker基础命令解释

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

列名含义

REPOSITORY 镜像的名称(通常格式:[仓库服务器/][命名空间/]镜像名) TAG 镜像的标签(版本标识),默认为 latest IMAGE ID 镜像的唯一哈希 ID(SHA256),通常缩写为前 12 个字符 CREATED 镜像的创建时间(相对于当前时间的相对时间,如 “2 weeks ago”) SIZE 镜像的磁盘占用大小(解压后的总大小)

三、创建并启动

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(一次性完成创建和启动)

  1. 检查镜像:如果本地不存在 IMAGE,会自动执行 docker pull。
  2. 创建容器:基于镜像创建一个可写的容器层。
  3. 分配资源:根据选项分配网络、存储、CPU 等资源。
  4. 执行命令:运行 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

列名含义

列名 说明 CONTAINER ID 容器的唯一 ID IMAGE 容器所使用的镜像名称(:,如 nginx:latest) COMMAND 容器启动时运行的默认命令(通常是镜像的 ENTRYPOINT 或 CMD) CREATED 容器的创建时间(相对时间,如 2 minutes ago) STATUS 容器状态:
- Up(正在运行)
- Exited (0)(已退出,括号内是退出代码) PORTS 端口映射(格式:主机端口->容器端口/协议,如 0.0.0.0:8080->80/tcp) NAMES 容器的名称(通过 --name 指定,未指定时随机生成)

常用选项

选项 作用 -a 或 --all 显示所有容器(包括已停止的) -q 或 --quiet 仅显示容器 ID(适合脚本操作) -s 或 --size 显示容器占用的磁盘大小 –filter 按条件过滤容器(如 status=exited) –format 自定义输出格式(如 {{.ID}}\\t{{.Names}}) –no-trunc 显示完整信息(不截断 CONTAINER ID 或 COMMAND)

七、查看容器的日志

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

删除选项

选项 说明 -f, --force 强制删除运行中的容器 -v, --volumes 同时删除与容器关联的匿名卷

删除流程

  1. 列出容器确认要删除的对象
docker ps -a
  1. 停止运行中的容器
docker stop 容器ID
  1. 删除容器
docker rm -v 容器ID
  1. 验证删除结果
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
  1. 验证删除结果
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