• Docker|部署及简单使用


    环境:VMware + centos7 + docker17.05.0

    一、安装docker

    1、修改ifcfg-ens33

    配置虚拟机的网络,保证可以正常联网

    命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33

    修改:ONBOOT=yes

    命令:systemctl restart network.service

    1、更新yum包

    命令:yum update

    2、添加yum的Docker包仓库

    命令:vi /etc/yum.repos.d/docker.repo

    内容:

    [dockerrepo]
    name=Docker Repository
    baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
    enabled=1
    gpgcheck=1
    gpgkey=https://yum.dockerproject.org/gpg

    3、安装docker引擎

    命令:yum install docker-engine

    4、启动docker引擎

    命令:service docker start

    5、查看docker版本号

    命令:docker version

    二、docker简单使用

    1、拉取镜像

    命令:docker pull centos

    从公有的镜像注册中心下载镜像,后面我们会构建私有的注册中心,用于管理团队内部的镜像

    2、查看镜像

    命令:docker images

    3、创建容器

    命令:docker run -i -t centos /bin/bash

    运行centos镜像生成容器,并进入容器,输入exit指令可以退出

    4、其他容器相关命令

    查看:docker ps -a

    CONTAINER_ID是容器的唯一标识,后面关闭、重启、删除都会用到

    关闭:docker stop  42efdf85af21

    重启:docker restart 42efdf85af21

    删除:docker rm 42efdf85af21

    三、构建镜像

    1、通过容器生成镜像

    命令:docker commit 42efdf85af21 jyy/centos

    将上面的容器重新生成一个名为“jyy/centos”的镜像

    命令:docker images

    2、使用Dockerfile构建镜像

    构建一个centos镜像,并在镜像里面配置jdk,同时可以查看jdk版本

    1)下载linux版本的jdk文件,放在任意目录下

    2)并在同一目录下,创建Dockerfile文件

    内容:

    FROM centos:latest                            --来自哪个镜像
    MAINTAINER "jyy"<xxx@xxx.com>    --创建者信息
    ADD jdk-8u201-linux-x64.tar.gz /opt    --拷贝jdk到镜像中的/opt目录,并解压
    ENV JAVA_HOME /opt/jdk1.8.0_201   --设置JAVA_HOME
    ENV PATH $JAVA_HOME/bin:$PATH  --设置环境变量
    CMD java -version                                --输出java版本

    3)构建镜像

    命令:docker build -t jyy/centos-jdk .

    使用-t选项来指定镜像的名称,并读取当前目录(即.目录)中的Dockerfile文件

    命令:docker images

    命令:docker run jyy/centos-jdk

    四、配置私有registry

    1、运行registry镜像

    命令:docker run -d -p 5000:5000 --restart=always --name registry registry:2

    2、上传镜像

    命令:docker pull ubuntu:16.04

    命令:docker tag ubuntu:16.04 localhost:5000/my-ubuntu

    将“ubuntu:16.04”更名为“localhost:5000/my-ubuntu”

    命令:docker push localhost:5000/my-ubuntu

    上传镜像

    可以在浏览器中查看上传结果:

    命令:docker image remove ubuntu:16.04

               docker image remove localhost:5000/my-ubuntu

    移除本地ubuntu镜像

    命令:docker pull localhost:5000/my-ubuntu

    从私有registry上获取my-ubuntu镜像

    以上内容,构建了一个简单的镜像中心,但是只能内部访问,显然这不能满足实际的生产需要,所以我们需要继续构建一个可以外部访问的镜像中心。

    一个可以外部访问的镜像中心需要使用TLS进行安全加固。

    1)我们使用openssl生成证书,在生成证书之前,需要修改一个配置,否则会报出如下错误:

    x509: cannot validate certificate for <ipaddress> because it doesn't contain any IP SANs

    命令:vi /etc/pki/tls/openssl.cnf

    修改内容:ip地址为本地地址

    [ v3_ca ]
    subjectAltName=IP:192.168.186.128

    2)生成证书

    命令:mkdir certs

    cd certs

    openssl genrsa -out domain.key 2048

    openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt

    3)将生成的私有证书追加到系统的管理证书中,否则会报出如下错误:

    x509: certificate signed by unknown authority

    命令:cat domain.crt >> /etc/pki/tls/certs/ca-bundle.crt

    重启服务:systemctl restart docker

    4)运行镜像,在证书的上层目录下执行

    命令:

    docker run -d 
      --restart=always 
      --name registry 
      -v "$(pwd)"/certs:/certs 
      -e REGISTRY_HTTP_ADDR=0.0.0.0:443 
      -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt 
      -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key 
      -p 443:443 
      registry:2

    5)上传本地镜像

    命令:docker tag localhost:5000/my-ubuntu 192.168.186.128:443/my-ubuntu

    docker push 192.168.186.128:443/my-ubuntu

    上传成功!!!

    6)在另一台docker客户端上,上传镜像到镜像中心

    命令:docker tag centos 192.168.186.128:443/centos

    docker push 192.168.186.128:443/centos

    会抛出如下错误:

    x509: certificate signed by unknown authority

    同上,将证书拷贝一份,再追加到系统的管理证书中即可

    命令:scp root@192.168.186.128:/etc/docker/certs/domain.crt /etc/docker/certs/

    cat domain.crt >> /etc/pki/tls/certs/ca-bundle.crt

    重启服务:systemctl restart docker

    docker push 192.168.186.128:443/centos

    上传成功!!!

    参考网址:https://docs.docker.com/registry/deploying/

  • 相关阅读:
    php javascript
    在线支付接口之PHP支付宝接口开发
    作业9 最长公共子序列
    第十二章 税制的设计
    第十一章 公共物品和公共资源
    第十章 外部性
    第九章 应用:国际贸易
    作业8 矩阵乘法链
    第八章 应用:赋税的代价
    第七章 消费者、生产者与市场效率
  • 原文地址:https://www.cnblogs.com/maikucha/p/10529282.html
Copyright © 2020-2023  润新知