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.io | DaoCloud | 你提到的,稳定 |
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 \
nginxVolume完整操作命令
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