DOC 在 CentOS 上安装 Docker 引擎

########## 注意:安装的时候一定按照官方的安装方式,别用yum install docker,不然会坑死你 ##########
sudo systemctl start docker    # 启动 Docker
sudo systemctl stop docker
systemctl enable docker     # 开启自启动
​
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
​
docker-compose up 
docker volume prune     #清理所有无用数据卷
docker image rm 
docker rmi -f 54fcd8fd38cc  # 删除多个
#删除名称或标签为none的镜像
docker rmi -f `docker images | grep '<none>' | awk '{print $3}'`
docker rmi -f `docker images | grep 'laradock' | awk '{print $3}'`
docker rmi $(docker images | grep "none" | awk '{print $3}')
#清理所有悬挂(<none>)镜像:
docker image prune or docker rmi $(docker images -qf "dangling=true")   
​
docker rm `docker ps -a | grep Exited | awk '{print $1}'`   #删除异常停止的docker容器
docker image prune -f -a #删除所有不使用的镜像
docker container prune  #清理所有停止运行的容器
docker volume prune  #清理没有被占用的数据卷
​
​
##### 容器
docker rm `docker ps -a | grep scrapinghub/splash | awk '{print $1}'`
​
docker rm `docker ps -a | awk '{print $1}'`
​
docker ps -a | grep splash-haproxy:latest | awk '{print $1}' | xargs docker stop # xargs 将前面管道输出的字符串作为命令行参数

docker debug 故障排查

Docker 守护进程的配置和故障排除

docker info  ## 检查 Docker 是否正在运行
journalctl -xe # 查看docker 服务器日志
docker logs -f 0edef2bdd398 -n 10
docker stats  # 查看容器负载
​
docker inspect NAME|ID   # 获取容器/镜像的元数据
​
### 查看 Docker 守护进程日志
### Docker 守护进程的配置和故障排除
### 
​
​
​

dev

# docker 容器连接本机mysql
docker.for.mac.localhost:3306

docker swarm

DOC docker-machine

docker-machine ip MACHINE_VM # 获取Docker主机的IP地址
docker system info #查找消息,确保启用了Swarm
​
# 1、初始化
docker swarm init
docker swarm init --advertise-addr <MANAGER-IP> # docker swarm init --advertise-addr 45.136.130.166
# 2、加入节点
docker swarm join
docker node ls
docker-machine create --driver virtualbox myvm1 #创建虚拟机
docker-machine create --engine-registry-mirror=https://6ozq6866.mirror.aliyuncs.com -d virtualbox default # 阿里镜像加速
docker swarm join-token manager     #获取 manager节点 的token
docker swarm join-token worker      #获取 worker节点 的token
docker-machine ssh <machine-name> #与VM通信中
docker-machine env <machine> #该命令将当前shell配置为与VM上的Docker守护程序通信(它允许您使用本地docker-compose.yml文件“远程”部署应用程序,而无需将其复制到任何位置)
eval $(minikube docker-env)     #要在Mac / Linux主机上使用Docker守护程序
​
# 3、服务
docker service create
docker service create -p 80:80 --name web nginx:latest  # 创造服务
docker service ls
​
# 查看日志
docker service logs xxx -t -f --tail=10
docker service logs xxx -t --tail=10
docker service logs xxx -t --since "2023-02-24T00:38:00"
​
docker service inspect redis # 服务详情
docker service inspect --pretty <SERVICE-ID> # 以易于阅读的格式显示有关服务的详细信息
docker service ps <SERVICE-ID>  #以查看哪些节点正在运行服务
---
docker stack deploy -c docker-compose.yml --with-registry-auth stackname
docker stack ls #查看服务
docker stack down stackname #移除服务
---
docker service rm SERVICE # docker service rm redis 
docker service scale
docker service scale web=15  #扩展服务
docker service scale web=10  #缩小规模
​
------ 滚动更新image
docker service update --image hkccr.ccs.tencentyun.com/globalso/transapis:v2021120822 --with-registry-auth servicename
​
docker system prune -a -f  # 清理旧容器及不用的镜像
​
----------  docker-machine ----------
​
 

docker-compose

docker-compose up -d    # 在后台运行服务
docker-compose ps   # 查看当前正在运行的内容
docker-compose --help
docker-compose logs -f -t --tail=10    # 查看日志

docker-compose 的4中错误方式

  • 问题1:使用主机网络, docker run 启动容器,推荐用docker-compose up -d 启动,会生成一个独立网络。

  • 问题2:强端口绑定到 0.0.0.0 上,例如:-8080:8080;推荐用127.0.0.1:8080:8080

日志文件太大

解决 Docker 日志文件太大的问题 官网Configure logging drivers Docker修改daemon.json后无法启动的问题

#全局配置 创建或修改文件 /etc/docker/daemon.json,并增加以下配置
vi /etc/docker/daemon.json
​
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "1" 
  }
}
​
# 随后重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker
​

如果您的 Docker 版本是 23,而且您发现 /var/lib/docker/overlay2 目录占用了太多空间,以下是一些可能有用的步骤:

  1. 清理无用的镜像和容器

运行以下命令来列出所有已停止的容器:

docker ps -a | grep Exited | awk '{print $1}'

运行以下命令来删除所有已停止的容器:

docker ps -a | grep Exited | awk '{print $1}' | xargs docker rm

运行以下命令来列出所有未使用的镜像:

docker images | grep "<none>" | awk '{print $3}'

运行以下命令来删除所有未使用的镜像:

docker images | grep "<none>" | awk '{print $3}' | xargs docker rmi
  1. 清理 Docker 系统日志

Docker 会在 /var/lib/docker/overlay2 目录中存储日志文件,如果这些日志文件变得很大,您可以通过清理它们来释放空间。

运行以下命令来清理 Docker 系统日志:

sudo journalctl --vacuum-size=1G

这将删除超过 1GB 的 Docker 日志文件。

  1. 清理 Docker 缓存

Docker 会在 /var/lib/docker/overlay2 目录中存储缓存文件,您可以通过清理这些缓存文件来释放空间。

运行以下命令来清理 Docker 缓存:

docker system prune -a

这将删除所有未被使用的缓存文件和镜像。

  1. 使用 Docker 数据卷

如果您有大量的数据需要存储在 Docker 中,建议使用 Docker 数据卷来将数据存储在主机文件系统中,而不是存储在容器中。

运行以下命令来创建 Docker 数据卷:

docker volume create mydata

然后,您可以在运行容器时将数据卷挂载到容器中:

docker run -v mydata:/data myimage

这将把数据卷挂载到容器中的 /data 目录中。

希望这些方法能够帮助您清理 /var/lib/docker/overlay2 目录并释放空间。

Jenkins

在Jenkins中执行docker