CentOS安装Docker
- 卸载旧版本docker
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
- 设置docker资源库(yum工具包yum-utils中包含yum-config-manager):
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
如果出现网络错误"Could not fetch/save url …",可以使用阿里云的源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum仓库管理yum-config-manager - 安装docker:
sudo yum install docker-ce
- 启动docker:
sudo systemctl start docker
- 运行docker容器验证是否安装成功:
sudo docker run hello-world
- 更多操作系统可参考官方文档
docker国内镜像
- 可用镜像源
- Daocloud 镜像:https://docker.m.daocloud.io
- 不可用镜像源
- Docker中国区官方镜像 https://registry.docker-cn.com
- 网易 http://hub-mirror.c.163.com
- 中国科学技术大学 https://docker.mirrors.ustc.edu.cn
docker的存储目录迁移
- 停止docker服务:
systemctl stop docker
- 创建新的docker目录,执行命令
df -h
,找一个大的磁盘:
mkdir -p /home/lib/docker
- 迁移 /var/lib/docker 目录下面的文件到 /home/lib/docker:
cp -r /var/lib/docker /home/lib/docker
- 编辑daemon.json文件(若没有该文件新建一个即可), 添加data-root配置
vim /etc/docker/daemon.json
{
"data-root": "/home/lib/docker",
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://registry.hub.docker.com"
],
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"}
}
- 重启docker:
systemctl start docker
. - 通过
docker info
命令查看 Docker Root Dir 是否已更改,检查原有容器是否已正常启动.
docker info
docker ps -a
- 确定容器没问题后删除/var/lib/docker/目录.
docker-compose安装
- 插件式安装:
sudo yum install docker-compose-plugin
实际上 docker-compose-plugin 作为 docker-ce 的依赖一起安装了
- 查询是否安装成功:
docker compose version
容器日志管理
- 查看docker某个容器日志:
docker logs -f 容器名称
在 Docker 引擎 20.10 之前,docker logs
命令只能与使用local
、json-file
或journald
日志驱动的容器一起使用。点击查看官方说明
如下日志驱动是syslog
、centos7系统,日志在/var/log/messages
nginx:
image: nginx:stable-alpine
restart: always
logging:
driver: syslog
options: { tag: yourtag }
- 设置单个容器日志大小
支持设置max-file的日志驱动有:local、json-file
nginx:
image: nginx:stable-alpine
restart: always
logging:
driver: "json-file"
options:
max-size: "5g"
max-file: "3"
- 全局配置容器日志大小
在/etc/docker/daemon.json
添加log-dirver
和log-opts
参数。
重启docker服务后生效systemctl restart docker
,且仅对新建的容器有效
{
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"}
}
- 清理容器日志
如下脚本会清空所有容器日志,腾出磁盘空间,如有重要日志需要先进行备份。
#!/bin/sh
for container in $(docker ps -q); do
echo "Cleaning logs for container: $container"
logs=$(docker inspect --format='{{.LogPath}}' $container)
if [ -f $logs ]; then
ls -lh $logs
cat /dev/null > $logs
fi
done
docker常用命令
- 登录镜像仓库
echo $Secret | docker login -u $Username $ServerURL --password-stdin
$SERVER 为仓库地址,比如:https://index.docker.io/v1/ - 标记本地镜像,将其归入某一仓库
docker tag alpine:3.18.0 swr.cn-south-1.myhuaweicloud.com/namespace/alpine:3.18.0
- 显示容器资源的使用情况
docker stats
- 查看容器中运行的进程信息,支持
ps
命令参数
docker top 容器名
,例如:
docker top kafka-1 -o user,pid,ppid,pgid,etime,time,stat,comm
题外话:在Alpine容器中,ps
命令仅支持-o
,-T
选项,其中-o
选项支持的参数user,group,comm,args,pid,ppid,pgid,etime,nice,rgroup,ruser,time,tty,vsz,sid,stat,rss
- 清理没有使用的数据,包括镜像数据,已经停止的容器
docker system prune
- Docker整体磁盘使用率
docker system df
- Docker镜像导入导出
export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出
- save load
导出:docker save -o nginx.tar nginx:latest
导入:docker load -i nginx.tar
- export import
导出:docker export -o nginx-test.tar nginx-test
导入:docker import nginx-test.tar nginx:imp
- save load