美文网首页
微服务中的容器技术---Docker(三),Docker仓库、编

微服务中的容器技术---Docker(三),Docker仓库、编

作者: singleZhang2010 | 来源:发表于2020-12-23 14:16 被阅读0次

    Docker仓库

    在前边我们已经接触到仓库这个内容,修改镜像源那部分,这里继续拓展开来

    1. 创建仓库
    > docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry  registry 
    
    1. 修改配置文件,使之支持http
    [root@localhost ~]# cat  /etc/docker/daemon.json 
    {
      "registry-mirrors": ["https://registry.docker-cn.com","https://nrbewqda.mirror.aliyuncs.com","https://dmmxhzvq.mirror.aliyuncs.com"]
      "insecure-registries": ["192.168.0.241:5000"]
    }
    #重启docker让修改生效
    systemctl restart  docker.service
    
    1. 修改镜像标签
    [root@localhost ~]# docker tag docker-test:latest 192.168.0.241:5000/docker-test:latest:1.0
    [root@localhost ~]# docker images
    
    1. 将新打标签的镜像上传镜像到仓库
    [root@localhost ~]#  docker push   192.168.0.241:5000/docker-test
    

    带basic认证的仓库

    1. 安装加密工具
    [root@localhost ~]# yum install httpd-tools  -y
    
    1. 设置认证密码
    [root@localhost ~]# mkdir /opt/registry-var/auth/ -p
    [root@localhost ~]# htpasswd  -Bbn root 123456  > /opt/registry-var/auth/htpasswd
    
    1. 启动容器,在启动时传入认证参数
    [root@localhost ~]#  docker run -d -p 5000:5000 -v /opt/registry-var/auth/:/auth/ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry
    
    1. 使用验证用户测试
    # 登陆用户
    [root@localhost ~]#  docker login 192.168.0.241:5000
    Username: root
    Password: 123456
    Login Succeeded
    #认证文件的保存位置
    [root@localhost ~]# cat .docker/config.json 
    {
        "auths": {
            "192.168.0.241:5000": {
                "auth": "Y2xzbjoxMjM0NTY="
            },
            "https://index.docker.io/v1/": {
                "auth": "Y2xzbjpIenNAMTk5Ng=="
            }
        },
        "HttpHeaders": {
            "User-Agent": "Docker-Client/17.12.0-ce (linux)"
        }
    }
    

    docker-compose编排工具

    什么是docker-compose编排工具?
    Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,我们可以使用 YML 文件来配置应用程序需要的所有服务。然后使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
    Compose 使用的三个步骤:
    使用 Dockerfile 定义应用程序的环境。

    使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。

    最后,执行 docker-compose up 命令来启动并运行整个应用程序。

    1. 安装docker-compose
    # 下载pip软件
    [root@localhost ~]# yum install -y python2-pip
    # 下载 docker-compose
    [root@localhost ~]# pip install docker-compose
    #国内开启阿里云pip 下载加速:http://mirrors.aliyun.com/help/pypi
    #修改pip.conf
    #[global]
    #index-url = https://mirrors.aliyun.com/pypi/simple/
    #[install]
    #trusted-host=mirrors.aliyun.com
    
    1. 编写编排文件
    [root@localhost ~]# vim docker-compose.yml
    version: '3'
    services:
       db:
         image: mysql:5.7
         volumes:
           - /data/db_data:/var/lib/mysql
         restart: always
         environment:
           MYSQL_ROOT_PASSWORD: somewordpress
           MYSQL_DATABASE: wordpress
           MYSQL_USER: wordpress
           MYSQL_PASSWORD: wordpress
       wordpress:
         depends_on:
           - db
         image: wordpress:latest
         volumes:
           - /data/web_data:/var/www/html
         ports: 
           - "8000:80"
         restart: always
         environment:
           WORDPRESS_DB_HOST: db:3306
           WORDPRESS_DB_USER: wordpress
           WORDPRESS_DB_PASSWORD: wordpress
    
    1. 启动
    [root@localhost my_wordpress]# docker-compose up
      #启动方法:docker-compose up
      #后台启动方法:docker-compose up -d
    
    1. 测试,访问http://192.168.0.241:8000,可以反问到wordpress安装界面

    2. docker-compose配置常用命令


      docker-compose

    用PIPEWORK为docker容器配置独立IP

    1. 安装pipework
    > wget https://github.com/jpetazzo/pipework/archive/master.zip
    >  unzip master.zip 
    >  cp pipework-master/pipework  /usr/local/bin/
    >  chmod +x /usr/local/bin/pipework
    
    1. 配置桥接网卡
    #安装桥接工具
    > yum install bridge-utils.x86_64 -y
    
    1. 修改网卡配置,实现桥接
    # 修改eth0配置,让br0实现桥接
    [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=eth0
    DEVICE=eth0
    ONBOOT=yes
    BRIDGE=br0
    [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0 
    TYPE=Bridge
    BOOTPROTO=static
    NAME=br0
    DEVICE=br0
    ONBOOT=yes
    IPADDR=192.168.0.241
    NETMASK=255.255.255.0
    GATEWAY=192.168.0.254
    DNS1=223.5.5.5
    # 重启网络
    [root@localhost ~]# /etc/init.d/network restart
    
    1. 运行一个容器镜像测试
    > pipework br0 $(docker run -d -it -p 6880:80 --name  httpd_pw httpd) 192.168.0.220/24@192.168.0.254
    
    1. 在其他主机上测试端口及连通性
    [root@localhost ~]# curl 192.168.0.220
    <html><body><h1>It works!</h1></body></html>
    [root@localhost ~]# ping 192.168.0.220 -c 1
    PING 192.168.0.220 (192.168.0.220) 56(84) bytes of data.
    64 bytes from 192.168.0.220: icmp_seq=1 ttl=64 time=0.043 ms
    
    1. 再运行一个容器,设置网路类型为none:
    [root@localhost ~]# pipework br0 $(docker run -d -it --net=none --name test httpd:2.4) 192.168.0.221/24@10.0.0.254
    
    #再进行测试
    [root@localhost ~]# curl 192.168.0.221
    <html><body><h1>It works!</h1></body></html>
    
    1. 重启容器后需要再次指定:
    pipework br0 testduliip  172.16.146.113/24@172.16.146.1
    pipework br0 testduliip01  172.16.146.112/24@172.16.146.1
    

    结尾

    使用容器的建议

    1. 不要以拆分方式进行应用程序发布
    2. 不要创建大型镜像
    3. 不要在单个容器中运行多个进程
    4. 不要再镜像内保存凭证,不要依赖IP地址
    5. 以非root用户运行进程
    6. 不要使用“最新”标签
    7. 不要利用运行中的容器创建镜像
    8. 不要使用单层镜像
    9. 不要将数据存放在容器内

    关于Docker容器的监控

    • 容器的基本信息:
      包括容器的数量、ID、名称、镜像、启动命令、端口等信息
    • 容器的运行状态:
      统计各状态的容器的数量,包括运行中、暂停、停止及异常退出
    • 容器的用量信息:
      统计容器的CPU使用率、内存使用量、块设备I/O使用量、网络使用情况等资源的使用情况

    相关文章

      网友评论

          本文标题:微服务中的容器技术---Docker(三),Docker仓库、编

          本文链接:https://www.haomeiwen.com/subject/hgysnktx.html