标签: docker

  • centos8中docker使用阿里云镜像加速服务

    上一篇docker安装因为篇幅过长,这里单独介绍怎么使用阿里云镜像加速服务,搜了一圈,网上的教程很多太老了,还有的说阿里云操作文档没有说明白,装了没用。装之前可以通过命令docker info查看是否添加了阿里云镜像加速链接,每个用户的链接地址应该是不一样的,注意核实自己的是否正确。

    首先说明,在centos8中默认情况下是这样的:

    • /etc/sysconfig/下面没有docker目录或文件,这应该还是centos6的设置方法。
    • /etc/docker/下面默认只有一个key.json,是没有daemon.json的,设置加速服务时可以自动创建。centos7中可能安装好docker默认就有吧,没有测试。

    然后具体说下操作方法:

    登录阿里云进入控制台点击左上角菜单图标-产品与服务-容器镜像服务-镜像中心-镜像加速器,选择centos就会有对应的操作文档。

    • 第一行可以省略,因为目录本来存在,不用再创建,按照执行也无所谓。
    • 复制第2-6行(下图第一个红框)中命令运行,会自动创建daemon.json文件。
    • 复制第7行(下图第二个红框)命令运行,重新加载配置文件。
    • 复制第8行(下图第三个红框)命令运行,重启docker服务。
    $ sudo tee /etc/docker/daemon.json <<-'EOF'
    > {
    >   "registry-mirrors": ["https://r1xsqnzk.mirror.aliyuncs.com"]
    > }
    > EOF
    {
      "registry-mirrors": ["https://r1xsqnzk.mirror.aliyuncs.com"]
    }
    $ sudo systemctl daemon-reload
    $ sudo systemctl restart docker

    至此,运行一下docker info可以查看到出现了阿里云的加速链接。但是,到这里还没有结束的。可以使用docker pull拉取镜像试一下,肯定会报如下错误:

    $ sudo docker pull tomacat
    Using default tag: latest
    Error response from daemon: pull access denied for tomacat, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

    为什么呢?修改之前下载虽然慢了点,但终归不会错误,改了之后居然直接用不了了,很显然,配置还没有成功。还有关键的一步——访问凭证,如下:

    $ sudo docker login --username=阿里云用户名 registry.cn-hangzhou.aliyuncs.com
    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

    然后再拉取镜像,成功了,并且速度确实还是快不少,647M的tomcat两分钟不到就完成了

    $ sudo docker pull tomcat
    Using default tag: latest
    latest: Pulling from library/tomcat
    e9afc4f90ab0: Pull complete
    989e6b19a265: Pull complete
    af14b6c2f878: Pull complete
    5573c4b30949: Pull complete
    fb1a405f128d: Pull complete
    612a9f566fdc: Pull complete
    cf63ebed1142: Pull complete
    fbb20561cd50: Pull complete
    e99c920870d7: Pull complete
    b7f793f2be47: Pull complete
    Digest: sha256:81c2a95e5b1b5867229d75255abe54928d505deb81c8ff8949b61fde1a5d30a1
    Status: Downloaded newer image for tomcat:latest
    docker.io/library/tomcat:latest

    这样,阿里云镜像加速服务就配置成功了。

  • 第一次安装Docker全过程记录

    Docker我目前的理解就相当于现在Windows上使用的VMware,只不过还是有很大区别的,主要在于VMware包括硬件一起虚拟化了,Docker并没有,所以更精简灵活吧。但这个理解肯定是特别片面的,不管如何,Linux运维学习过程中Docker是不可缺少的一部分。

    对比之前的zabbix安装,虽然安装步骤少了几步,但是入手起来要麻烦一下,主要是官网没有中文界面支持的原因吧,所以略显麻烦。但是不能怕麻烦,因为英语也是必过的一关吧。

    Get Started

    点击“View Linux Engine”会跳转到docker hub网站,类似于GitHub吧,或者理解为应用商店?AppStore?目前我是这样理解的。这个界面有不同Linux系统对应的docker版本,对应进去就可以了。

    对于docker有一个简单的描述,然后进入文档说明安装。

    https://docs.docker.com/engine/install/centos/

    我使用的环境是centos8,尝试使用dnf替换yum试一试(可以按照官网使用yum直接运行的),如果使用的是root用户不用sudo。注意$符号后面的才是命令,其它属于执行后出现的内容。

    $ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    添加仓库自:https://download.docker.com/linux/centos/docker-ce.repo
    $ dnf info docker-ce
    可安装的软件包
    名称         : docker-ce
    时期         : 3
    版本         : 19.03.11
    发布         : 3.el7
    架构         : x86_64
    大小         : 24 M
    源           : docker-ce-19.03.11-3.el7.src.rpm
    仓库         : docker-ce-stable
    概况         : The open-source application container engine
    URL          : https://www.docker.com
    协议         : ASL 2.0
    描述         : Docker is a product for you to build, ship and run any
                 : application as a lightweight container.
                 :
                 : Docker containers are both hardware-agnostic and
                 : platform-agnostic. This means they can run anywhere, from your
                 : laptop to the largest cloud compute instance and everything in
                 : between - and they don't require you to use a particular
                 : language, framework or packaging system. That makes them great
                 : building blocks for deploying and scaling web apps, databases,
                 : and backend services without depending on a particular stack or
                 : provider.
    $ sudo dnf install docker-ce docker-ce-cli containerd.io
    错误:
     问题: package docker-ce-3:19.03.11-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
      - cannot install the best candidate for the job
      - package containerd.io-1.2.10-3.2.el7.x86_64 is excluded
      - package containerd.io-1.2.13-3.1.el7.x86_64 is excluded
      - package containerd.io-1.2.13-3.2.el7.x86_64 is excluded
      - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
      - package containerd.io-1.2.2-3.el7.x86_64 is excluded
      - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
      - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
      - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
    (尝试添加 '--skip-broken' 来跳过无法安装的软件包 或 '--nobest' 来不只使用最佳选择的软件包)

    这里出现一个错误,意思是containerd.io的版本太低了,我晕,这是官方提供的repo,为什么里面的containerd.io版本还是1.2.0呢?这里的解决办法大概就是另外单独安装containerd.io的高版本,或者指定docker版本来降低一下安装版本。

    https://forums.docker.com/t/docker-ce-on-centos-8/81648

    https://blog.csdn.net/qq_36643282/article/details/105190759

    $ sudo dnf -y install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
    依赖关系解决。
    ================================================================================
     软件包              架构   版本                             仓库          大小
    ================================================================================
    安装:
     containerd.io       x86_64 1.2.6-3.3.el7                    @commandline  26 M
    升级:
     audit               x86_64 3.0-0.13.20190507gitf58ec40.el8  base         252 k
     audit-libs          x86_64 3.0-0.13.20190507gitf58ec40.el8  base         116 k
     policycoreutils     x86_64 2.9-3.el8_1.1                    base         377 k
    安装依赖关系:
     container-selinux   noarch 2:2.124.0-1.module_el8.1.0+298+41f9343a
                                                                 AppStream     47 k
     checkpolicy         x86_64 2.9-1.el8                        base         348 k
     policycoreutils-python-utils
                         noarch 2.9-3.el8_1.1                    base         250 k
     python3-audit       x86_64 3.0-0.13.20190507gitf58ec40.el8  base          85 k
     python3-libsemanage x86_64 2.9-1.el8                        base         127 k
     python3-policycoreutils
                         noarch 2.9-3.el8_1.1                    base         2.2 M
     python3-setools     x86_64 4.2.2-1.el8                      base         600 k
    启用模块流:
     container-tools            rhel8
    
    事务概要
    ================================================================================
    安装  8 软件包
    升级  3 软件包
    
    总计:30 M
    总下载:4.4 M
    下载软件包:
    (1/10): policycoreutils-python-utils-2.9-3.el8_ 1.6 MB/s | 250 kB     00:00
    (2/10): checkpolicy-2.9-1.el8.x86_64.rpm        1.8 MB/s | 348 kB     00:00
    (3/10): container-selinux-2.124.0-1.module_el8. 242 kB/s |  47 kB     00:00
    (4/10): python3-audit-3.0-0.13.20190507gitf58ec 1.2 MB/s |  85 kB     00:00
    (5/10): python3-setools-4.2.2-1.el8.x86_64.rpm  8.3 MB/s | 600 kB     00:00
    (6/10): python3-libsemanage-2.9-1.el8.x86_64.rp 832 kB/s | 127 kB     00:00
    (7/10): python3-policycoreutils-2.9-3.el8_1.1.n 9.7 MB/s | 2.2 MB     00:00
    (8/10): audit-3.0-0.13.20190507gitf58ec40.el8.x 1.4 MB/s | 252 kB     00:00
    (9/10): audit-libs-3.0-0.13.20190507gitf58ec40. 843 kB/s | 116 kB     00:00
    (10/10): policycoreutils-2.9-3.el8_1.1.x86_64.r 3.4 MB/s | 377 kB     00:00
    --------------------------------------------------------------------------------
    总计                                            3.4 MB/s | 4.4 MB     00:01
    运行事务检查
    事务检查成功。
    运行事务测试
    事务测试成功。
    运行事务
      准备中  :                                                                 1/1
      运行脚本: audit-libs-3.0-0.13.20190507gitf58ec40.el8.x86_64               1/1
      升级    : audit-libs-3.0-0.13.20190507gitf58ec40.el8.x86_64              1/14
      升级    : policycoreutils-2.9-3.el8_1.1.x86_64                           2/14
      运行脚本: policycoreutils-2.9-3.el8_1.1.x86_64                           2/14
      安装    : python3-audit-3.0-0.13.20190507gitf58ec40.el8.x86_64           3/14
      安装    : python3-setools-4.2.2-1.el8.x86_64                             4/14
      安装    : python3-libsemanage-2.9-1.el8.x86_64                           5/14
      安装    : checkpolicy-2.9-1.el8.x86_64                                   6/14
      安装    : python3-policycoreutils-2.9-3.el8_1.1.noarch                   7/14
      安装    : policycoreutils-python-utils-2.9-3.el8_1.1.noarch              8/14
      运行脚本: container-selinux-2:2.124.0-1.module_el8.1.0+298+41f9343a.n    9/14
      安装    : container-selinux-2:2.124.0-1.module_el8.1.0+298+41f9343a.n    9/14
      运行脚本: container-selinux-2:2.124.0-1.module_el8.1.0+298+41f9343a.n    9/14
      安装    : containerd.io-1.2.6-3.3.el7.x86_64                            10/14
      运行脚本: containerd.io-1.2.6-3.3.el7.x86_64                            10/14
      升级    : audit-3.0-0.13.20190507gitf58ec40.el8.x86_64                  11/14
      运行脚本: audit-3.0-0.13.20190507gitf58ec40.el8.x86_64                  11/14
      运行脚本: audit-3.0-0.10.20180831git0047a6c.el8.x86_64                  12/14
      清理    : audit-3.0-0.10.20180831git0047a6c.el8.x86_64                  12/14
      运行脚本: audit-3.0-0.10.20180831git0047a6c.el8.x86_64                  12/14
      运行脚本: policycoreutils-2.9-3.el8.x86_64                              13/14
      清理    : policycoreutils-2.9-3.el8.x86_64                              13/14
      清理    : audit-libs-3.0-0.10.20180831git0047a6c.el8.x86_64             14/14
      运行脚本: container-selinux-2:2.124.0-1.module_el8.1.0+298+41f9343a.n   14/14
      运行脚本: audit-libs-3.0-0.10.20180831git0047a6c.el8.x86_64             14/14
      验证    : container-selinux-2:2.124.0-1.module_el8.1.0+298+41f9343a.n    1/14
      验证    : checkpolicy-2.9-1.el8.x86_64                                   2/14
      验证    : policycoreutils-python-utils-2.9-3.el8_1.1.noarch              3/14
      验证    : python3-audit-3.0-0.13.20190507gitf58ec40.el8.x86_64           4/14
      验证    : python3-libsemanage-2.9-1.el8.x86_64                           5/14
      验证    : python3-policycoreutils-2.9-3.el8_1.1.noarch                   6/14
      验证    : python3-setools-4.2.2-1.el8.x86_64                             7/14
      验证    : containerd.io-1.2.6-3.3.el7.x86_64                             8/14
      验证    : audit-3.0-0.13.20190507gitf58ec40.el8.x86_64                   9/14
      验证    : audit-3.0-0.10.20180831git0047a6c.el8.x86_64                  10/14
      验证    : audit-libs-3.0-0.13.20190507gitf58ec40.el8.x86_64             11/14
      验证    : audit-libs-3.0-0.10.20180831git0047a6c.el8.x86_64             12/14
      验证    : policycoreutils-2.9-3.el8_1.1.x86_64                          13/14
      验证    : policycoreutils-2.9-3.el8.x86_64                              14/14
    
    已升级:
      audit-3.0-0.13.20190507gitf58ec40.el8.x86_64
      audit-libs-3.0-0.13.20190507gitf58ec40.el8.x86_64
      policycoreutils-2.9-3.el8_1.1.x86_64
    
    已安装:
      containerd.io-1.2.6-3.3.el7.x86_64
      container-selinux-2:2.124.0-1.module_el8.1.0+298+41f9343a.noarch
      checkpolicy-2.9-1.el8.x86_64
      policycoreutils-python-utils-2.9-3.el8_1.1.noarch
      python3-audit-3.0-0.13.20190507gitf58ec40.el8.x86_64
      python3-libsemanage-2.9-1.el8.x86_64
      python3-policycoreutils-2.9-3.el8_1.1.noarch
      python3-setools-4.2.2-1.el8.x86_64
    
    完毕!
    
    $ containerd -v
    containerd containerd.io 1.2.6 894b81a4b802e4eb2a91d1ce216b8817763c29fb
    $ sudo dnf install -y docker-ce docker-ce-cli
    Repository AppStream is listed more than once in the configuration
    Repository extras is listed more than once in the configuration
    Repository PowerTools is listed more than once in the configuration
    Repository centosplus is listed more than once in the configuration
    上次元数据过期检查:0:03:36 前,执行于 2020年06月11日 星期四 00时42分55秒。
    依赖关系解决。
    ================================================================================
     软件包            架构       版本                   仓库                  大小
    ================================================================================
    安装:
     docker-ce         x86_64     3:19.03.11-3.el7       docker-ce-stable      24 M
     docker-ce-cli     x86_64     1:19.03.11-3.el7       docker-ce-stable      38 M
    安装依赖关系:
     libcgroup         x86_64     0.41-19.el8            base                  70 k
    
    事务概要
    ================================================================================
    安装  3 软件包
    
    总下载:62 M
    安装大小:263 M
    确定吗?[y/N]: y
    下载软件包:
    (1/3): libcgroup-0.41-19.el8.x86_64.rpm         408 kB/s |  70 kB     00:00
    (2/3): docker-ce-19.03.11-3.el7.x86_64.rpm      1.6 MB/s |  24 MB     00:14
    (3/3): docker-ce-cli-19.03.11-3.el7.x86_64.rpm  418 kB/s |  38 MB     01:33
    --------------------------------------------------------------------------------
    总计                                            682 kB/s |  62 MB     01:33
    警告:/var/cache/dnf/docker-ce-stable-091d8a9c23201250/packages/docker-ce-19.03.11-3.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID 621e9f35: NOKEY
    Docker CE Stable - x86_64                       647  B/s | 1.6 kB     00:02
    导入 GPG 公钥 0x621E9F35:
     Userid: "Docker Release (CE rpm) <docker@docker.com>"
     指纹: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
     来自: https://download.docker.com/linux/centos/gpg
    确定吗?[y/N]: y
    导入公钥成功
    运行事务检查
    事务检查成功。
    运行事务测试
    事务测试成功。
    运行事务
      准备中  :                                                                 1/1
      安装    : docker-ce-cli-1:19.03.11-3.el7.x86_64                           1/3
      运行脚本: docker-ce-cli-1:19.03.11-3.el7.x86_64                           1/3
      运行脚本: libcgroup-0.41-19.el8.x86_64                                    2/3
      安装    : libcgroup-0.41-19.el8.x86_64                                    2/3
      运行脚本: libcgroup-0.41-19.el8.x86_64                                    2/3
      安装    : docker-ce-3:19.03.11-3.el7.x86_64                               3/3
      运行脚本: docker-ce-3:19.03.11-3.el7.x86_64                               3/3
      验证    : libcgroup-0.41-19.el8.x86_64                                    1/3
      验证    : docker-ce-3:19.03.11-3.el7.x86_64                               2/3
      验证    : docker-ce-cli-1:19.03.11-3.el7.x86_64                           3/3
    
    已安装:
      docker-ce-3:19.03.11-3.el7.x86_64    docker-ce-cli-1:19.03.11-3.el7.x86_64
      libcgroup-0.41-19.el8.x86_64
    
    完毕!
    $ sudo systemctl start docker
    $ systemctl status docker
    $ sudo docker run hello-world
    Unable to find image 'hello-world:latest' locally
    docker: Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: Get https://auth.docker.io/token?scope=repository%3Alibrary%2Fhello-world%3Apull&service=registry.docker.io: net/http: request canceled (Client.Timeout exceeded while awaiting headers).
    See 'docker run --help'.

    安装完毕,拉取hello world镜像失败。注意看错误提示,这里应该是国外网络不稳定得原因吧,再试一次就可以了。

    $ sudo docker run hello-world
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    0e03bdcc26d7: Pull complete
    Digest: sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
    Status: Downloaded newer image for hello-world:latest
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
     3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.
    
    To try something more ambitious, you can run an Ubuntu container with:
     $ docker run -it ubuntu bash
    
    Share images, automate workflows, and more with a free Docker ID:
     https://hub.docker.com/
    
    For more examples and ideas, visit:
     https://docs.docker.com/get-started/

    或者改为使用阿里云镜像加速服务后再试,因篇幅过长单独写了一篇:centos8中docker使用阿里云镜像加速服务

    另外阿里云还有repo仓库的镜像源可以设置。可以跳过。

    $ cd /etc/yum.repos.d/
    $ sudo mv docker-ce.repo docker-ce.repo.bak
    $ sudo dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    $ dnf clean all
    $ dnf makecache
    $ sudo systemctl restart docker

    其它错误(如下)解析:这里因为是非root用户,所以必须加sudo,不然会出现如下错误。

    $ docker images
    Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/json: dial unix /var/run/docker.sock: connect: permission denied

    最后,据了解centos8开始默认用podman替代docker,大致了解了一下,目前可能docker还是主流吧。学会了docker,podman应该也差不多吧。

    国外这些logo还是挺有意思的,挺形象的。podman的优势可能就是连docker中的鲸鱼船都省略了,直接是一只只的海豹在海里。那直接就把大海当容器咯。看起来是不是就更厉害。

    $ dnf info podman
    Repository AppStream is listed more than once in the configuration
    Repository extras is listed more than once in the configuration
    Repository PowerTools is listed more than once in the configuration
    Repository centosplus is listed more than once in the configuration
    上次元数据过期检查:0:53:00 前,执行于 2020年06月11日 星期四 04时14分11秒。
    可安装的软件包
    名称         : podman
    版本         : 1.6.4
    发布         : 4.module_el8.1.0+298+41f9343a
    架构         : x86_64
    大小         : 12 M
    源           : podman-1.6.4-4.module_el8.1.0+298+41f9343a.src.rpm
    仓库         : AppStream
    概况         : Manage Pods, Containers and Container Images
    URL          : https://podman.io/
    协议         : ASL 2.0
    描述         : podman (Pod Manager) is a fully featured container engine that is a simple
                 : daemonless tool.  podman provides a Docker-CLI comparable command line that eases
                 : the transition from other container engines and allows the management of pods,
                 : containers and images.  Simply put: alias docker=podman.  Most podman commands
                 : can be run as a regular user, without requiring additional privileges.
                 :
                 : podman uses Buildah(1) internally to create container images. Both tools share
                 : image (not container) storage, hence each can use or manipulate images (but not
                 : containers) created by the other.
                 :
                 : Manage Pods, Containers and Container Images
                 : libpod Simple management tool for pods, containers and images