Docker有Docker CE(社区版)和Docker EE(企业版)两个版本,Docker CE 是免费的,但是包含了完整的 Docker 功能,本文基于CentOS 7和Docker CE搭建Docker环境。

CentOS 7安装

  1. 安装必要的一些系统工具

    yum install -y yum-utils device-mapper-persistent-data lvm2
  2. 为了提升安装速度,可以使用阿里云提供的yum源

    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  3. 更新并安装Docker CE

    yum makecache fast
    yum -y install docker-ce
  4. 开启Docker服务

    service docker start
  5. 安装校验

    docker version
  6. 进入阿里云镜像加速器页面(需要登录),或者进入DaoCloud镜像站(不需要登录),根据提示配置镜像加速器
  7. 查看镜像加速器配置

    docker info

Windows 10安装

通常Docker运行在Linux环境下,但是由于开发,调试工作往往在Windows平台完成,因此,Docker Desktop for Windows往往是必不可少的。
首先,到Docker官网下载Docker Desktop for Windows,直接点击安装。
安装完成后,Docker会自动运行,如果一切顺利,自然万事大吉,但事情往往不会尽如人意,比如可能会出现如下错误:

image.png

这是因为Docker for Windows需要依赖一下两个条件:

  1. 安装并运行Hyper-V(需要Windows 10专业版),详见,在Windows 10上安装Hyper-V,结果如下:
    image.png
  2. 到BIOS中启用虚拟化,具体配置跟电脑相关,不做介绍,最后结果如下,显示已启用则表示设置正常:
    image.png

经过以上两个步骤以后,Docker就可以正常运行了。

基于VMware安装

前面提到的方法简便快捷,在一般情况下是适用的。但是,由于Hyper-V必须运行在Windows 10专业版及以上的版本(官方声明请勿在 Windows 10 家庭版上安装 Hyper-V 角色)。
另外,众所周知,Hyper-V跟VMware不兼容,这就导致正在使用VMware的用户无法使用Docker for Windows,本节介绍基于VMware驱动的DockerMachine安装方法,以适应部分习惯于使用VMware的用户。

