8.docker安装centos7搭建集群

1.应用:单台物理机虚拟化 docker中装多台centos7,再使用centos7进行分布式集群部署

适合于测试环境,单节点使用虚拟分布式,最终实现ssh通信,简言之就是同VMware

 

注意就是ip的问题,当前使用桥接bridge模式,ip映射到宿主机器上时,只能以宿主机器去访问

操作笔记

1.安装
    a.centos7要是64位的,uname -r
    b.移出旧版本
        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
    c.安装一些必要的系统工具:
        sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    d.添加软件源信息:
        sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    e.安装 Docker-ce:(社区版免费)
        sudo yum -y install docker-ce
    f.启动 Docker 后台服务
        sudo systemctl start docker
    g.测试运行docker run hello-world
        
2.使用
    概念:运行镜像cento每次会生成新的容器,容器对应的images即原imagesid,改名后可以直接启动该容器
    docker
    docker run hello-world
    docker ps    查看正在运行的容器
    docker ps -a 所有的
    docker stop
    docker port bf08b7f2cd89    #查看指定容器的端口
    systemctl enable docker (service docker enable)(开机启动)
    docker images    (查看已有的镜像)
    docker rmi images    (删除镜像)
    docker stop 1fa4ab2cf395    停掉某个容器 取id
    docker inspect 11426a19f1a2  使用镜像id,查看镜像详细信息
    docker stop $(docker ps -q) #停用全部运行中的容器
    docker rm $(docker ps -aq)  #删除全部容器
    docker stop $(docker ps -q) & docker rm $(docker ps -aq)  #一条命令实现停用并删除
    docker tag httpd httpd:lamp    给httpd镜像加标签名lamp
    docker rename 原容器名  新容器名   c重命名
    docker tag c3b4dc0cfac7 mycentos:centos7  # 改名 docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
    docker run -itd 镜像 /bin/bash
    docker exec -it 容器 /bin/bash  
    运行镜像做容器会生成新的id
    
    创建容器给root权限:    
          docker run --privileged --cap-add SYS_ADMIN --name master -e container=docker -itd 
          --restart=always mycentos:centos7 /usr/sbin/init  
    进入容器:
        docker exec -it master /bin/bash 
    端口映射说明:
        0.0.0.0:32769->5000/tcp  - Docker 开放了 5000 端口 映射到主机端口 32769 上 被映射主机名:端口
        0.0.0.0:60003->22/tcp    - Docker 开放了 22   端口 映射到主机端口 60003 上      
3.容器的使用和Docker的登录
    https://blog.csdn.net/u013538542/article/details/77150509
    先创建三个文件,分别是:Dockerfile,requirements.txt,app.py

    运行以下命令,创建一个Docker镜像(Docker image),并且加一个 -t 参数用于设置一个友好的命名
        docker build -t friendlyhello .
    
    运行你的应用,映射你电脑机器的4000端口到容器(Container)的80端口,使用参数 -p
        docker run -p 4000:80 friendlyhello

    访问:    http://192.168.50.135:4000/
    当然,你也可以使用 curl 来访问了,获取的是页面源码

        curl http://localhost:4000

*加速器
    新版的 Docker 在 /etc/docker/daemon.json 
    vi daemon.json 
    {
    "registry-mirrors":["https://j0bdjvov.mirror.aliyuncs.com"]
    }
    
    http://hub-mirror.c.163.com   #163的源也可以

