Skip to content

Docker

配置加速器

bash
# 查看Docker配置文件
sudo cat /etc/docker/daemon.json

# 如果文件存在,输出类似:
# {
#   "registry-mirrors": ["https://docker.m.daocloud.io"]
# }

#配置多个加速器(备用)

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
EOF

# 2. 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker

# 3. 验证是否生效
docker info | grep -A 5 "Registry Mirrors"

常用国内镜像加速器列表

加速器地址提供方特点
https://docker.m.daocloud.ioDaoCloud你提到的,稳定
https://dockerproxy.com社区免费,较稳定
https://docker.nju.edu.cn南京大学教育网快
https://docker.mirrors.ustc.edu.cn中科大教育网快
https://mirror.ccs.tencentyun.com腾讯云需腾讯云账号
https://<ID>.mirror.aliyuncs.com阿里云需注册获取

systemctl(主流Linux)

bash
# 启动Docker服务
sudo systemctl start docker

# 停止Docker服务
sudo systemctl stop docker

# 重启Docker服务(会重启所有容器,慎用)
sudo systemctl restart docker

# 查看Docker服务状态
sudo systemctl status docker

# 开机自启动
sudo systemctl enable docker

# 取消开机自启动
sudo systemctl disable docker

# 重新加载配置(修改daemon.json后使用,不重启服务)
sudo systemctl reload docker

# 查看服务日志
sudo journalctl -u docker -f
sudo journalctl -u docker --since "2026-08-14 10:00:00"

镜像管理(Image)

bash
# 查看本地镜像
docker images
docker image ls

# 搜索远程镜像
docker search nginx

# 拉取镜像
docker pull nginx:latest
docker pull mysql:8.0

# 删除镜像
docker rmi <镜像ID>          # 删除指定镜像
docker rmi $(docker images -q)  # 删除所有镜像

# 构建镜像
docker build -t myapp:v1 .   # -t 指定名称和标签

# 查看镜像历史
docker history nginx:latest

容器管理(Container)- 核心命令

bash
# 创建并启动容器
docker run -d --name mynginx -p 8080:80 nginx
# -d: 后台运行  --name: 容器名  -p: 端口映射

# 查看容器
docker ps                    # 查看运行中的容器
docker ps -a                 # 查看所有容器(含停止的)
docker ps -a -q              # 只显示容器ID

# 启动/停止/重启
docker start mynginx
docker stop mynginx
docker restart mynginx

# 进入容器(交互式)
docker exec -it mynginx /bin/bash   # 进入正在运行的容器
docker run -it ubuntu /bin/bash     # 创建并进入新容器

# 查看日志
docker logs mynginx
docker logs -f mynginx       # 实时跟踪日志
docker logs --tail 100 mynginx  # 查看最后100行

# 删除容器
docker rm mynginx            # 删除指定容器
docker rm -f mynginx         # 强制删除(即使运行中)
docker rm $(docker ps -a -q) # 删除所有已停止的容器

# 容器与宿主机文件拷贝
docker cp /host/file.txt mynginx:/app/
docker cp mynginx:/app/file.txt /host/

数据卷(Volume)

# 1. 绑定挂载(Bind Mount)- 直接挂载宿主机目录
docker run -d \
  --name myapp \
  -v /host/data:/app/data \    # 宿主机路径:容器路径
  nginx

# 2. 卷挂载(Volume)- Docker管理的数据卷(推荐)
docker run -d \
  --name myapp \
  -v myvolume:/app/data \       # 卷名:容器路径
  nginx

# 3. tmpfs挂载(内存中,重启消失)
docker run -d \
  --name myapp \
  --tmpfs /app/temp \
  nginx

Volume完整操作命令

bash
# 创建数据卷
docker volume create myvolume
docker volume create --driver local --opt type=none --opt device=/data --opt o=bind myvolume

# 查看所有卷
docker volume ls
docker volume ls -f dangling=true   # 查看无主卷

# 查看卷详情
docker volume inspect myvolume
# 输出: 卷名称、驱动、挂载点(宿主机实际路径)

# 删除卷
docker volume rm myvolume
docker volume rm $(docker volume ls -q)  # 删除所有卷

# 清理无用的卷(重要)
docker volume prune         # 删除所有未使用的卷
docker volume prune -f      # 强制删除,不提示

# 容器挂载卷时使用
docker run -d \
  --name mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -v mysql_data:/var/lib/mysql \      # 命名卷(自动创建)
  -v /host/backup:/backup \            # 绑定挂载(备份用)
  mysql:8.0

# 查看容器挂载详情
docker inspect myapp | grep -A 5 Mounts
docker inspect -f '{{.Mounts}}' myapp

卷的高级用法

bash
# 共享卷(多个容器挂载同一个卷)
docker run -d --name app1 -v shared_data:/data nginx
docker run -d --name app2 -v shared_data:/data nginx

# 只读挂载
docker run -d --name myapp -v myvolume:/app/data:ro nginx

# 挂载子目录
docker run -d -v myvolume/subdir:/app/data nginx

# 从容器复制卷(数据卷容器,已过时但仍可用)
docker create -v /data --name datacontainer busybox
docker run -d --volumes-from datacontainer --name app nginx

网络管理(Network)

bash
# 查看网络
docker network ls

# 创建网络
docker network create mynet
docker network create --driver bridge --subnet 172.20.0.0/16 mynet

# 连接容器到网络
docker network connect mynet mynginx
docker run -d --network mynet --name app nginx

# 查看网络详情
docker network inspect mynet

# 断开容器网络
docker network disconnect mynet mynginx

# 删除网络
docker network rm mynet