安装DockerMachine

  1. 下载DockerToolbox-19.03.1.exe
  2. 通过DockerToolbox安装DockerMachine(不要双击,通过命令不安装VirtualBox);

     ./DockerToolbox-19.03.1.exe /COMPONENTS="Docker,DockerMachine"
  3. Docker Compose for WindowsGit for Windows(如果已经安装过则不需要安装)一并安装,前者是用于定义和运行多容器应用程序的工具,后者用来运行start.sh脚本。
    image.png
  4. 将DockerToolbox安装目录下(我的是D:\Program Files\Docker Toolbox)的start.sh文件内容替换为如下脚本,其中PATH指向VMware的安装目录(我的是D:\Program Files (x86)\VMware\VMware Workstation);

    #!/bin/bash
    
    export PATH="$PATH:/mnt/d/Program Files (x86)/VMware/VMware Workstation"
    
    trap '[ "$?" -eq 0 ] || read -p "Looks like something went wrong in step ´$STEP´... Press any key to continue..."' EXIT
    
    VM=${DOCKER_MACHINE_NAME-default}
    DOCKER_MACHINE=./docker-machine.exe
    
    BLUE='\033[1;34m'
    GREEN='\033[0;32m'
    NC='\033[0m'
    
    if [ ! -f "${DOCKER_MACHINE}" ]; then
      echo "Docker Machine is not installed. Please re-run the Toolbox Installer and try again."
      exit 1
    fi
    
    vmrun.exe list | grep \""${VM}"\" &> /dev/null
    VM_EXISTS_CODE=$?
    
    set -e
    
    STEP="Checking if machine $VM exists"
    if [ $VM_EXISTS_CODE -eq 1 ]; then
      "${DOCKER_MACHINE}" rm -f "${VM}" &> /dev/null || :
      rm -rf ~/.docker/machine/machines/"${VM}"
      #set proxy variables if they exists
      if [ -n ${HTTP_PROXY+x} ]; then
        PROXY_ENV="$PROXY_ENV --engine-env HTTP_PROXY=$HTTP_PROXY"
      fi
      if [ -n ${HTTPS_PROXY+x} ]; then
        PROXY_ENV="$PROXY_ENV --engine-env HTTPS_PROXY=$HTTPS_PROXY"
      fi
      if [ -n ${NO_PROXY+x} ]; then
        PROXY_ENV="$PROXY_ENV --engine-env NO_PROXY=$NO_PROXY"
      fi  
      "${DOCKER_MACHINE}" create -d vmwareworkstation $PROXY_ENV "${VM}"
    fi
    
    STEP="Checking status on $VM"
    VM_STATUS="$(${DOCKER_MACHINE} status ${VM} 2>&1)"
    if [ "${VM_STATUS}" != "Running" ]; then
      "${DOCKER_MACHINE}" start "${VM}"
      yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"
    fi
    
    STEP="Setting env"
    eval "$(${DOCKER_MACHINE} env --shell=bash ${VM})"
    
    STEP="Finalize"
    clear
    cat << EOF
    
                            ##         .
                      ## ## ##        ==
                   ## ## ## ## ##    ===
               /"""""""""""""""""\___/ ===
          ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
               \______ o           __/
                 \    \         __/
                  \____\_______/
    
    EOF
    echo -e "${BLUE}docker${NC} is configured to use the ${GREEN}${VM}${NC} machine with IP ${GREEN}$(${DOCKER_MACHINE} ip ${VM})${NC}"
    echo "For help getting started, check out the docs at https://docs.docker.com"
    echo
    cd
    
    docker () {
      MSYS_NO_PATHCONV=1 docker.exe "$@"
    }
    export -f docker
    
    if [ $# -eq 0 ]; then
      echo "Start interactive shell"
      exec "$BASH" --login -i
    else
      echo "Start shell with command"
      exec "$BASH" -c "$*"
    fi

安装vmware驱动程序

下载docker-machine-driver-vmwareworkstation.exe,并保存到docker-machine.exe的同级目录(D:\Program Files\Docker Toolbox);

创建DockerMachine

  1. 右键桌面Docker Quickstart Terminal快捷方式,指定git bash安装路径(如果上面选择安装了Git for Windows,则不用修改)
    image.png
  2. 将路径D:\Program Files\Docker Toolbox添加到环境变量;
  3. 启动VMware服务,双击Docker Quickstart Terminal快捷方式创建基于VMware的Docker Machine;
  4. 也可通过如下命令创建

    docker-machine create --driver=vmwareworkstation dev
  5. 验证安装

    PS C:\> docker-machine ls
    NAME      ACTIVE   DRIVER              STATE     URL                         SWARM   DOCKER     ERRORS
    default   -        vmwareworkstation   Running   tcp://192.168.72.129:2376           v19.03.5
    dev       -        vmwareworkstation   Running   tcp://192.168.72.128:2376           v19.03.5
  6. 登录Docker实例

    docker-machine ssh default
    docker-machine ssh dev

连接Docker Engine

配置环境变量,使得本机可以连接虚拟机中运行的Docker Engine。

  1. 查看环境变量

    PS C:\> docker-machine env default
    $Env:DOCKER_TLS_VERIFY = "1"
    $Env:DOCKER_HOST = "tcp://192.168.72.129:2376"
    $Env:DOCKER_CERT_PATH = "C:\Users\xxx\.docker\machine\machines\default"
    $Env:DOCKER_MACHINE_NAME = "default"
    $Env:COMPOSE_CONVERT_WINDOWS_PATHS = "true"
    # Run this command to configure your shell:
    # & "D:\Program Files\Docker Toolbox\docker-machine.exe" env default | Invoke-Expression
  2. 配置环境变量

    & "D:\Program Files\Docker Toolbox\docker-machine.exe" env default | Invoke-Expression
  3. 检验安装

    PS C:\> docker version
    Client:
     Version:           19.03.1
     API version:       1.40
     Go version:        go1.12.7
     Git commit:        74b1e89e8a
     Built:             Wed Jul 31 15:18:18 2019
     OS/Arch:           windows/amd64
     Experimental:      false
    
    Server: Docker Engine - Community
     Engine:
      Version:          19.03.5
      API version:      1.40 (minimum version 1.12)
      Go version:       go1.12.12
      Git commit:       633a0ea838
      Built:            Wed Nov 13 07:28:45 2019
      OS/Arch:          linux/amd64
      Experimental:     false
     containerd:
      Version:          v1.2.10
      GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
     runc:
      Version:          1.0.0-rc8+dev
      GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
     docker-init:
      Version:          0.18.0
      GitCommit:        fec3683

至此,Docker就安装完成了。


煮诗君
1 声望3 粉丝