centos-7.5docker-swarm安装及使用
基础配置Centos7系统,关闭防火墙、selinux
systemctl stop firewalld.service && systemctl disable firewalld.service
rpm -ivh pigz-2.3.3-1.el7.centos.x86_64.rpm
rpm -ivh container-selinux-2.55-1.el7.noarch.rpm
rpm -ivh libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm
rpm -ivh docker-ce-18.03.0.ce-1.el7.centos.x86_64.rpm
systemctl start docker.service 启动docker
systemctl enable docker.service 设置开机自启
systemctl enable docker.service && systemctl start docker.service
docker info 查看安装版本信息
docker info |grep 'Docker Root Dir' 查看docker默认存储路径
mkdir /data/docker 新建存储路径
vim /etc/docker/daemon.json 定义新存储位置
{
"graph": "/data/docker"
}
systemctl daemon-reload
systemctl restart docker 目录修改完成
拷贝centos7.tar镜像包到/opt/
docker load < centos7.tar
docker images 查看镜像
docker rmi image 删除镜像(镜像名)
docker rmi -f image 删除镜像(镜像id)
docker stop 容器名 (停止)
docker rm 容器名 (删除)
vim Dockerfile 写dockerfile
docker tag e934aafc2206 centos:server 为镜像改名标签
docker image rm centos:latest
docker build -t nginx:server . 生成镜像 Nginx自定义server标签名
docker run -d -p 81:8080 nginx:server
启动镜像 81暴露端口号8080dockerfile定义端口号 镜像名:标签
docker ps 查看运行容器 -a所有
docker exec -it reverent_murdock /bin/bash 进入容器 reverent_murdock容器名
exit 退出
docker logs 镜像名 –f 查看容器日志
docker save 镜像ID > centos.tar 打包镜像
docer load < 打包镜像.tar
docker history ee1acd0c2bc0 --no-trunc 镜像构建过程
docker network create yzys docker创建单机网络
docker network create -d overlay yzys docker创建集群网络
docker stack deploy -c ywjgpt.yml ywjgpt_web
docker stack rm ywjg_web
docker service logs -f ywjgpt_web
docker-swarm 起服务
docker swarm init 启动集群swarm服务
将工作节点加入docker集群 在每个节点执行
Docker swarm join --token SWMTKN-1-3jszgab1gx8pcole9zgtrrqyjjq8bizxixnqj1fo6hv8bllpia-7qhik8jc0096x6974teptt65j 192.168.44.54:2377
查看集群信息
Docker node ls
4. Docker Stack常用命令
Docker stack ls 列出现有堆栈
Docker stack ps 列出堆栈中任务
Docker stack rm 删除一个或多个任务
Docker stack services 列出堆栈中的服务
Docker stack deploy 部署新的堆栈
双主节点设置
docker swarm join
docker swarm join-token manager
docker swarm join --token SWMTKN-1-4h38kxard79ujmelkie1z7pw7xx30s3pgtjnxafm1ltn46imdg-eiksx7lqydqvt3m7n8jc45n2y 192.168.31.230:2377
批量删除Docker中已经停止的容器
#显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID,
docker ps -a|grep Exited|awk '{print $1}'
#查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器
docker rm `docker ps -a|grep Exited|awk '{print $1}'`
docker swarm 问题:"Error response from daemon: context deadline exceeded"
worker 节点无法强制退出 docker swarm 集群
# docker swarm leave --force
Error response from daemon: context deadline exceeded
systemctl stop docker.service
rm -rf /var/lib/docker/swarm
systemctl start docker.service
docker swarm leave -f
一、 docker swarm初始化 新增
docker swarm init
docker swarm 增加master节点
docker swarm join-token manager
docker swarm 增加worker节点
docker swarm join-token worker
将打印出的命令语句在新节点上执行即可
二、查看集群节点
docker node ls
MANAGER STATUS列
Leader : master 节点
Reachable:可替代master
空: worker节点
Reachable: 不能与其他管理器通信的管理器通信,不能替代master
三、docker swarm删除、降级节点
降级
docker node demote 节点id 降级为worker节点
删除
docker swarm leave (要删除的节点上执行)
停用,该节点上的容器会迁移到其他节点
docker node update --availability drain 节点id
删除节点前,需先停该节点的docker服务
systemctl stop docker.service
docker node rm 节点id
docker的存储目录迁移
docker的默认存储目录是/var/lib/docker
查看docker自身的内存占用:docker system df
docker system prune
命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。
docker system prune -a
将没有容器使用Docker更加彻底镜像都删掉(慎用)
迁移/var/lib/docker
目录
停止docker服务
systemctl stop docker
创建新的docker目录,执行命令df -h,找一个大的磁盘。 我在 /sysinfo目录下面建了/sysinfo/docker/lib/docker目录
(rsync是linux文件夹同步的命令,参数要加一个-r,因为文件夹要递归copy,如果在同一台服务器上面,直接cp也是可以的)
rsync -r -avz /var/lib/docker
/sysinfo/docker/lib/
配置 /etc/systemd/system/docker.service.d/devicemapper.conf
。查看 devicemapper.conf
是否存在。如果不存在,就新建。
mkdir -p /etc/systemd/system/docker.service.d/
vim /etc/systemd/system/docker.service.d/devicemapper.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/cpdata/docker/lib/docker

重新加载 docker
systemctl daemon-reload
systemctl restart docker
systemctl status docker
重新验证
docker info
检查Docker 的根目录.它将被更改为 /cpdata/docker/lib/docker
确定容器没问题后删除/var/lib/docker/
目录中的文件。
迁移/var/lib/docker
目录后,Docker无法启动 (error initializing graphdriver: driver not supported)
启动信息
[root@nn0 ~]# systemctl start docker
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
启动详情
8月 31 01:47:25 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
-- Subject: Unit docker.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit docker.service has begun starting up.
8月 31 01:47:25 localhost.localdomain dockerd[2390]: time="2018-08-31T01:47:25.197015872+08:00" level=info msg="libcontainerd: new containerd process, pid: 2393"
8月 31 01:47:26 localhost.localdomain dockerd[2390]: time="2018-08-31T01:47:26.204103195+08:00" level=error msg="[graphdriver] prior storage driver overlay2 failed: driver not supported"
8月 31 01:47:26 localhost.localdomain dockerd[2390]: Error starting daemon: error initializing graphdriver: driver not supported
8月 31 01:47:26 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
8月 31 01:47:26 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
错误原因:error initializing graphdriver: driver not supported
解决办法:在 /etc/docker
目录下创建daemon.json文件,并且加入以下配置
touch daemon.json
vi daemon.json
{
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
再次启动:systemctl start docker
7. docker-runc not installed on system 问题
问题描述
docker运行镜像的时候,报错如下:
(如果报错端口映射的错误,那就先不映射端口直接启动镜像,试一下是不是这个错误,因为如果直接映射端口启动镜像的话,这个错误导致容器启动失败,但是报错是端口映射失败)
[root@nn0 k8s]# docker run -it registry.helloworld.com/test/atsd:latest bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
/usr/bin/docker-current: Error response from daemon: shim error: docker-runc not installed on system.
问题解决:
[root@nn0 k8s]# cd /usr/libexec/docker/
[root@nn0 docker]# ln -s docker-runc-current docker-runc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了