• 阿里云CentOS环境之docker安装,启动,加速器,docker-compose(十四)


    阿里云CentOS环境之docker安装,启动,加速器(十四)

    文章目录

    介绍

    Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。
    社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。

    Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
    Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
    总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

    下面一些概念有助于理解docker

    1. Docker 镜像(Images):Docker镜像是用于创建 Docker 容器的模板。
    2. Docker容器(Container):容器是独立运行的一个或一组应用。
    3. Docker客户端(Client):Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。
    4. Docker主机(Host):一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
    5. Docker仓库(Registry):Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。
    6. Docker Hub(https://hub.docker.com): 提供了庞大的镜像集合供使用。
    7. Docker Machine:Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

    前提条件

    1.64位版本的CentOS 7。命令lsb_release -a
    2.CentOS系统的内核版本高于 3.10。命令uname -r


    centos下安装

    1.卸载(可选)

    Docker的旧版本被称为docker或docker-engine,若以前安装过,卸载命令如下:

    yum remove docker docker-common container-selinux docker-selinux docker-engine
    
    • 1

    有些文章在这里使用了yum upgrade,命令的意思是升级所有包同时也升级软件和系统内核。我建议最好不执行命令,可能千万系统崩溃,因为系统版本从低级升级到高级,有些软件可能会出现问题。

    2.安装yum-utils device-mapper-persistent-data lvm2软件包

    yum install -y yum-utils device-mapper-persistent-data lvm2
    
    • 1

    3.配置稳定版本库

    大多数用户设置了Docker的存储库并从中安装,以方便安装和升级任务。 这是推荐的方法

    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
    • 1

    4.查看所有仓库中所有docker版本

    查看所有社区版的docker-ce版本。

    yum list docker-ce --showduplicates | sort -r
    
    • 1

    这里写图片描述
    1.repo中默认只开启stable仓库,所以这里展示的都是稳定版本的docker。
    2.使用sort -r命令对结果进行排序,版本号由最高到最低,并被截断。
    3.第一列是软件名,第二列是版本字符串, 第三列是存储库名称,安装指定版本使用包名-第二列是版本字符串

    5.安装docker

    指定版本安装,如下:

    yum install docker-ce-18.03.1.ce-1.el7.centos
    
    • 1

    最新版本

    yum install docker-ce
    
    • 1

    由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03

    6.启动docker

    启动命令

    systemctl start docker
    
    • 1

    查看版本

    docker -version
    
    • 1

    7.卸载

    查看docker已经安装版本

    yum list installed | grep docker
    
    • 1

    卸载

     yum remove docker 
                  docker-client 
                  docker-client-latest 
                  docker-common 
                  docker-latest 
                  docker-latest-logrotate 
                  docker-logrotate 
                  docker-selinux 
                  docker-engine-selinux 
                  docker-engine
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    8.添加DOCKER_HOST

    打开

    vi /etc/profile
    
    • 1

    在文件末尾添加(如果默认端口2375修改成了9000)

    export DOCKER_HOST=tcp://0.0.0.0:2375
    
    • 1

    让配置生效:

    source /etc/profile
    
    • 1

    9.开放远程访问端口

    打开

    vi /usr/lib/systemd/system/docker.service
    
    • 1

    ExecStart后面添加

    -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 
    
    • 1

    结果如下

    ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 
    
    • 1

    安装docker-machine

    命令

    curl -L https://github.com/docker/machine/releases/download/v0.10.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
    
    • 1

    测试

    docker-machine -v
    
    • 1

    官方配置

    docker启动/重启/停止等命令

    添加docker开机启动:systemctl enable docker
    启动命令:systemctl start docker
    重启命令:systemctl restart docker
    停止命令:systemctl stop docker
    查看版本:docker version
    卸载:yum remove docker-ce
    查看窗口端口映射:docker ps
    查看所以容器(包括被关闭的):docker ps --all
    其它docker命令参数这里


    配置加速器

    由于访问官方镜像地址很慢,不得不配置国内的镜像,我这里使用阿里云的加速器,毕竟,我ECS,mysql,redis都使用阿里云的,那我加速器也使用它的,个人选择。
    登陆阿里云 - 开发者平台,和阿里云控制台帐号是通用帐号,登陆成功,左侧中间选择镜像加速器标签,结果如下:
    这里写图片描述
    按图式方法配置CentOS系统上Docker加速器:

    vi /etc/docker/daemon.json
    
    • 1

    修改文件如下

    {
      "registry-mirrors": ["https://l8ue6x6v.mirror.aliyuncs.com"]
    }
    
    • 1
    • 2
    • 3

    这里有几个其它的加速器,只要替换上面的地址即可
    网易加速器:http://hub-mirror.c.163.com
    官方中国加速器:https://registry.docker-cn.com
    ustc的镜像:https://docker.mirrors.ustc.edu.cn
    daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)

    重新加载配置,重启docker

    systemctl daemon-reload
    systemctl restart docker
    
    • 1
    • 2

    测试加速器效果
    摘取镜像

    docker pull busybox
    
    • 1

    成功打印出“hello world”说明阿里云加速器配置成功。

    docker run busybox echo “hello world” 
    
    • 1

    windown安装

    安装前准备:

    1. 电脑必需Hyper-V软件包才能安装官网下载社区版
    2. 如果您的系统不满足这些要求,您可以安装Docker Toolbox,它使用Oracle Virtual Box而不是Hyper-V。toolbox下载地址

    推荐文章DOCKER windows安装
    如果报Vboxmanager.exe Failed to create theVirtualBox object错误,则regedit找到注册表,

    1. 找到选项HKEY_CLASSES_ROOTCLSID{00020420-0000-0000-C000-000000000046}InprocServer32 的值,将默认的oleaut32.dll改成C:Windowssystem32oleaut32.dll
    2. 再找到HKEY_CLASSES_ROOTCLSID{00020424-0000-0000-C000-000000000046}InprocServer32 的值,将默认的oleaut32.dll也改成C:Windowssystem32oleaut32.dll
    3. 重启电脑

    注意:

    1. 默认的用户名和密码是: docker/tcuser
    2. 默认IP:192.168.99.100
      如果报This computer doesn't have VT-X/AMD-v enabled则需要进入电脑的BIOS里设置支付虚拟机。

    尝试开户nginx

    docker run -d -p 80:80 --name webserver nginx
    
    • 1

    windows上dockerTool使用详解

    dockerTool安装成功,桌面会显示
    这里写图片描述
    虚拟机目录:C:UsersAdministrator.dockermachinemachines,展示所以虚拟机
    每个虚拟机配置文件:C:UsersAdministrator.dockermachinemachinesdefaultconfig.json

    一般我们建议使用SecureCRT工具连接docker命令终端,为了就是操作方便,能复制粘贴,但我们不能忽略docker命令终端
    我们发现SecureCRT工具连接成功界面如下:
    这里写图片描述
    我们注意到docker@default:~$default其实是docker默认为我们创建的虚拟机名当连接成功时自动连接到默认虚拟机default上,所以在SecureCRT是没法使用docker-machine命令的,这个命令只能在docker命令终端(Docker Quickstart Terminal)里使用。

    docker-machine是一个在“本地”或者“云平台”上管理 docker-engine 的工具。在Linux上可以用它管理远程的docker,在mac/window上可以用它管理本地的 docker,它是一个管理工具,有自己的命令。

    docker-machine命令(在docker命令终端(Docker Quickstart Terminal)里使用)
    如果不指定 machine 的名称进行操作,则操作的 machine 默认为名称为 default 的 machine

    帮助信息

    docker-machine  命令 --help
    
    • 1

    展示所有虚拟机

    docker-machine ls
    
    • 1

    查看虚拟机环境变量

    docker-machine env default
    
    • 1

    结果如下:
    这里写图片描述
    虚拟机ip地址:192.168.99.100,开放端口:2376

    创建虚拟机

    docker-machine create --driver virtualbox default2
    
    • 1

    如果支持hyper-v,则命令中--driver virtualbox换成--driver hyperv
    指定阿里云加速器

    docker-machine create --driver virtualbox  --engine-registry-mirror https://l8ue6x6v.mirror.aliyuncs.com default2
    
    • 1

    指定ip地址:

    docker-machine create --driver virtualbox --generic-ip-address=192.168.119.105  --engine-registry-mirror https://l8ue6x6v.mirror.aliyuncs.com default2
    
    • 1

    指定ssh用户:

    docker-machine create --driver --generic-ssh-user mike  virtualbox --generic-ip-address=192.168.119.105  --engine-registry-mirror https://l8ue6x6v.mirror.aliyuncs.com default2
    
    • 1

    使用虚拟机

    eval $(docker-machine env default2)
    
    • 1

    查看虚拟机底层配置信息

    docker-machine inspect 虚拟机名
    
    • 1

    打印配置信息

    docker-machine config 虚拟机名
    
    • 1

    查看活动的Docker主机

    docker-machine active 虚拟机名
    
    • 1

    查看虚拟机ip

    docker-machine ip 虚拟机名
    
    • 1

    获得ip地址后,就可以用SecureCRT连接到对应的虚拟机上了。比如我连接到:192.168.99.101,name:docker,pwd:tcuser,连接到名cy虚拟机上即"docker@cy:~$"

    查看状态

    docker-machine status 虚拟机名
    
    • 1

    ssh登陆

    docker-machine ssh 虚拟机名
    
    • 1

    相当于SecureCRT工具连接。

    启动start/停止kill/stop/删除rm

    直接杀死Docker主机进程:docker-machine kill 虚拟机名
    先回收资源,再杀死进程:docker-machine stop 虚拟机名
    重启:docker-machine restart 虚拟机名
    启动:docker-machine start 虚拟机名
    删除:docker-machine rm虚拟机名

    更新docker虚拟机为最新版

    docker-machine upgrade 虚拟机名
    
    • 1

    获取主机的URL

    docker-machine url 虚拟机名
    
    • 1

    结果为tcp://192.168.99.100:2376

    常见错误

    要在启用关闭windos功能中开启Hyper-V

    注意,如果Hyper-V平台下的选项为灰色不可选,说明电脑的CPU虚拟化功能没有开启,这时要在开机时进入BIOS下开启此功能,具体操作参考:

    https://zhidao.baidu.com/question/1894752363981711700.html
    
    • 1

    png

    在运行官网demo时,在拉去镜像时如果出现

    no matching manifest for unknown in the manifest list entries
    错误时,鼠标点击docker图标,进入设置(settings)=> Daemon ,开启advance,把json 里面的experimental设置为true,保存重启docker即可。

    在构建文档中的demo镜像时出现

    docker demo Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt
    错误时,修改一下Dockerfile,添加 COPY requirements.txt requirements.txt,COPY app.py app.py。如下

    windows加速器

    sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速器地址 |g" /var/lib/boot2docker/profile 
    
    • 1

    例如https://l8ue6x6v1.mirror.aliyuncs.com
    或者修改C:UsersAdministrator.dockermachinemachinesdefaultconfig.json(以default为例)的RegistryMirror字段,修改为"RegistryMirror": ["https://l8ue6x6v.mirror.aliyuncs.com"],再重启,在/var/lib/boot2docker/profile看见一个–registry-mirror http://xxxxxx.m.daocloud.io了
    官方命令

    如果安装的是dockerTool而是Docker for Windows Installer那么安如下方式:
    在这里插入图片描述

    镜像位置

    windows下拉取镜像,挂载目录的路径都是C:ProgramDataDocker,如下图:
    在这里插入图片描述
    containers是当前所有的容器,包括没运行的容器。比如下图

    在这里插入图片描述
    文件夹名这containerId

    使用docker run -v 目录 命令挂载的内容相对路径是volumes,如下图
    在这里插入图片描述

    config是配置

    SecureCRT连接到docker虚拟机

    //查看虚拟机列表
    docker-machine ls
    //选择想连接的docker,然后找到ip地址
    docker-machine ip 虚拟机
    
    • 1
    • 2
    • 3
    • 4

    然后打开SecureCRT连接到上面得到的ip,name:docker,pwd:tcuser

    linux下dockerCompose安装

    docker-compose 是用来做docker 的多容器控制

    ##方案一(建议)
    官方安装步骤

    sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
     chmod +x /usr/local/bin/docker-compose
    
    • 1
    • 2

    方案二

    1. 首先检查linux有没有安装python-pip包,终端执行 pip -V
    2. 没有python-pip包就执行命令 yum -y install epel-release,安装成功后再次执行yum -y install python-pip
    3. 对安装好的pip进行升级 pip install --upgrade pip
    4. 执行安装docer-compose命令pip install docker-compose
    5. 验证是否安装成功docker-compose -version

    windows下dockerCompose安装

    官方安装步骤
    docker-compose发布版本下载
    实际上windows系统目前为止还不支持直接安装docker-compose,所以我们在docker虚拟机上安装。
    用SecureCRT工具连接到default虚拟机:
    ##获得root用户权限

    sudo -i
    
    • 1

    安装docker-compose

    curl -L https://github.com/docker/compose/releases/download/1.6.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    
    • 1

    测试

    docker-compose version
    
    • 1

    结果如下:
    这里写图片描述

    问题一:

    如果报You should consider upgrading via the 'pip install --upgrade pip' command.错误,则pip需要升级,执行pip install --upgrade pip

    问题二:

    如果python版本较低,则升级
    参考Linux 升级 Python 至 3.x

    问题三:

    如果报pkg_resources.DistributionNotFound: backports.ssl-match-hostname>=3.5 错误,
    更新backports.ssl-match-hostname的版本,在终端输入命令pip install --upgrade backports.ssl_match_hostname

    问题四:

    若出现如下错误

    Traceback (most recent call last):
      File "/usr/bin/docker-compose", line 7, in 
        from compose.cli.main import main
      File "/usr/lib/python2.7/site-packages/compose/cli/main.py", line 17, in 
        import docker
      File "/usr/lib/python2.7/site-packages/docker/__init__.py", line 2, in 
        from .api import APIClient
      File "/usr/lib/python2.7/site-packages/docker/api/__init__.py", line 2, in 
        from .client import APIClient
      File "/usr/lib/python2.7/site-packages/docker/api/client.py", line 5, in 
        import requests
      File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 58, in 
        from . import utils
      File "/usr/lib/python2.7/site-packages/requests/utils.py", line 32, in 
        from .exceptions import InvalidURL
      File "/usr/lib/python2.7/site-packages/requests/exceptions.py", line 10, in 
        from .packages.urllib3.exceptions import HTTPError as BaseHTTPError
      File "/usr/lib/python2.7/site-packages/requests/packages/__init__.py", line 95, in load_module
        raise ImportError("No module named '%s'" % (name,))
    ImportError: No module named 'requests.packages.urllib3'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    执行命令

    pip3 uninstall docker-py
    pip3 uninstall docker-compose
    pip3 install --upgrade --force-reinstall --no-cache-dir docker-compose
    
    • 1
    • 2
    • 3

    官方英文安装步骤

    1.centos
    2.Ubuntu
    3.Debian

    学习资源

    学习资源:
    docker中文社区
    Docker安装手册
    极力推荐docker很好的教程
    docker中文指南,docker中文文档

  • 相关阅读:
    从其它环境转移到Nacos的方法-NacosSync
    【grep】从html表格中快速定位某个数据
    简单上手Vuex
    Factorial Divisibility(数论,1600)
    基于战争优化算法(WSO)的光伏模型参数估计研究(Matlab代码实现)
    C++零碎记录(二)
    视频剪辑技巧,给每个视频添加不同背景图
    应对恶意IP攻击的有效方法
    2023年9月电子学会Python等级考试试卷(一级)答案解析
    垃圾分代收集的过程是怎样的?
  • 原文地址:https://blog.csdn.net/asdfadafd/article/details/126619552