Docker配置
- 配置文件:
/etc/docker/daemon.json - 私有镜像仓库地址配置:
{ "insecure-registries": ["172.16.160.33:9000"] } - docker镜像和容器等工作文件所在目录:
/var/lib/docker/ - 更改数据目录(也可以使用软连接指向
/var/lib/docker):{ "data-root": "/data/docker" }
重载进程或docker使配置立即生效:
systemctl daemon-reload
systemctl restart docker.service
环境变量
docker run -d --env-file ./env.list your_image_name
version: '3'
services:
your_service:
image: your_image_name
env_file:
- ./env.list
日志配置
容器默认使用 json-file 日志驱动,其日志文件(如 37cf0f6b...-json.log)无自动轮转策略,很可能导致磁盘存储空间爆炸。
- 如果已有容器内,已经有庞大的日志文件,可先删除。重启后会新建日志文件。然后限定日志大小。
du -sh /var/lib/docker/containers/*/*-json.log
rm -rf /var/lib/docker/containers/37cf0f6b2bd911feba7a99be9f8082e968e3573830459ca17d529ef1ed687757/37cf0f6b2bd911feba7a99be9f8082e968e3573830459ca17d529ef1ed687757-json.log
- 针对所有容器:修改配置文件
/etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
重启容器服务,使配置生效:
systemctl daemon-reload
systemctl restart docker
- 针对单个运行容器
docker run -d \
--log-driver=json-file \
--log-opt max-size=100m \
--log-opt max-file=3 \
gitlab/gitlab-ee:latest
- 针对
docker compose的yaml文件
version: '3.6'
services:
gitlab:
image: gitlab/gitlab-ce:17.6.2-ce.0
container_name: gitlab
restart: always
hostname: 'gitlab.example.com'
# 指定GitLab容器的日志驱动为json-file,并限制单个日志文件最大100MB,最多保留3个文件。
logging:
driver: json-file
options:
max-size: 100m
max-file: 3
environment:
# ... 以下其他配置保持不变 ...
镜像仓库
- registry.md: Docker镜像仓库的使用
- 中科大镜像站:https://mirrors.ustc.edu.cn/
常用命令
系统服务命令
- 重载
systemctl daemon-reload - 重启
systemctl restart docker - 开机启动
systemctl enable docker - 停止服务
systemctl stop docker
Docker管理命令
- Docker系统管理
# 查看网络列表
docker network ls
# 查看数据卷列表
docker volume ls
# 查看Docker磁盘使用情况
docker system df
# 删除所有(本地)没有被容器使用的volume. 常用
docker volume prune
# 命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。
docker system prune
- 镜像管理
# 查看本地所有镜像:
docker images
# 拉取下载远程镜像到本地
docker pull mysql:5.7
docker pull nginx
# 根据ID查看镜像详情
docker inspect imageId
# 根据关键词,从远程仓库查找镜像
docker search keywords
# 镜像删除。可以用镜像标签或镜像ID。
# 当image有多个tag标签时,此命令只删除指定tag镜像标签,不会删除其他镜像tag。而当只有一个tag标签时,使用docker rmi 会彻底删除该镜像,包括该镜像的所有的AUFS层文件。
docker rmi centos:prod
# 删除所有镜像:
docker rmi $(docker images -q -a)
- 容器实例管理
# 显示状态为运行(Up)的容器
docker ps
# 显示所有容器,包括运行中(Up)的和退出的(Exited)
docker ps -a
# 创建并启动一个容器
docker run
# 停止容器运行
docker stop
# 启动已停止的容器
docker start
# 重启容器
docker restart
# 删除已停止的容器
docker rm