Docker 命令
build 默认集成 buildx 特性 --- buildx 创建支持跨架构的构建器 如果你想在本地直接运行这个镜像,请加 --load 参数重新构建: 运行时会自动拉取这个镜像:moby/buil…
build
默认集成 buildx 特性
1docker build --load --platform linux/amd64 -t intelligence-ai:1.0.0 .
buildx
创建支持跨架构的构建器
1docker buildx create --name mybuilder --use
如果你想在本地直接运行这个镜像,请加 –load 参数重新构建:
运行时会自动拉取这个镜像:moby/buildkit:buildx-stable-1
1docker buildx build --platform linux/amd64 -t intelligence-ai:1.0.0 . --load
如果出现网络问题可用以下命令替代:
注意: 从 Docker 23.0 开始,BuildKit 就已经成为默认选项了
1DOCKER_BUILDKIT=1 docker build --platform linux/amd64 -t hr-ai:1.0.0 . --load
2
3或在环境变量中启用:
4export DOCKER_BUILDKIT=1
5docker build -t hr-ai .
运行这个镜像:
1docker run -it --rm -p 9101:9101 intelligence-ai:1.0.0
注意 127.0.0.1 是容器内部自身 ip 无法连接到宿主机的本地服务。
导出这个镜像:
1docker tag intelligence-ai:1.0.0 intelligence-ai:1.1.5
2docker save -o ~/Downloads/intelligence-ai-1.1.5.tar intelligence-ai:1.1.5
操作命令
容器
1docker ps # 列出正在运行的容器
2docker ps -a # 列出所有容器(包括停止的)
3docker rename <old_container_name> <new_container_name> # 重命名容器
4docker run <options> <image_name> # 运行新容器 [-rm 退出后自动删除]
5docker run -d <image_name> # 以后台模式运行容器
6docker run -it <image_name> # 交互模式运行容器
7docker start <container_id_or_name> # 启动已停止的容器
8docker stop <container_id_or_name> # 停止正在运行的容器
9docker kill <container_id_or_name> # 强制停止容器
10docker restart <container_id_or_name> # 重启容器
11docker rm <container_id_or_name> # 删除指定容器 [-f 强制]
12docker exec -it <container_id_or_name> bash # 进入正在运行的容器(或 /bin/bash)
13docker logs <container_id_or_name> # 查看指定容器的日志
14docker inspect <container_id_or_name> # 查看容器的详细信息
15docker port <container_id_or_name> # 查看容器暴露的端口(正在运行的)
16
17docker cp <container_id_or_name>:<src_path> <dest_path> # 从容器拷贝文件到主机
18docker cp <src_path> <container_id_or_name>:<dest_path> # 将主机拷贝文件到容器
19docker pause <container_id_or_name> # 暂停正在运行的容器
20docker unpause <container_id_or_name> # 恢复暂停的容器
21docker diff <container_id_or_name> # 查看容器文件系统中相对于镜像的更改
22docker export <container_id_or_name> -o <file> # 导出容器文件系统为 tar 文件
23docker top <container_id_or_name> # 显示容器内的进程
24docker create <options> <image_name> # 创建但不启动一个新的容器
25docker commit <container_id_or_name> <new_image_name> # 提交容器的更改并保存为新镜像
镜像
1docker images # 列出所有镜像
2docker images --digests # 列出所有镜像(附带唯一标识)
3docker pull <image_name> # 拉取指定镜像(hello-world 测试镜像)
4docker pull <image_name>@sha256:7655a4841da9 # 使用 Digest 拉取镜像
5docker rmi <image_id_or_name> # 删除指定镜像
6docker save <image_name> -o <file_name> # 保存镜像到文件
7docker load -i <file_name> # 从 tar 文件加载镜像
8docker build -t <image_name> <path> # 根据 Dockerfile 构建镜像
9docker push <image_name> # 推送镜像到仓库
10docker history <image_name> # 查看镜像的构建历史
11docker import <file> <new_image_name> # 从 tar 文件导入为镜像
12docker tag <image_name> <new_image_name> # 复制此镜像并打标签
13docker search <image_name> # 在 Docker Hub 上搜索镜像
构建器
1docker buildx ls # 查看构建器列表
2docker buildx create --name mybuilder --use # 创建构建器
3docker buildx use mybuilder # 切换构建器
4docker buildx stop mybuilder # 停止构建器容器
5docker buildx rm mybuilder # 删除构建器
6docker buildx inspect mybuilder # 检查构建器状态
卷
1docker volume ls # 列出所有卷
2docker volume create <volume_name> # 创建卷
3docker volume inspect <volume_name> # 查看卷的详细信息
4docker volume rm <volume_name> # 删除卷
网络
1docker network ls # 列出所有网络
2docker network create <network_name> # 创建自定义网络
3docker network inspect <network_name> # 查看网络的详细信息
4docker network rm <network_name> # 删除自定义网络
5docker network connect <network_name> <container_name> # 将容器连接到网络
6docker network disconnect <network_name> <container_name> # 将容器从网络中断开
资源管理
1docker info # 查看镜像源信息
2docker system df -v # 查看容器镜像占用空间
3docker stats # 查看 Docker 进程的实时统计信息
4docker update <container_id_or_name> <options> # 更新容器的资源限制(CPU、内存)
5docker system info # 显示 Docker 系统的低级信息
6docker system prune # 清理未使用的容器、镜像和网络
7docker container prune # 删除所有停止的容器
8docker image prune # 删除未使用的镜像
9docker volume prune # 删除所有未使用的卷
10docker network prune # 删除所有未使用的网络
11docker events # 实时显示 Docker 的事件流(如容器启动、停止等)
身份验证
1docker login # 登录 Docker Hub 仓库
2docker logout # 登出 Docker Hub 仓库
compose 命令用法
1docker-compose --version # 查看 Docker Compose 版本
2docker-compose ls
3docker-compose start # 启动已存在的服务容器
4docker-compose up # 启动服务(根据 docker-compose.yml 文件)
5docker-compose up -d # 以后台模式启动服务
6docker-compose up --build # 构建镜像并启动服务
7docker-compose down # 停止并删除服务(容器和网络)
8docker-compose stop # 停止服务,但不删除容器
9docker-compose rm # 删除已停止的服务容器
10docker-compose rm -f # 强制删除已停止的服务容器,不提示确认
11docker-compose rm -s # 删除已停止的服务容器及其关联的网络
12docker-compose restart # 重启服务
13docker-compose logs # 查看服务日志
14docker-compose logs -f # 实时查看服务日志
15docker-compose ps # 列出运行中的服务
16docker-compose exec <service_name> <command> # 在指定服务中执行命令
17docker-compose run <service_name> <command> # 运行一次性的命令(并启动新容器)
18docker-compose pull # 拉取服务的最新镜像
19docker-compose push # 推送服务的镜像到远程仓库
20docker-compose config # 验证并显示配置文件内容
21docker-compose scale <service_name>=<num> # 扩展指定服务的实例数量
22docker-compose exec <service_name> <command> # 在指定服务的容器中执行命令
23docker-compose exec -it <service_name> /bin/bash # 以交互模式进入指定服务的容器
多平台构建打包
1docker build --platform linux/amd64 -t intelligence-ai:1.1.26 . --load
创建并切换到 buildx 的 docker-container 驱动
docker-container 驱动支持多平台构建,且基于容器的构建环境,可以模拟不同架构。
- 创建一个新的 builder(构建器)实例
1docker buildx create --name mybuilder --driver docker-container --use
该命令创建并切换到名为 mybuilder 的 builder,使用 docker-container 驱动。
- 初始化 builder
1docker buildx inspect --bootstrap
- 重新执行多平台构建命令
1docker buildx build --platform linux/amd64,linux/arm64 -t hr-ai:1.0.0 .
删除容器及其挂载的匿名卷
1docker rm -v <容器ID或名称>
手动清理未使用的悬空镜像层
如果在拉取 Docker 镜像的过程中中断了拉取操作,Docker 可能会留下未完成下载的部分数据,这些部分下载的数据会占用磁盘空间,但它们不是完整的镜像文件。
docker image prune: 删除所有悬空(dangling)的镜像层,即那些没有被任何容器使用的层。
docker system prune: 删除所有未使用的镜像、网络、已停止的容器和构建缓存,进一步清理磁盘空间。
docker system prune -a: 如果想彻底清理所有未使用的镜像,可以加上 -a 参数
注意:-a 参数会删除所有未被容器使用的镜像,包括那些你可能想要保留的镜像,所以使用前请确保你不需要这些镜像。
拉取镜像时指定特定的架构
比如在 ARM64 的 Mac 上拉取 AMD64 架构的镜像
- 使用 –platform 标志 Docker 支持使用 –platform 标志来指定你想要拉取的镜像架构。
1docker pull --platform <platform> <image>
2docker pull --platform linux/amd64 langgenius/dify-sandbox:0.2.6@sha256:5d1a83f98ec4b2a5a2183c2427c17811063042299898516a7957ad824f28bdec
- 启用跨平台支持 在某些情况下,可能需要先启用 Docker 的跨平台支持:
1docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- 验证拉取的镜像架构 拉取完成后,你可以使用以下命令来验证镜像的架构:
1docker inspect <image_id> | grep Architecture
检查本地镜像的 Digest
1docker inspect --format='{{index .RepoDigests 0}}' postgres:latest
2
3docker images --digests
将值与 DockerHub 中 Explore / milvusdb/milvus / v2.4.5 (需要点击进入)中的INDEX DIGEST值比对
设置容器开机自动重启
- 可以使用 docker update 命令直接修改正在运行的容器的重启策略。
1docker update --restart always my_container
- 停止容器后重新启动并设置重启策略
1docker stop my_container
2docker rm my_container
3docker run -d --name my_container --restart always my_image
阿里云容器镜像服务推送
- 登录阿里云Docker Registry
1docker login --username=zailiang registry.cn-shanghai.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
- 从Registry中拉取镜像
1$ docker pull registry.cn-shanghai.aliyuncs.com/zailiang/milvus:[镜像版本号]
- 将镜像推送到Registry
1docker login --username=zailiang registry.cn-shanghai.aliyuncs.com
2docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/zailiang/milvus:[镜像版本号]
3docker push registry.cn-shanghai.aliyuncs.com/zailiang/milvus:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
- 选择合适的镜像仓库地址 从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-shanghai.aliyuncs.com 作为Registry的域名登录。
- 示例 使用“docker tag”命令重命名镜像,并将它通过专有网络地址推送至Registry。
1docker images
2REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
3registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
4$ docker tag 37bb9c63c8b2 registry-vpc.cn-shanghai.aliyuncs.com/acs/agent:0.7-dfb6816
查看容器网络类型
docker inspectdocker inspect <container_id> | grep '"NetworkMode"'这个命令将返回一个包含网络模式的输出- 使用
docker network ls命令: 这将显示所有网络,包括bridge、host、none等。
运行容器增加命令
1docker run -d -rm centos ping baidu.com
compose 运行方式
如果你想在后台运行服务,可以将 -d 标志(表示“分离”模式)传递给 docker compose up ,
使用 docker compose ps 查看当前正在运行的内容:
这个 docker compose ps 命令只能在有 docker-compose.yaml 目录下运行
- 切换到项目目录
1cd /root/deploy/dify/docker
2docker compose ps
- 直接指定 docker-compose.yaml 文件路径
1docker compose -f /root/deploy/dify/docker/docker-compose.yaml ps
- 使用 COMPOSE_FILE 环境变量
1export COMPOSE_FILE=/root/deploy/dify/docker/docker-compose.yaml
2docker compose ps
使用 export 命令后,在当前终端会话中,所有后续的 docker compose 命令都会使用这个指定的 docker-compose.yaml 文件。