群晖docker xiaoya 群晖docker centos

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的登录
    
    先创建三个文件,分别是: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容器比较常见的几种做法如下:
    
        使用 docker attach    (docker attach命令不太适合于生产环境,平时自己开发应用时可以使用该命令,窗口同步)
        使用 SSH
        使用 nsenter
        使用 exec    建议
        
        

    
        sudo docker exec -ti -u root 7509371edd48 bash

        
        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
    

    
    启动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
    

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

 

原文链接:https://blog.51cto.com/u_16099316/7486134

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享