zoukankan      html  css  js  c++  java
  • docker实践

    一、导出和载入镜像   

      使用docker save命令可以导出镜像到本地文件:

    $ sudo docker images
    REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
    ubuntu 14.04 c4ff7513909d 5 weeks ago 225.4 MB
    ...
    $sudo docker save -o ubuntu_14.04.tar ubuntu:14.04

        使用docker load 可以将导出的本地文件载入到本地镜像库

    [root@kwephicprc03547 ~]# docker load --input euler-aarch64.tgz
      184a764bb580: Loading layer [==================================================>] 1.189 GB/1.189 GB
      Loaded image: euler:latest
    [root@kwephicprc03547 ~]# docker load --input centos-aarch64.tgz
      db7d26604fad: Loading layer [==================================================>] 244.7 MB/244.7 MB
      Loaded image: centos/aarch64:latest
    [root@kwephicprc03547 ~]# docker images
      REPOSITORY TAG IMAGE ID CREATED SIZE
      euler latest da5bac89d64d
    40 hours ago 1.155 GB   centos/aarch64 latest b1b73535f567 13 months ago 236.3 MB

    二、在docker中使用systemd

      Docker运行一个系统容器起来时,只是提供了特定的文件系统层和进程隔离,给人一种VM的感觉但却并不是VM,如果想要像在物理机那样使用systemctl start|status|stop来管理服务进程,然后你通常会看到:Failed to get D-Bus connection: Operation not permitted。

      出现该错误的原因:1、需要启动systemd进程;2、需要特权。

      因此需要一个可以使用systemd的容器时,可以用如下方式启动容器:

    [root@kwephicprc03547 network-scripts]# docker images
      REPOSITORY TAG IMAGE ID CREATED SIZE
      euler latest da5bac89d64d 41 hours ago        1.155 GB
      centos/aarch64 latest b1b73535f567 13 months ago 236.3 MB
    [root@kwephicprc03547 network-scripts]# docker run -tdi --privileged euler init
      WARNING: IPv4 forwarding is disabled. Networking will not work.
      a64e7a90d851da3c10277e7941c36b22102c131cdbfa0258562c2e4b61794a57

    参数解读:

      1. -d:需要容器在后台以守护态形式运行,可添加-d实现;
      2. -t:让docker分配一个伪终端并绑定到容器的标准输入上;
      3. -i:让容器的标准输入保持打开。
      4. --privileged:Docker将拥有访问主机所有设备的权限,同时Docker也会在apparmor或者selinux做一些设置,使容器可以容易的访问那些运行在容器外部的设备。

    三、配置阿里云镜像加速器

    1、安装/升级Docker客户端

      推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce

    # step 1: 安装必要的一些系统工具
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    # Step 2: 添加软件源信息
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # Step 3: 更新并安装 Docker-CE
    sudo yum makecache fast
    sudo yum -y install docker-ce
    # Step 4: 开启Docker服务
    sudo service docker start
    
    注意:其他注意事项在下面的注释中
    # 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,你可以通过以下方式开启。同理可以开启各种测试版本等。
    # vim /etc/yum.repos.d/docker-ce.repo
    #   将 [docker-ce-test] 下方的 enabled=0 修改为 enabled=1
    #
    # 安装指定版本的Docker-CE:
    # Step 1: 查找Docker-CE的版本:
    # yum list docker-ce.x86_64 --showduplicates | sort -r
    #   Loading mirror speeds from cached hostfile
    #   Loaded plugins: branch, fastestmirror, langpacks
    #   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
    #   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
    #   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
    #   Available Packages
    # Step2 : 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos)
    # sudo yum -y install docker-ce-[VERSION]
    # 注意:在某些版本之后,docker-ce安装出现了其他依赖包,如果安装失败的话请关注错误信息。例如 docker-ce 17.03 之后,需要先安装 docker-ce-selinux。
    # yum list docker-ce-selinux- --showduplicates | sort -r
    # sudo yum -y install docker-ce-selinux-[VERSION]
    
    # 通过经典网络、VPC网络内网安装时,用以下命令替换Step 2中的命令
    # 经典网络:
    # sudo yum-config-manager --add-repo http://mirrors.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
    # VPC网络:
    # sudo yum-config-manager --add-repo http://mirrors.could.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo

    2、配置镜像加速器

      针对Docker客户端版本大于 1.10.0 的用户,可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器。

    [root@kwephicprc03547 ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
    > {
    > "registry-mirrors": ["https://nxwgbmaq.mirror.aliyuncs.com"]
    > }
    > EOF
    { "registry-mirrors": ["https://nxwgbmaq.mirror.aliyuncs.com"]}
    [root@kwephicprc03547 ~]# sudo systemctl daemon-reload [root@kwephicprc03547 ~]# sudo systemctl restart docker

    3、docker配置代理

      可以发现做了如上配置之后,依然无法查看和下载镜像。docker的代理与系统的代理不一致,需要另外配置。

      参考文档:https://docs.docker.com/config/daemon/systemd/

    (1)创建配置文件:

    mkdir  /etc/systemd/system/docker.service.d
    touch /etc/systemd/system/docker.service.d/http-porxy.conf

    (2)http-proxy.con做如下配置:

    [Service]
    Environment="HTTP_PROXY=http://账号:密码@openproxy.aliyun.com:80/"
    Environment="HTTPS_PROXY=http://账号:密码@openproxy.aliyun.com:80/"

    (3)重启服务和docker

    [root@kwephicprc03547 ~]# sudo systemctl daemon-reload
    [root@kwephicprc03547 ~]# sudo systemctl restart docker
  • 相关阅读:
    对称加密和非对称加密
    SpringMVC 请求调用过程
    Swagger2常用注解和使用方法
    玩转汉诺塔
    java序列化
    判断当前时间是否在某时间段内
    docker限制容器日志大小
    MySQL数据库备份与恢复
    MySQL事物
    MySQL用户
  • 原文地址:https://www.cnblogs.com/xiugeng/p/10440660.html
Copyright © 2011-2022 走看看