• Docker的安装和使用


    Docker架构

    Docker安装

    1. 去官网下载repo
    2. 更改为国内镜像baseurl=https://download.docker.com/linux/
    3. 有可能需要安装依赖包 yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.66-1.el7.noarch.rpm
    4.  yum install docker-ce
    

    Docker配置

    1. /etc/docker/daemon.json
        {
            "registry-mirrors": ["https://registry.docker-cn.com"]
        }
        Docker镜像加速
    2. 启动
    # systemctl start docker
    3. 查看 
    # docker help
    # docker info
    4. Docker常用
    # docker image --help
    # docker search nginx  (https://hub.docker.com/)
        nginx 顶级仓库
        jwilder/nginx-proxy 私有仓库
    # docker image pull nginx:1.14-alpine (下载alpine image, alpine是一个体积特别小的Nginx版本,没有任何调试工具,在实际工作中,根据自已的需要生成image)
    # docker pull quay.io/coreos/flannel:v0.10.0-amd64 (到quay.io网站下载镜像,这个网站是常用的第三方镜像)
    # docker image pull busybox:latest
    # docker image ls (显示下载的image)
    # docker image ls --no-trunc (显示详细信息)
    # docker container --help
    # docker container ls (显示容器)
    # docker container ps (显示容器)
    # docker container run --help
    # docker network list (网络查询)
        docker0: 默认是NAT的网桥
    # docker run --name b1 -it busybox:latest (以b1的名字运行image busybox,并且是交互式界面)
        / # ls (进入到busybox容器的shell)
        mkdir /data/html -p
        vim /data/html/index.html (在容器里生成主页)
        httpd -f -h /data/html (启动b1容器里和httpd)
    # docker inspect b1 (在host上查看b1容器的IP)
    # curl 172.17.0.2 (访问b1容器的网页)
        在容器里exit,退出容器
    # docker ps -a (显示所有容器,运行的和停止的)
    # docker container start -i -a b1 (启动容器)
    #  docker kill b1 (强制停止容器)
    # docker rm b1 (永久删除容器b1)
    # docker run --name web1 -d nginx:1.14-alpine (启动nginx容器,如果本地没有下载nginx image,只要repo指定为hub.docker.com, 会自动下载,在容器中的进程不能运行在后台,因为是唯一进程,是支撑一个容器的骨架)
    # docker run --name kdvsor1 -d redis:4-alpine (运行redis容器)
    # docker exec -it kdvsor1 /bin/sh 
        # redis-cli
    # docker logs web1 (在host中查看web1容器的日志)
    

    Docker event state

    Docker image

    Docker镜像含有启动容器所需要的文件系统及其内容,因此,其主要作用创建并启动docker容器。
    

    Docker分层机制

    1. bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节约内存资源。
    2. rootfs:位于bootfs之上,表现为docker容器的根文件系统。rootfs由内核挂载为只读模式,而后通过联合挂载技术额外挂载一个可写层;
                    位于下层的镜像称为父镜像,最底层的称为基础镜像
                    最上层为可读写层,基下层均为只读层
    

    Docker Registry

    启动容器时,Docker Daemon会试图从本地获取相关的镜像,本地镜像不存在时,其将从Registry中下载该镜像并保存到本地
    

    分类

    Registry用于保存docker镜像,包括镜像的层次结构和元数据:
    1. Sponsor Registry:第三方的registry,供客户和Docker社区使用
    2. Mirror Registry:第三方的registry,只让客户使用
    3. Vendor Registry:由发布Docker镜像的供应商提供的registry
    4. Private Registry:通过设有防火墙和额外的安全层的私有实体提供的registry
    注意:每个仓库可以包含多个Tag,但是每一个Tag只能属于一个仓库
    

    Docker生产流程

    Docker Registry中的镜像通常由研发人员制作,而后推送至公共或私有Registry上保存,供其他人员使用,然后部署到生产环境
    


    1. Dockerfile
    2. 基于容器制作
    3. Docker Hub automated builds

    基于容器制作镜像的实例

    #  docker run --name b1 -it busybox
        # / # mkdir -p /data/html
        # / # vi /data/html//index.html
    # docker commit -p b1 (制作image,此镜像还是以bysybox的sh启动)
    # docker tag 542b72efce7e linuxdevops/httpd:v1.0-1 (给镜像标签)
    # docker tag linuxdevops/httpd:v1.0-1 linuxdevops/httpd:latest (加另一个标签)
    # docker run --name t1  -it linuxdevops/httpd:v1.0-1 (启动做的镜像)
        # / # ls /data/html/index.html 
    #  docker commit -a "evanliang" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p b1 linuxdevops/httpd:v1.0-2
    #  docker run --name t2  -it linuxdevops/httpd:v1.0-2
    # curl 172.17.0.4 (新做的linuxdevops/httpd:v1.0-2能直接启动httpd)
    4. 在dockerhub上创建账户
        # docker tag f43e5c3f987c liangjindong/httpd (tag名字一定要和dockerhub上创建的REPOSITORY名字一致)
        # docker login -u liangjindong (登录dockerhub)
            Password:
            WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
            Configure a credential helper to remove this warning. See
            https://docs.docker.com/engine/reference/commandline/login/#credentials-store
            Login Succeeded
        # docker push liangjindong/httpd (如果不带tag,所有image孝会上传到dockerhub)
        # 在dockerhub上,可以看到
    


    # 同时,可以用国内阿里云的镜像服务dev.aliyun.com
    # 配置镜像加速:
    针对Docker客户端版本大于 1.10.0 的用户
    您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://sah48iqf.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    同时,可以在阿里云上创建镜像仓库,上传:
    # sudo docker tag 0dfafbbae68a registry.cn-beijing.aliyuncs.com/liangjindong/httpd:latest (用阿里云指定的tag)
    # sudo docker login --username=liangjindong registry.cn-beijing.aliyuncs.com (登录)
    # sudo docker push registry.cn-beijing.aliyuncs.com/liangjindong/httpd (上传镜像)
    在阿里云上检查,成功

    5. docker镜像打包分发
    # docker save -o myimages.gz liangjindong/httpd:latest liangjindong/httpd:v1.0
    # docker load -i myimages.gz 把myimages.gz copy到另外一台docker服务器
    镜像打包分发需要提前把image本地准备好,否则运行docker run时还会去dockerhub默认的Registry下载。

    Docker Hub

    集中存储各种Docker镜像
    Github他Docker hub来实现镜像的Automated Builds
    

  • 相关阅读:
    自己做的关于select工具根据属性进行选择
    ae中栅格数据转为矢量数据
    影像图配准代码实现
    ae中最短路径分析
    AE常见接口之间的关系+常见概念 .
    GIS重要概念与术语(转)
    点线面缓冲分析(转自esri中国社区)
    ae中矢量数据转换成栅格数据
    单例模式
    利用gp自己做的生成缓冲区的代码
  • 原文地址:https://www.cnblogs.com/liangjindong/p/9398556.html
Copyright © 2020-2023  润新知