购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

任务1.2
熟悉Docker的安装方法

任务要求

在工程师小王完成对Docker技术的调研后,公司安排小王编写Docker的安装手册,供公司相关技术人员学习,以便在公司内部推广该技术。

相关知识

1.2.1 Docker架构

Docker采用客户端/服务器(Client/Server,C/S)架构模式,Docker架构如图1-3所示。Docker Daemon作为服务器端接收客户端的请求,负责构建、运行和分发容器。客户端和服务器端可以运行在同一个Host上,客户端也可以通过Socket或REST API与远程的服务器端通信。

图1-3 Docker架构

Docker Daemon可以守护进程在宿主机后台运行,用户并不直接与其进行交互,而是通过Docker Client间接和其通信。Docker Client以系统命令的形式存在,用户使用Docker命令来与Docker Daemon交互。Docker Daemon接收用户指令并与Docker共同守护进程通信。

1.2.2 Docker的核心组件

Docker的核心组件包括Docker客户端(Client)、Docker服务器(Docker Daemon)、Docker镜像(Image)、Docker仓库和Docker容器(Container)。

1.Docker客户端

Docker客户端通过命令行或者其他工具使用Docker API与Docker的守护进程通信。

2.Docker服务器

Docker Daemon是服务器组件,以Linux后台服务的方式运行。

3.Docker镜像

Docker镜像就是一个只读的模板,镜像可以用于创建Docker容器,每一个镜像由一系列的层组成。例如,CentOS镜像中安装nginx,就成为nginx镜像,此时Docker镜像的层级概念就体现出来了:其底层是一个CentOS操作系统镜像,上面叠加一个nginx层,此时可以将CentOS操作系统镜像称为nginx镜像层的父镜像。常用的生成镜像的方法主要有以下3种。

(1)创建新镜像。

(2)下载并使用他人创建好的现成的镜像。

(3)在现有镜像上创建新的镜像。

用户可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称为Dockerfile,通过执行“docker build <docker-file>”命令可以构建出Docker镜像。这部分内容在后面的项目中会有详细说明。

4.Docker仓库

Docker仓库类似于代码仓库,它是Docker集中存放镜像文件的场所。有时候,人们会把Docker仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器是存放仓库的地方,其上往往存放着多个仓库,每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签来进行区分。

Docker仓库分为公有(Public)仓库和私有(Private)仓库两种形式。目前,最大的公有仓库是Docker Hub,存放了数量庞大的镜像供用户下载。国内不少云服务提供商(如时速云、阿里云等)提供了仓库的本地源,可以提供稳定的国内访问。当然,Docker也支持用户在本地网络中创建一个私有仓库。当用户创建了自己的镜像之后,可以使用push命令将其上传到公有或者私有仓库中,这样,当用户需在另一台主机上使用该镜像时,只需从仓库获取镜像。

5.Docker容器

Docker利用容器来运行应用。容器是从镜像创建的运行实例,它可以被启动、开始、终止、删除。容器是一个隔离环境,多个容器之间不会相互影响,以保证容器中的应用运行在一个相对安全的环境中。

1.2.3 Docker的版本分类

Docker的早期版本是docker-io,版本号是1.*,最新版是1.13。Docker从1.13版本之后采用时间线的方式作为版本号,分为Docker CE(社区版)和Docker EE(企业版)。

Docker CE(社区版)是免费提供给个人开发者和小型团体使用的,Docker EE(企业版)会提供额外的收费服务,如经过官方测试认证的基础设施、容器、插件等。

Docker现在的版本格式为<YY.MM>。Docker CE(社区版)按照Stable和Edge两种方式发布,每个季度更新Stable版本,每个月份更新Edge版本。例如,使用基于月份的发行版本,19.03的第1版就指向17.03.0,如果有漏洞/安全修复需要发布,那么将会指向19.03.1等。

任务实现

1.在CentOS 7中在线安装Docker

(1)检查安装Docker的基本要求:64位CPU架构的计算机,目前不支持32位CPU架构的计算机;系统的Linux内核版本为3.10及以上;开启CGroups和namespace功能。本任务是将Docker安装在VMware Workstation虚拟机中,因此需保证将虚拟机的网卡设置为桥接模式。

(2)通过uname -r命令查看当前系统的内核版本。


