以下命令均在centos7.9执行过

一、临时进入容器内

  • mysql等有端口的持久容器docker exec -it mysql bash有所不同,一个是常驻容器一个是一次性容器
docker run -it --rm hrt-webui-test bash
命令部分 作用 类比说明
docker run 创建并启动一个新的容器实例。 相当于在电脑上启动一台新的虚拟机。
-it -i:保持标准输入打开,允许交互。
-t:分配一个伪终端。
组合效果就像用 SSH 连接到一台服务器,可以进行命令行交互。
--rm 容器退出后自动删除容器文件系统,避免积累无用容器。 使用一次性的临时虚拟机,用完即焚,不占空间。
hrt-webui-test 指定用于创建容器的镜像名称。 相当于虚拟机的系统镜像模板,例如 ubuntu:22.04
bash 指定容器启动后要执行的命令,这里是启动 bash shell。 相当于虚拟机开机后自动打开命令行窗口。

二、构建容器

docker build -t hrt-webui-test .
命令部分 作用 详细说明
docker build 构建 Docker 镜像的命令 告诉 Docker 引擎开始构建一个新的镜像
-t hrt-webui-test 为镜像指定标签(tag) -t--tag 的缩写,hrt-webui-test 是镜像名称
. 构建上下文路径 表示使用当前目录作为构建上下文

备注:当前目录 是指执行此命令时的目录 使用pwd即可查看

三、打包与解压docker镜像

假设存在镜像名称为hrt-webui-test

  • 打包docker镜像
docker save hrt-webui-test:latest | gzip > hrt-webui-test.tar.gz
  • 解压docker镜像
docker load -i hrt-webui-test.tar.gz

四、运行脚本容器加上 --rm

docker run --rm -v /tmp/test-results:/app/allure-results hrt-webui-test
场景 docker run (无 --rm) docker run --rm
容器状态 Exited (停止) 自动删除
docker ps -a 能看到这个 Exited 容器 看不到
磁盘占用 保留容器层(通常几十MB) 完全释放
容器数量 每次运行增加一个 Exited 容器 保持 docker ps -a 干净

五、打包镜像时高效利用缓存

  • 总结:dockerfile中有改动的部分放在最后

Docker 镜像分层缓存(Layer Cache)是由 Docker 引擎控制的,但它的行为受 Dockerfile 编写方式和构建上下文的影响。

1️⃣ Docker 引擎如何判断缓存是否可用?

✅ 好的写法(利于缓存):
FROM ubuntu:22.04
WORKDIR /app

# 先拷贝依赖文件,尽早利用缓存
COPY requirements.txt .
RUN pip install -r requirements.txt

✅ 只要 requirements.txt 不变,RUN pip install... 就能一直用缓存。

❌ 差的写法(破坏缓存):
FROM ubuntu:22.04
WORKDIR /app

# 先拷贝全部源码(经常变)
COPY . .

# 再安装依赖
RUN pip install -r requirements.txt

❌ 每次代码改动都会导致 COPY . . 层失效,后面的 pip install 也会被连带重建,缓存利用率极低

六、镜像加速

修改 /etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run",
    "https://mirror.ccs.tencentyun.com", 
    "https://docker.nju.edu.cn"
  ],
  "dns": ["114.114.114.114", "8.8.8.8", "223.5.5.5"]
}

七、其他命令

7.1 docker compose 启动与停止

  • 启动
docker compose up -d
  • 停止
    docker-compose.yaml目录下执行
docker compose down

更多推荐