4.如运行centos容器
    a.如以 centos 为镜像创建的容器写入,然后输出,会输出 hello world
        本地没有centos的话会从仓库下
        [root@master home]# docker run centos /bin/echo "Hello world"
        Hello world

    b.我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力
        [root@master home]# docker run -i -t centos /bin/bash
        [root@1ce644038223 /]# 
        输入docker ps   这个时候docker已经在运行了,exit或者ctrl+d退出容器
        docker stop 1ce644038223 停止容器
    c.容器后台模式
        [root@master docker]# docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 1; done"
        112286c694066da8ddf613865c32fa88c6b5c8947c1928f35eddd58e3b7f5a55
        docker ps
        docker logs 2b1b7a428627  
    d.web应用
        # docker pull training/webapp  # 载入镜像
        # docker run -d -P training/webapp python app.py

        -d:让容器在后台运行。
        -P:将容器内部使用的网络端口映射到我们使用的主机上。

        docker ps
        这里多了端口信息:
            PORTS
            0.0.0.0:32769->5000/tcp    

        Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上
        这时我们可以通过浏览器访问WEB应用 192.168.50.170:32769

        我们也可以通过 -p 参数来设置不一样的端口:
        # docker run -d -p 5000:5000 training/webapp python app.py
        
        查看容器端口的映射情况:
            docker port bf08b7f2cd89
            输出: 5000/tcp -> 0.0.0.0:32768
    f. 启动
        docker start dockername
        docker rm dockername

5.启动某个镜像来运行容器 #作参考
    
     # docker run -t -i centos /bin/bash 
     # docker run -itd centos /bin/bash 
    
    进入容器  docker attach bce6d9a692b2
    进入Docker容器比较常见的几种做法如下:
    https://www.cnblogs.com/xhyan/p/6593075.html
        使用 docker attach    (docker attach命令不太适合于生产环境,平时自己开发应用时可以使用该命令,窗口同步)
        使用 SSH
        使用 nsenter
        使用 exec    建议
        
        

    
        sudo docker exec -ti -u root 7509371edd48 bash

    参考一:
        https://blog.csdn.net/qq_16030133/article/details/79091345
        docker pull centos    

        这个命令是下载最新版本的CENTOS包


        第二步:建立一个CENTOS的容器。

        sudo docker run --privileged --cap-add SYS_ADMIN -e container=docker -it --name=master -p 80:8080  -d  --restart=always centos:7 /usr/sbin/init  

        这个命令用来建立一个CENTOS的容器。因为我要在这个容器安装一个Tomcat,所以我做了一个端口映射,把80端口映射到容器的8080端口。
        --privileged 指定容器是否是特权容器。这里开启特权模式。

        --cap-add SYS_ADMIN 添加系统的权限。不然,系统很多功能都用不了的。

        -e container=docker 设置容器的类型。

        -it 启动互动模式。

        /usr/sbin/init  初始容器里的CENTOS。

        以上的参数是必需的。不然,建立的CENTOS容器不能正常使用和互动。

        如果没有-it参数,容器会不停启动。

        如果没有初始化和特权等等的开关,就不能使用systemctl。所以,以上的开关和设置是一样不能少的。

        第三步:进入容器

        docker exec -it master /bin/bash  

6.centos默认没有ifconfig命令,配置ifconfig
    
    yum install initscripts  #service安装
    yum install wget
    yum install vim
    yum search ifconfig
    yum install net-tools.x86_64 -y    #安装ifconfig
    
    yum install passwd openssl openssh-server -y  #安装ssh等
    yum install openssh-clients -y

    https://blog.csdn.net/leon_wzm/article/details/78690439
    启动sshd:
        # /usr/sbin/sshd -D
        这时候再试一下ssh localhost,发现错误改变: 

    ssh: connect to host localhost port 22: Cannot assign requested address

    说明sshd服务还没有开启。用ps -ef也可以验证这一点。

    由于是docker里面的centos,所以service和systemctl都不好用。

    尝试手动运行/usr/sbin/sshd

    报如下错误:

        Could not load host key: /etc/ssh/ssh_host_rsa_key
        Could not load host key: /etc/ssh/ssh_host_ecdsa_key
        Could not load host key: /etc/ssh/ssh_host_ed25519_key
        sshd: no hostkeys available -- exiting.
    
    手动执行/usr/sbin/sshd-keygen -A

    再执行/usr/sbin/sshd成功。
    执行ssh localhost 
    docker ps -a