[root@localhost ~]# uname -r  //查看Linux内核版本 
3.10.0-327.el7.x86_64  

(3)关闭防火墙,并查询防火墙是否关闭。


[root@localhost ~]# systemctl stop firewalld   //关闭防火墙 
[root@localhost ~]# systemctl disable firewalld   //设置开机禁用防火墙 
[root@localhost ~]# systemctl status firewalld   //查看防火墙状态 
   firewalld.service - firewalld - dynamic firewall daemon 
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor 
preset: enabled) 
    Active: inactive (dead) 

若出现“Active: inactive (dead)”提示,则表示防火墙已关闭。

(4)修改/etc/selinux目录中的config文件,设置SELINUX为disabled后,保存并退出文件。


[root@localhost ~]# setenforce 0 
[root@localhost  ~]# vi /etc/selinux/config 
SELINUX=disabled       //  将 SELINUX设置为disabled 

(5)修改网卡配置信息。


[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736  
TYPE=Ethernet 
BOOTPROTO=static 
IPADDR=192.168.51.101 // 设置IP地址为192.168.51.101 
NETMASK=255.255.255.0 // 设置子网掩码为255.255.255.0 
GATEWAY=192.168.51.1   // 设置网关地址为192.168.51.1 
DNS1=114.114.114.114   // 设置DNS服务器地址为114.114.114.114 
ONBOOT=yes 

保存退出,重启网卡。


[root@localhost ~]# systemctl restart  network 

测试与外网的连通性。


[root@localhost ~]# ping -c 4 www.sina.com.cn 
...... 
--- spool.grid.sinaedge.com ping statistics --- 
4 packets transmitted, 4 received, 0% packet loss, time 3005ms 
rtt min/avg/max/mdev = 2.722/3.228/3.647/0.337 ms 

从“4 packets transmitted, 4 received, 0% packet loss”提示信息可知,与外网是连通的。

(6)配置时间同步,可以选用公网NTPD服务器或者自建NTPD服务,本书使用阿里云的时间服务器。


[root@localhost ~]# yum -y install ntpdate 
[root@localhost ~]# ntpdate ntp1.aliyun.com    

(7)如果安装过旧版本,则需卸载已安装的旧版本;反之,此步骤可以跳过。


[root@localhost  ~ ]# yum remove docker docker-common docker-selinux 
docker-engine 10 

(8)安装必需的软件包。


[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 

(9)设置docker-ce的yum源。


[root@localhost ~]# yum-config-manager --add-repo  
 https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

(10)查看仓库中的所有Docker版本,根据需求选择特定版本进行安装,本书选择安装Docker 18.03.0.ce版本。


[root@localhost ~]# yum makecache fast 
[root@localhost  ~]# yum list docker-ce -showduplicates //查看Docker版本信息 
Loading mirror speeds from cached hostfile 
Loaded plugins: fastestmirror 
docker-ce.x86_64            3:18.09.2-3.el7                     docker-ce-stable 
docker-ce.x86_64            3:18.09.1-3.el7                     docker-ce-stable 
docker-ce.x86_64            3:18.09.0-3.el7                     docker-ce-stable 
docker-ce.x86_64            18.06.2.ce-3.el7                    docker-ce-stable 
docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable 
docker-ce.x86_64            18.06.0.ce-3.el7                    docker-ce-stable 
docker-ce.x86_64            18.03.1.ce-1.el7.centos            docker-ce-stable 
docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable 
docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stable 
...... 
Available Packages 
[root@localhost  ~ ]# yum install -y docker-ce-18.03.0.ce   // 安装 Docker 
18.03.0.ce 

也可以使用如下命令进行安装Docker最新版本。


[root@localhost ~]# yum install -y docker-ce  // 安装docker-ce最新版 

说明: 本书选择安装Docker 18.03.0.ce版本。

(11)启动Docker,服务并设置Docker服务开机自启动。


[root@localhost ~]# systemctl start docker   //启动Docker服务 
[root@localhost ~]# systemctl enable docker //设置开机自启动Docker服务

利用ps命令,查看Docker进程是否已启动。


[root@localhost ~]# ps -ef | grep docker 
root 14422 1    0 12:07 ?  00:00:00  /usr/bin/dockerd 
root 14427 14422    1 12:07 ?  00:00:01  docker-containerd... 
root 14681 2496  0 12:09 pts/1 00:00:00  grep --color=auto docker 

也可利用docker version命令查看已安装Docker的版本。


[root@localhost ~]# docker version 
Client: 
 Version:       18.03.0-ce 
 API version:   1.37 
 Go version:    go1.9.4 
 Git commit:    0520e24 
 Built: Wed Mar 21 23:09:15 2018 
 OS/Arch:         linux/amd64 
 Experimental:  false 
 Orchestrator:  swarm 
 
Server: 
 Engine: 
  Version:      18.03.0-ce 
  API version:  1.37 (minimum version 1.12) 
  Go version:   go1.9.4 
  Git commit:   0520e24 
  Built:        Wed Mar 21 23:13:03 2018 
  OS/Arch:        linux/amd64 
  Experimental: false 

(12)配置镜像加速器。因国内访问Docker Hub 有时会遇到困难,故可以配置镜像加速器。国内很多云服务商提供了加速器服务,如阿里云加速器、DaoCloud 加速器、灵雀云加速器等,在此选择阿里云加速器。


[root@localhost ~]# vi /etc/docker/daemon.json 

添加以下内容后,保存并退出,并重启Docker服务。


{ 
  "registry-mirrors": ["https://x3n9jrcg.mirror.aliyuncs.com"] 
} 
[root@localhost ~]# systemctl daemon-reload   // 重新加载系统配置 
[root@localhost ~]# systemctl restart docker  // 重启Docker服务 

(13)运行nginx镜像来测试是否安装成功。


[root@localhost ~]# docker run -dit -p 80:80 nginx:latest 

打开浏览器,在地址栏中输入“http://192.168.51.101”,若显示图1-4所示的容器内容,则表示Docker环境已经安装完成,并能正常运行。

2.在CentOS 7中离线安装Docker

(1)在可联网的主机上制作Docker本地安装包。

①关闭firewalld防火墙,并临时关闭SELINUX。


[root@localhost ~]# systemctl stop firewalld 
[root@localhost ~]# setenforce 0 

图1-4 显示的容器内容

②创建离线包存储目录,并设置读写权限。


[root@localhost ~]# mkdir -p /opt/docker 
[root@localhost  ~]# chmod -R 777 /opt/docker 

③下载离线包到/opt/docker目录中。


[root@localhost  ~ ]# yum install --downloadonly --downloaddir=/opt/docker 
yum-utils device-mapper-persistent-data lvm2 createrepo 

④安装必备的软件包,并进行时间同步。


[root@localhost ~]# yum -y install ntpdate yum-utils createrepo 
[root@localhost ~]# ntpdate ntp1.aliyun.com 

⑤创建Docker的yum源。


[root@localhost ~]# yum-config-manager --add-repo  
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

⑥更新yum源索引,下载离线docker-ce包,版本号为18.03.0。


[root@localhost ~]# yum makecache fast 
[root@localhost  ~ ]# yum install --downloadonly --downloaddir=/opt/docker/ 
docker-ce-18.03.0.ce 

⑦下载密钥文件。


[root@localhost ~]# cd /opt/docker/ 
[root@localhost docker]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/gpg 

⑧初始化安装源repodata。


[root@localhost docker]# createrepo -pdo /opt/docker /opt/docker 1[root@localhost docker]# createrepo --update /opt/docker 

⑨将制作的安装文件打包。


[root@localhost docker]# tar -zcvf docker-local.tar.gz * 
[root@localhost docker]# ls docker-local.tar.gz  
docker-local.tar.gz 

docker-local.tar.gz文件为制作好的离线安装源,将该文件导出。

(2)在离线的主机上安装Docker。

①利用uname -r命令查看当前系统的内核版本。


[root@localhost ~]# uname -r //查看Linux内核版本 
3.10.0-327.el7.x86_64        

②关闭防火墙,并查询防火墙是否关闭。


[root@localhost ~]# systemctl stop firewalld 
[root@localhost  ~]# systemctl disable firewalld 
[root@localhost  ~]# systemctl status firewalld 
     firewalld.service - firewalld - dynamic firewall daemon 
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; 
vendor preset: enabled) 
     Active: inactive (dead) 

若出现“Active: inactive (dead)”提示,则表示防火墙已关闭。

③修改/etc/selinux目录中的config文件,设置SELINUX为disabled后,保存并退出文件。


[root@localhost ~]# setenforce 0 
[root@localhost  ~]# vi /etc/selinux/config 
SELINUX=disabled       //  将 SELINUX设置为disabled 

④将docker-local.tar.gz文件上传到离线的主机,本书将文件复制到/opt目录,将docker-local.tar.gz文件解压到/opt/docker目录。


[root@localhost ~]# mkdir -p /opt/docker 
[root@localhost ~]#  tar -zxvf /opt/docker-local.tar.gz -C  /opt/docker 

⑤配置docker-ce的yum源。


[root@localhost ~]# rm -ivf /etc/yum.repos.d/ *.repo  // 删除原有的repo文件 
[root@localhost docker]# vi /etc/yum.repos.d/docker-ce.repo 
// 添加如下内容 
[docker] 
name=docker ce 
baseurl=file:///opt/docker 
gpgcheck=0 
enabled=1 
gpgkey=file:///opt/docker/gpg 

⑥安装必备的软件包。


[root@localhost docker]# yum -y install deltarpm libxml2-python python-deltarpm 
createrepo 

⑦构建本地安装源。


[root@localhost docker]# createrepo -d /opt/docker/repodata 
[root@localhost docker]# yum clean all 
[root@localhost docker]# yum makecache 
[root@localhost docker]# yum repolist 

⑧安装并启动Docker,利用clocker Version命令查看已安装Docker的版本。


[root@localhost docker]# yum -y install docker-ce 
[root@localhost docker]# systemctl start docker 
[root@localhost docker]# systemctl enable docker 
[root@localhost docker]# docker version 
Client: 
 Version:       18.03.0-ce 
 API version:   1.37 
 Go version:    go1.9.4 
 Git commit:    0520e24 
 Built: Wed Mar 21 23:09:15 2018 
 OS/Arch:         linux/amd64 
 Experimental:  false 
 Orchestrator:  swarm 
 
  Server: 
  Engine: 
  Version:      18.03.0-ce 
  API version:  1.37 (minimum version 1.12) 
  Go version:   go1.9.4 
  Git commit:   0520e24 
  Built:        Wed Mar 21 23:13:03 2018 
  OS/Arch:       linux/amd64 
 Experimental: false 

3.在Windows操作系统中安装Docker

(1)安装Docker的基本要求:64位操作系统,版本为Windows 7或更高;支持Hardware Virtualization Technology功能,并且要求开启Virtualization功能。

(2)双击运行下载的DockerToolbox.exe文件,弹出“打开文件-安全警告”对话框,如图1-5所示。

图1-5 “打开文件-安全警告”对话框

(3)单击“运行”按钮,打开“Setup-Docker Toolbox”窗口,如图1-6所示。

图1-6 “Setup-Docker Toolbox”窗口

(4)单击“Next”按钮,选择安装路径,这里默认选择C盘,如图1-7所示。

(5)单击“Next”按钮,勾选所需的组件,如图1-8所示。

图1-7 选择安装路径

图1-8 勾选所需的组件

(6)单击“Next”按钮,选择是否需要创建快捷方式,添加环境变量到PATH路径中等,再次单击“Next”按钮。

(7)确认Docker Toolbox的安装选项,如安装路径、所需安装的组件等,如图1-9所示,单击“Install”按钮。

注意: 在Docker Toolbox的安装过程中会出现其他应用的安装过程,如Oracle Corporation等系列软件,选择全部进行安装即可。

安装结束后,在桌面上可看到图1-10所示的Docker应用程序的快捷方式图标。

图1-9 确认Docker Toolbox的安装选项

图1-10 Docker应用程序的快捷方式图标

(8)双击“Docker Quickstart Terminal”图标,打开“Docker Quickstart Terminal”应用,Terminal会自动进行一些设置,当进入图1-11所示的Docker运行界面时,表示Docker安装完成。

图1-11 Docker运行界面 NtgQgPOVU7be8xuJ6wLZ9BX30RNgXK9dcsfDv4gWk6WJMKLvi/3KzZog0IByXTcO

点击中间区域
呼出菜单
上一章
目录
下一章
×