容器和镜像之间的关系
1. 安装软件
linux使用清华源安装 docker 和 docker compose
windows装在C盘会容易满,可以装在D盘,
"Docker Desktop Installer.exe" install -accept-license --installation-dir=D:\Docker\Docker --wsl-default-data-root=D:\Docker\data "Docker Desktop Installer.exe" install --installation-dir="D:\Docker"已无长期稳定的镜像源,挂梯即可
2. 查看docker 版本号信息
dockerversiondockerinfo3. docker 镜像命令
查看自己服务器中docker 镜像列表
dockerimages拉取镜像不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本
dockerpull 镜像名dockerpull 镜像名:tag删除镜像------当前镜像没有被任何容器使用才可以删除
#删除一个dockerrmi-f镜像名/镜像ID#删除多个 其镜像ID或镜像用用空格隔开即可dockerrmi-f镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID#删除全部镜像 -a 意思为显示全部, -q 意思为只显示IDdockerrmi-f$(dockerimages-aq)# 强制删除镜像dockerimagerm镜像名称/镜像ID# 删除所有缓存dockerbuilder prune-fdocker修改内容的保存:docker commit
docker容器相当于是docker镜像(类)的一个实例,对容器的修改,实际上是对实例的修改,但它并不只存在于内存,而是在磁盘上有持久化存储(除非是 --rm 运行的临时容器)。
dockercommit-m="提交描述信息"-a="作者"容器id 自己起镜像名:tag保存镜像到.tar
dockersave 镜像名:tag>镜像保存在哪个位置与名字加载<镜像.tar>
dockerload<镜像保存文件位置添加一个新镜像来改tag
dockertag 源镜像名:TAG 想要生成新的镜像名:新的TAG4. docker 容器命令
查看正在运行容器列表
dockerpsdockerps-a新建一个容器(镜像的实例)
# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径dockerrun-it-d-p宿主机端口:容器端口-v宿主机文件存储位置:容器内文件位置--name容器名--gpusall--restart=always 镜像名:Tag /bin/bash进入容器
# 启动容器dockerstart 容器ID/容器名# 重启容器dockerrestart 容器ID/容器名# 更换容器名dockerrename容器ID/容器名 新容器名# 进入容器的两种方式dockerexec-it容器名/容器ID /bin/bashdockerattach 容器名/容器ID容器导出和导入
通过export 和 import 导出的容器形成镜像时, 该镜像只有一层。通过save 和 load 导出的镜像保留了原镜像所有的层次结构, 导出时原镜像有几层, 导入的时候就还是有几层。
dockerexportcontainer>container.tar.gzdockerimportcontainer.tar.gz container:v1退出容器
#-----直接退出 未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭exit# 优雅退出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭Ctrl + p + q停止容器
dockerstop 容器名/容器ID# kill容器dockerkill容器ID/容器名删除容器
#删除一个容器dockerrm-f容器名/容器ID#删除多个容器 空格隔开要删除的容器名或容器IDdockerrm-f容器名/容器ID 容器名/容器ID 容器名/容器ID#删除全部容器dockerrm-f$(dockerps-aq)容器文件拷贝—无论容器是否开启 都可以进行拷贝
#从容器内 拷出dockercp容器ID/名称: 容器内路径 容器外路径#从外部 拷贝文件 到容器内dockercp容器外路径 容器ID/名称: 容器内路径5. dockerfile编写
FROM quay.io/ascend/vllm-ascend:main-a3 RUN apt update && \ apt install -y \ curl \ wget \ unzip \ screen \ tzdata \ vim \ less \ iproute2 \ git \ build-essential \ && rm -rf /var/lib/apt/lists/* RUN git clone -b v0.3.11 --depth 1 https://github.com/kvcache-ai/Mooncake.git /opt/Mooncake RUN cd /opt/Mooncake && \ sed -i 's|https://go.dev/dl/|https://golang.google.cn/dl/|g' dependencies.sh && \ bash dependencies.sh -y ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \ echo $TZ > /etc/timezone RUN rm -rf /tmp/* /var/tmp/* CMD ["bash"]x64平台下build arm64的镜像
vim/etc/docker/daemon.json## 写入{"features":{"containerd-snapshotter":true}}## 重启dockersystemctl restartdockerdockerrun--rm--privilegedmultiarch/qemu-user-static--reset-pyesdockersystemdf-vdockerbuild--platformlinux/arm64-tquay.io/ascend/vllm-ascend:v0.18.0-a3-screen--outputtype=docker,dest=/home/cc/vllm-ascend_v0.18.0-a3-screen.tar.dockerbuilder prune-af6. docker compose常用命令
从 Docker Compose v2 开始,官方将 docker-compose 命令改为了 docker compose(无横杠),以更好地与 Docker CLI 集成,并遵循 Docker 的命名规范。
| 功能 | 命令 |
|---|---|
| 版本检查 | docker compose version |
| 启动服务 | docker compose up前台运行(默认附加到终端) / docker compose up -d后台运行(detached 模式) |
| 停止服务 | docker compose stop |
| 重启服务 | docker compose restart |
| 列出 Compose 使用的镜像 | docker compose images |
| 查看运行状态 | docker compose ps |
| 查看日志 | docker compose logs |
| 构建镜像 | docker compose build |
| 创建新容器运行一次性命令 | docker compose run [service] [cmd] |
| 拉取镜像 | docker compose pull |
| 执行命令 | docker compose exec [service] [cmd] |
| 检查配置 | docker compose config |
| 复制文件/文件夹(容器 → 本地) | docker compose cp [service]:[path] [local_path] |
| 复制文件/文件夹(本地 → 容器) | docker compose cp [local_path] [service]:[path] |
| 停止并移出所有容器和网络 | docker compose down |
| 停止并移出所有容器、网络和匿名卷 | docker compose down -v |
| 停止并移出所有容器、网络、匿名卷和所有镜像 | docker compose down --rmi all |