7.如果安装3个centos
    docker run -itd imagesid /bin/bash 不用无权限

    docker restart demo2
    docker stop master

    docker exec -it master /bin/bash  
    docker ps
    docker ps -a


    未加端口
    docker run --privileged --cap-add SYS_ADMIN --name master -e container=docker -itd --restart=always mycentos:centos7 /usr/sbin/init  
    docker run --privileged --cap-add SYS_ADMIN --name master1 -e container=docker -itd --restart=always mycentos:centos7 /usr/sbin/init  
    docker run --privileged --cap-add SYS_ADMIN -e container=docker -itd --restart=always mycentos:centos7 init


    docker exec -it flamboyant_mayer /bin/bash  


    lsof -i:22
    172.17.0.1

    passwd root
    echo 'root' | passwd --stdin root

    ---------------------------------------------
    docker run --privileged --cap-add SYS_ADMIN --name mini2 -e container=docker -itd --restart=always centos:7 /usr/sbin/init  
    docker exec -it mini2 /bin/bash  


    yum install initscripts -y #service安装
        yum install wget vim -y
        yum search ifconfig
        yum install net-tools.x86_64 -y    #安装ifconfig
        yum install -y NetworkManager-tui  #安装有nmtui  https://blog.csdn.net/computer1024/article/details/73731432


        yum install passwd openssl openssh-server -y  #安装ssh等
        yum install openssh-clients -y

    

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    stemctl start sshd.service
    ps -ef |grep ssh
    vi /etc/ssh/sshd_config
    放开这个注释了的选项 #PermitRootLogin yes
    passwd root
    echo 'root' | passwd --stdin root
    docker login
    
    ------------------------
    docker rm $(docker ps -aq)  #删除全部容器
    docker stop $(docker ps -q) & docker rm $(docker ps -aq)  #一条命令实现停用并删除
    docker ps -a
    docker images
    docker rmi 
    docker commit b5926410fe60 myimage/centos7-ssh
    docker rmi ed9c93747fe1
    docker rmi -f 镜像ID
    docker rmi repository:tag
    
    --------------------------------------
     -p 60001:22 
     docker run --privileged -p 60001:22 --cap-add SYS_ADMIN --name master -e container=docker -itd --restart=always centos:7 /usr/sbin/init  
     docker ps -a
     docker images
     docker exec -it master /bin/bash  
     
    yum install initscripts -y 
    yum install wget -y
    yum install net-tools.x86_64 -y    

    yum install passwd openssl openssh-server -y  
    yum install openssh-clients -y

    

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    systemctl start sshd.service
    ps -ef |grep ssh
    vi /etc/ssh/sshd_config
    放开这个注释了的选项 #PermitRootLogin yes
    systemctl restart sshd.service
    passwd root
    echo 'root' | passwd --stdin root
    ssh localhost
    ssh 192.168.50.135
    hostname 
    exit
    docker ps -a 
    docker commit 1b1648af98c3 mycentos:7
    docker images
    docker tag e858f8bdbd06 master:centos7    #保存为新的镜像

    设置完毕
    下次进行启动:如果是start启动的权限不足,输入hostname sth不行
    docker run --privileged -p 60001:22 --cap-add SYS_ADMIN --name master -e container=docker -itd --restart=always centos:7 /usr/sbin/init  
    
    docker stop master
    docker ps -a 
    docker exec -it master /bin/bash 
    hostname aaa

    ---->>
    以 保存为新的镜像 创建第二台虚拟机 60002 mini2 172.17.0.3
    docker run --privileged -p 60002:22 --cap-add SYS_ADMIN --name mini2 -e container=docker -itd --restart=always master:centos7 /usr/sbin/init  
    docker images
    docker ps -a
    docker exec -it mini2 /bin/bash 
    docker exec -it master /bin/bash 
    
    测试ip是否是静态ip,是
        master 172.17.0.2
        docker restart master 
        
        docker exec -it master /bin/bash 
        ifconfig
    创建第三台虚拟机 60003 mini3 172.17.0.4
    docker run --privileged -p 60003:22 --cap-add SYS_ADMIN --name mini3 -e container=docker -itd --restart=always master:centos7 /usr/sbin/init  
    docker ps -a
    docker exec -it mini3 /bin/bash
    ifconfig
    reboot 容器还是up状态

8.开始配置三台机之间准备搭建集群的环境

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值