zoukankan      html  css  js  c++  java
  • Docker(二)Docker配置

    Docker配置

    Dcoker基本组成


    镜像( Image):
    docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。
    容器(container):
    Docker利用容器技术,独立运行个或者一个组应用,通过镜像来创建的
    仓库(repository):
    仓库就是存放镜像的地方,仓库分为公有仓库和私有仓库

    Docker 安装

    环境配置

    # 系统内核版本在 3.10 以上
    [root@hwh1 ~]# uname -r
    4.18.0-147.8.1.el8_1.x86_64
    
    # 版本信息
    [root@hwh1 ~]# cat /etc/os-release 
    NAME="Red Hat Enterprise Linux"
    VERSION="8.0 (Ootpa)"
    ID="rhel"
    ID_LIKE="fedora"
    VERSION_ID="8.0"
    PLATFORM_ID="platform:el8"
    PRETTY_NAME="Red Hat Enterprise Linux 8.0 (Ootpa)"
    ANSI_COLOR="0;31"
    CPE_NAME="cpe:/o:redhat:enterprise_linux:8.0:GA"
    HOME_URL="https://www.redhat.com/"
    BUG_REPORT_URL="https://bugzilla.redhat.com/"
    
    REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
    REDHAT_BUGZILLA_PRODUCT_VERSION=8.0
    REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
    REDHAT_SUPPORT_PRODUCT_VERSION="8.0"
    

    1.首先版本要在 CentOS 7 以上
    2.卸载原来的旧版本

    $ sudo yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-latest-logrotate 
                      docker-logrotate 
                      docker-engine
    
    

    3.用存储库安装
    在一个新主机上安装 Docker Engine 之前,需要先安装 Docker repository

    $ sudo yum install -y yum-utils
    
    # 使用国内 阿里云的镜像
    $ sudo yum-config-manager 
        --add-repo 
        http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    4.安装 Docker Engine

    # docker-ce 社区版  docker-ee 企业版
    $ sudo yum install docker-ce docker-ce-cli containerd.io
    

    遇到的问题

    在新版的 Rhel 8中,进行这一步的时候,会出现 containerd.io 版本过低而无法安装

    [root@hwh1 ~]# yum install docker-ce docker-ce-cli containerd.io
    Updating Subscription Management repositories.
    Unable to read consumer identity
    This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
    Repository AppStream is listed more than once in the configuration
    Docker CE Stable - x86_6  24 kB/s | 3.5 kB     00:00    
    错误:
     问题: 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 到指定版本范围内,由于还没有兼容 rhel 8 的 containerd.io 版本,所以就选择 7 的版本向下兼容安装

    wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
    
    yum install -y containerd.io-1.2.6-3.3.el7.x86_64.rpm
    
    

    5.查看安装是否成功

    # 这里安装的是最新版
    [root@hwh1 ~]# docker version 
    Client: Docker Engine - Community
     Version:           19.03.11
     API version:       1.40
     Go version:        go1.13.10
     Git commit:        42e35e61f3
     Built:             Mon Jun  1 09:13:48 2020
     OS/Arch:           linux/amd64
     Experimental:      false
    
    Server: Docker Engine - Community
     Engine:
      Version:          19.03.11
      API version:      1.40 (minimum version 1.12)
      Go version:       go1.13.10
      Git commit:       42e35e61f3
      Built:            Mon Jun  1 09:12:26 2020
      OS/Arch:          linux/amd64
      Experimental:     false
     containerd:
      Version:          1.2.6
      GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
     runc:
      Version:          1.0.0-rc8
      GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
     docker-init:
      Version:          0.18.0
      GitCommit:        fec3683
    
    

    6.启动 Docker

    $ sudo systemctl start docker
    
    [root@hwh1 ~]# ps -ef|grep docker
    root       8137      1  0 10:40 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    root       8329   3283  0 10:41 pts/0    00:00:00 grep --color=auto docker
    
    

    7.测试 Docker

    $ sudo docker run hello-world
    

    8.查看下载的镜像

    [root@hwh1 ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              bf756fb1ae65        5 months ago        13.3kB
    
    

    卸载

    1.卸载Docker Engine,CLI和Containerd软件包

    $ sudo yum remove docker-ce docker-ce-cli containerd.io
    

    2.删除所有的镜像,容器和卷

    $ sudo rm -rf /var/lib/docker
    

    阿里云镜像加速

    登录阿里云账号,找到控制台,找到容器镜像服务,里面有容器镜像加速器

    配置使用

    $ sudo mkdir -p /etc/docker
    
    $ sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["加速器的地址"]
    }
    EOF
    
    $ sudo systemctl daemon-reload
    
    $ sudo systemctl restart docker
    

    流程原理

    底层原理

    Docker是怎么工作的?
    Docker是一个 Client- Server结构的系统, Docker的守护进程运行在主机上。通过 Socket 从客户端访问
    DockerServer接收到 Docker-Client的指令,就会执行这个命令

    Docker 为什么比 虚拟机 快

    • Docker有着比虚拟机更少的抽象层,由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在Cpu、内存利用率上Docker将会在效率上有明显优势。
    • Docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统,避免了引导、加载操作系统内核这个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的,而Docker由于直接利用宿主机的操作系统则省略了这个过程,因此新建一个Docker容器只需要几秒钟。
  • 相关阅读:
    sql中添加唯一索引(非主键)
    Ubuntu 安装 LAMP 主机之后运行出现乱码
    编写安全 PHP 应用程序的七个习惯
    首先在服务器上安装ssh的服务器端
    php安全简析
    正确的Linux菱形乱码修改方法
    php安全
    变量作用域
    bind9 详细解析
    DNS和DHCP服务器
  • 原文地址:https://www.cnblogs.com/hewenhao-blogs/p/13185320.html
Copyright © 2011-2022 走看看