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.

启动详情

    831 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.
    831 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"
    831 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"
    831 01:47:26 localhost.localdomain dockerd[2390]: Error starting daemon: error initializing graphdriver: driver not supported
    831 01:47:26 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
    831 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
 
posted @   moxunjy  阅读(14)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示