Docker安装
第一步:
移除旧的版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
移除历史镜像和容器等数据,如果之前已经安装了Docker,不移除,再次安装Docker,历史的镜像和容器都还存在,注意!!! 这行指令会删除历史的所有数据,请酌情执行
rm -rf /var/lib/docker
第二步
安装一些必要的系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
第三步:
添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第四步:
更新 yum 缓存
sudo yum makecache fast
第五步:
安装 最新的Docker-ce
sudo yum -y install docker-ce
安装指定版本
sudo yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
第六步:
启动 Docker 后台服务
sudo systemctl start docker
// 设置开机自启
sudo systemctl enable docker
其他指令(可以不执行的指令)
// 停止
sudo systemctl stop docker
// 重启
sudo systemctl restart docker
// 查看状态
sudo systemctl status docker
// 设置开机自启
sudo systemctl enable docker
// 取消开机自启
sudo systemctl disable docker
// 查看是否已经配置开机自启
sudo systemctl is-enabled docker
Docker基础操作
Docker服务操作
启动docker
sudo systemctl start docker
停止docker
sudo systemctl stop docker
重启docker
sudo systemctl restart docker
Docker配置国内镜像源
vi /etc/docker/daemon.json
添加以下配置
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
Docker镜像操作
查看镜像
sudo docker images
拉取镜像
docker pull 镜像名称:版本号 如:
sudo docker pull redis:5.0.4
删除镜像
sudo docker rmi 镜像ID
运行镜像
sudo docker run --name test -p 80:80 -p 8081:8081 -v /data/log:/data/log --restart=always -d test:1.0.0
镜像打标签
sudo docker tag 基础镜像:版本 镜像地址(默认docker仓库)/路径/镜像名称:版本 如:
sudo docker tag redis:5.0.4 hub.c.163.com/test/redis:5.0.4
推送镜像
sudo docker push hub.c.163.com/test/redis:5.0.4
Docker容器操作
查看容器运行情况
sudo docker ps
查看所有的容器运行情况
sudo docker ps -a
查询特定的容器
sudo docker ps|grep redis
停止容器
sudo docker stop 容器id
重启容器
sudo docker restart 容器id
启动容器
sudo docker start 容器id
删除容器
sudo docker rm 容器id
查看容器运行的日志
sudo docker logs -f 容器ID
进入容器
sudo docker exec -it 容器ID /bin/bash
使用exit退出
执行容器内的脚本
以Nginx检查配置文件是否正确测试
sudo docker exec 容器ID /usr/sbin/nginx -s reload
Docker-compose安装
![1621992820777243.png 1.png]()
方式二
//依赖python 可能受python版本的影响导致安装失败
yum install epel-release
yum install -y python-pip
pip install docker-compose
基础命令
#启动容器,如果镜像不存在则先下载镜像,如果容器没创建则创建容器,如果容器没启动则启动
docker-compose up -d
#停止并移除容器
docker-compose down
#重启服务
docker-compose restart
异常情况
Could not find a version that satisfies the requirement requests<3,>=2.20.0 (from docker-compose) (from versions: )
No matching distribution found for requests<3,>=2.20.0 (from docker-compose)
You are using pip version 8.1.2, however version 19.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
![1621992936362713.png 1.png]()
容器日志管理
容器的日志查看
sudo docker logs -f 容器ID
容器日志保存的位置
/var/lib/docker/containers/
以上路径下保存了当前容器的各种资源及配置,让容器被删除的时候,这里对应的文件夹也会被删除
以下红色部分即为容器运行时的日志
![1621993068616200.png 2.png]()
带来的问题
当容器不删除重启的时候,这里的日志文件将会变得越来越大,占用了大量的内存资源;而实际的情况下,以SpringBoot项目为例,我们都会在项目里面定义自己的日志策略,因此容器运行时记录的运行日志实际上是一份多余的日志;既然是日志,必定就会占用IO,IO又是一个比较耗时的操作,而且文件越大,操作的性能就会下降。既然没啥用,那我们何不关掉它。
关闭容器运行日志
配置daemon.json
vim /etc/docker/daemon.json
#添加以下配置
"log-driver":"none"
![1621993123263303.png 1.png]()
#重启dockerservice docker restart
移除并重新运行镜像,再来查看容器日志,发现*-json.log已经没有了
个人的建议是,测试环境是可以开启这个容器日志,如果镜像测试一旦稳定,推到生产的时候,出于性能考虑(因为这部分日志没有太大的价值),所以可以直接关闭掉;
限制容器运行日志大小
定时任务清空日志
不太建议使用这种方式,虽然可以解决问题,但是我认为不是一个最好的方法
创建清除日志的脚本
vim /etc/docker/clean_docker_container_logs.sh
#!/bin/sh
echo "======== start clean docker containers logs ========"
#查找/var/lib/docker/containers/路径下以-json.log结尾的文件
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
#将对应文件的内容置为null
cat /dev/null > $log
# 或者
# echo "">$log
done
echo "======== end clean docker containers logs ========"
然后在crontab设置定时任务执行
#5分钟执行一次
*/5 * * * * sh /etc/docker/clean_docker_container_logs.sh