Docker镜像基础操作
Docker镜像操作命令
登陆镜像仓库
docker login docker.hub -u <user> (回车输入密码)
拉取
docker pull docker.hub/库名/镜像名:tag
导出
docker save -o rustdesk-server-latest.tar rustdesk/rustdesk-server:latest
导入
docker load < rustdesk-server-latest.tar
上传
docker push docker.hub/库名/images:tag
快速关闭所有运行的容器
for i in $(docker ps | awk 'NR>1 {print $1}'); do docker stop $i;done && docker ps
快速关闭并删除所有本地容器
for i in $(docker ps -a | awk 'NR>1 {print $1}'); do docker stop $i && docker rm $i;done && docker ps -a
快速删除所有本地镜像
for i in $(docker images | awk 'NR>1 {print $3}'); do docker rmi -f $i;done && docker images
快速进入指定的容器中
docker exec -it $(docker ps -a |grep nginx ) /bin/bash
清除登陆用户名密码记录
docker logout && rm -f ~/.docker/config.json
解决docker网络冲突
创建容器时,使用已存在的网络
docker run
直接指定网络名称 在运行容器时,通过
--network
参数直接指定已存在的网络名称即可。例如:docker run -d --name my-container --network existing_network my-image
验证网络连接 通过
docker network inspect existing_network
可查看容器是否已加入该网络。若容器已存在,也可通过docker network connect
动态连接:docker network connect existing_network my-container
dockerfile
Dockerfile 本身不直接管理网络配置,但可通过以下方式间接实现:
在 Dockerfile 中定义默认网络参数(可选) 虽然无法在 Dockerfile 中直接绑定网络,但可通过环境变量或脚本预设网络名称,例如:
ENV NETWORK_NAME=existing_network
后续在
docker run
时通过--network $NETWORK_NAME
调用。构建镜像后运行时指定网络 实际运行时仍需依赖
docker run
的--network
参数,例如:docker build -t my-image . docker run -d --network existing_network my-image
docker compose
声明外部网络 在
docker-compose.yml
中,通过external: true
引用已存在的网络:services: my-service: image: my-image networks: - existing_network networks: existing_network: external: true name: existing_network # 显式指定名称(可选)
多项目共享网络 若需跨多个 Compose 项目共享同一网络,需先手动创建网络:
docker network create --driver bridge existing_network
然后在各项目的 Compose 文件中均声明
external: true
。
注意:
确保 Compose 文件中指定的网络驱动(如
bridge
、overlay
)与已存在网络一致同一网络内的容器可通过服务名称(Compose 服务名或容器名)直接通信,无需依赖 IP 地址。
License:
CC BY 4.0