核心概念与安装配置

核心概念与安装配置

本章首先介绍Docker的三大核心概念:
口镜像(Image)
口容器(Container)
口仓库(Reposit。可)
只有理解了这三个核心概念,才能顺利地理解Docker容器的整个生命周期。
随后,笔者将介绍如何在常见的操作系统平台上安装Docker,包括Ubun阳、 CentOS、
MacOS和Windows等主流操作系统。

核心概念
Docker大部分的操作都围绕着它的三大核心概念: 镜像、容器和仓库。因此,准确把握
这三大核心概念对于掌握Docker技术尤为重要。

  1. Docker镜像
    Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。
    例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了Apache应用程序(或
    用户需要的其他软件)。可以把它称为一个Apache镜像。
    镜像是创建Docker容器的基础。
    通过版本管理和增量的文件系统, Docker提供了一套十分简单的机制来创建和更新现有
    的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用。

第 2 章核心概念与安装配置

  1. Docker容器
    Docker容器类似于一个轻量级的沙箱, Docker利用容器来运行和隔离应用。
    容器是从镜像创建的应用运行实例。 它可以启动、开始、停止、 删除,而这些容器都是
    彼此相互隔离、互不可见的。
    可以把容器看作一个简易版的Linux系统环境(包括root用户权限、进程空间、用户空
    间和网络空间等)以及运行在其中的应用程序打包而成的盒子。

@主镜像自身是只读的。 容器从镜像启动的时候,会在镜像的最上层创建一个可写层。

  1. Docker仓库
    Docker仓库类似于代码仓库,是Docker集中存放镜像文件的场所。
    有时候我们会将Docker仓库和仓库注册服务器(Regis町)混为一谈,并不严格区分。 实
    际上,仓库注册服务器是存放仓库的地方,其上往往
    存放着多个仓库。每个仓库集中存放某一类镜像,往
    往包括多个镜像文件,通过不同的标签(tag)来进行
    区分。 例如存放Ubuntu操作系统镜像的仓库,被称 || Ubuntu仓库 I I CentOS仓库
    为Ubuntu仓库,其中可能包括16.04、 18. 04 等不同
    版本的镜像。仓库注册服务器的示例如图二l所示。
    根据所存储的镜像公开分享与否, Docker仓库
    可以分为公开仓库(Public)和私有仓库(Private)两种形式。

注册服务椿
图2-1 注册服务器与仓库

目前,最大的公开仓库是官方提供的DockerHub,其中存放着数量庞大的镜像供用户下
载。 国内不少云服务提供商(如腾讯云、 阿里云等)也提供了仓库的本地源,可以提供稳定
的国内访问。
当然,用户如果不希望公开分享自己的镜像文件, Docker也支持用户在本地网络内创建
一个只能自己访问的私有仓库。
当用户创建了自己的镜像之后就可以使用push命令将它上传到指定的公有或者私有仓
库。 这样用户下次在另外一台机器上使用该镜像时,只需要将其从仓库上pull下来就可以了。

♂h洼 可以看出, Docker利用仓库管理镜像的设计理念与Git代码仓库的概念非常相似,实

  • 际上Docker设计上借鉴了Git的很多优秀思想。

2.2 安装Docker引擎
Docker引擎是使用Docker容器的核心组件,可以在主流的操作系统和云平台上使用,
包括Linux操作系统(如Ubuntu、Debian,CentOS、Red.hat等),macOS和Windows操作系统,
以及IBM、亚马逊、微软等知名云平台。

12 第一部份基础入门

用户可以访问Docker官网的GetDocker ( https://www.docker.com/get-docker)页面,查
看获取Docker的方式,以及Docker支持的平台类型,如图2-2所示。

Get starred with Docker, the world's leading software container platform lo modernize applications without disruption. Docker is available as Community Edition (CE) and
Enterprise Edition (EE), with opυmJZed Installers for a varie叩ofinfrastructure. The Docker platform and associated toolchair、providesthe following features as a baseline for
both CE and EE
图2-2 获取Docker
目前Docker支持Docker引擎、 DockerHub、 DockerCloud等多种服务。
D Docker引擎:包括支持在桌面系统或云平台安装Docker,以及为企业提供简单安全
弹性的容器集群编排和管理;
口DockerHub:官方提供的云托管服务,可以提供公有或私有的镜像仓库;
口DockerCloud:官方提供的容器云服务,可以完成容器的部署与管理,可以完整地支
持容器化项目,还有CI、 CD功能。
Docker引擎目前分为两个版本:社区版本(Community Edition, CE)和企业版本
(Enterprise Edition, EE)。 社区版本包括大部分的核心功能,企业版本则通过付费形式提供
认证支持、镜像管理、 容器托管、 安全扫描等高级服务。 通常情况下,用户使用社区版本可
以满足大部分需求;若有更苛刻的需求,可以购买企业版本服务。 社区版本每个月会发布一
次尝鲜(Edge)版本,每个季度( 3 、 6 、 9 、 12 月)会发行一次稳定(Stable)版本。 版本号
命名格式为“年份.月份”,如 2018 年 6 月发布的版本号为vl8.06。
笔者推荐首选在Linux环境中使用Docker社区稳定版本,以获取最佳的原生支持体验。
本书如无特殊说明,则以社区版本的稳定版为例进行说明。

2.2.1 Ubuntu环境下安装Doeke「

1.系统要求
Ubuntu操作系统对Docker的支持十分成熟,可以支持包括x86_64、 arm町、 s390x(IBM
Z)、 ppc64le等系统架构,只要是 64 位即可。

第2 章核心概念与安装配置 令13

Docker目前支持的最低Ubuntu版本为 14.04LTS,但实际上从稳定性上考虑,推荐使用
1 6. 04 LTS或18 .0.4LTS版本,并且系统内核越新越好,以支持Docker最新的特性。
用户可以通过如下命令检查自己的内核版本详细信息:
$ uname -a
Linux localhost 4 9 36-x86 64-generic
或者:
$ cat /proc/version
Linux version 4.9.36-x86_64-gener工c (maker@linux.com) (gee version 4. 9. 2 (Debian
4.92 10))
如果使用Ubuntu 1 6.04 LTS版本,为了让Docker使用aufs存储,推荐安装如下两个
软件包:
$ sudo apt-get update
$ sudo apt-get install -y
linux-image-extra $(uname -r)
linux image-extra-virtual

t"A主 Ubuntu发行版中, LTS( Long-Term-Support)意味着更稳定的功能和更长期(目前为
-- 5 年)的升级支持,生产环境中推荐尽量使用LTS版本。

2 .添加镜像源
首先需要安装apt-transport-https等软件包支持https协议的源:
$ sudo apt-get update
$ sudo apt-get 工nstall
apt-transport https
ca-certificates
curl
software-properties-common
添加源的gpg密钥:
$ curl -fsSL https://download.docker.com/l工nux/ubuntu/gpg I sudo apt key add -
OK
确认导人指纹为“ 9 DC8 5822 9FC7 DD38854 A E2D8 8D8 I 803C OEBF CD饵”的GPG
公钥:

$ sudo apt-key fingerprint OEBFCDBB
pub 4096R/OEBFCD88 2017-02-
Key fingerpr工nt ; 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C OEBF CDBB
uid Docker Release (CE deb) <docker@docker. com>
sub 4096R/F273FCD82017 02-
获取当前操作系统的代号:
$ lsb release -cs
xenial

14 令 第一部分基础入门

一般情况下, Ubuntu16.04 LTS代号为xenial, Ubuntu 18 .04 LTS代号为bionic。
接下来通过如下命令添加Docker稳定版的官方软件源,非xenial版本的系统注意修改
为自己对应的代号:

丰 sudoadd-apt-repository
"deb [arch~amd64) https://download.docker.com/linux/ubuntu
xenial
stable ”
添加成功后,再次更新apt软件包缓存:
$ s udo apt-get update
3.开始安装Docker
在成功添加源之后,就可以安装最新版本的Docker了,软件包名称为docker-ce,代表
是社区版本:

$ s udo apt-get install -y docker-ce
如果系统中存在较旧版本的Docker,会提示是否先删除,选择是即可。
除了基于手动添加软件源的方式之外,也可以使用官方提供的脚本来自动化安装Docker:
$ sudo curl -sSL https://get.docker.com/ I sh
安装成功后,会自动启动Dock巳r服务。
用户也可以指定安装软件源中其他版本的Docker:
$ sudo apt-cache madison docker-ce
docker-ce I 17. 11. o~ce-0-ubuntu I https: I /download. docker. com/linux/ubuntu
xen工al/edge amd64 Packages
docker-ce I 17.10.0-ce-O~ubuntu I https: //download. docker. com/linux/ubuntu
xen工al /edgeamd64 Packages
docker-ce I 17.09.l句ce-0~ubuntu I https: I /download. docker. com/linux/ubuntu
xen工al/stableamd64 Packages
$ sudo apt-get install docker-ce=l7.ll.O句ce-0-ubuntu

2.2.2 CentOS环境下安装Docker
Docker目前支持CentOS 7 及以后的版本。 系统的要求跟Ubuntu情况类似, 64 位操作
系统,内核版本至少为3.10。
首先,为了方便添加软件源,以及支持devicemapper存储类型,安装如下软件包:
$ s udo yum update
$ sudo yum instal l -y yum-utils
device-mapper-persistent-data
lvm
添加Docker稳定版本的yum软件源:
$ sudo yum-conf ig-manager \

第 2 章核心概念与安装配置 令 15

add-repo
https://download.docker.corn/linux/centos/docker-ce.repo
之后更新yum软件源缓存,并安装Docker:
$ sudo yum update
$ sudo yum install -y docker-ce
最后,确认Docker服务启动正常:
$ sudo systernctl start docker

2.2.3 通过脚本安装
用户还可以使用官方提供的shell脚本来在Linux系统(目前支持山untu、 Debian、
Oracleserv町、 Fedora、 Centos、 OpenSuse、 Gentoo等常见发行版)上安装Docker的最新正式
版本,该脚本会自动检测系统信息并进行相应配置:
$ curl -fsSL https://get.docker. corn/ I sh
或者:
$ wget -qO- https://get.docker.corn/ I sh
如果想尝鲜最新功能,可以使用下面的脚本来安装最新的“尝鲜”版本。 但要注意,非
稳定版本往往意味着功能还不够稳定,不要在生产环境中使用:
$ curl -fsSL https 😕/test.docker.corn/ I sh
另外, 也可以从store.docker.com/search?offering=community&q=&type=edition找到各个
平台上的Docker安装包,自行下载使用。

2.2.4 macOS环境下安装Docke「
Docker官方非常重视其在Mac环境下的易用性。 由于大量开发者使用Mac环境进行开
发,而Docker是一个完整的容器化应用的开发环境,所以Docker官方提供了简单易用的
Docker for Mac ( https://docs.docker.com/docker-for-mac/)工具。 Dockerfor Mac其实是一个完
整的DockerCE工具。 下面我们一步步讲解如何正确安装Dockerfor Mac。
1 .选择版本
目前用户可以选择稳定版(Stable)或测试版(Beta),这两个版本都可以通过配置Docker
Daemon来开启一些实验特性。 配置时,只要启动Dockerdaemon时带上--experime口tal
参数即可。 或者通过修改/etc/docker/daemon.jso口配置文件中的experimental字
段,如下所示:

"experimental" : true

16 第一部分基础入门

也可以使用如下指令直接确认实验特性是否开启:
$ docker version -f ’{{.Server.Experimental}}’
true
目前的实验特性主要有ipvlan网络驱动、显卡插件、分布式应用包(Distributed
Application Bundles)、监测点(Checkpoint)、回滚(Restore),以及使用squash参数构建镜
像。 详细的实验特性说明可参见https://github.com/docker/docker-ce/blob/master/components/
cli/experimental/README.md。
官方建议在生产环境中关闭这些实验特性。
稳定版(stable channel)经过完整测试和精心维护,可用于关注稳定性的生产环境。 稳
定版每个季度( 3 个月)发布一次。 稳定版用户可以选择是否允许Docker收集使用情况统计
或其他数据。 稳定版下载地址为https://download.docker.com/mac/stable/Docker.dmg。
测试版(edgechannel)包含最新的工具和特性,甚至会包含一些开发中的特性。 测试版
适用于希望尝鲜井有能力处理异常或Bug的用户,并且默认收集所有用户使用数据。 测试版
每月发布一次。 测试版下载地址为https://download.docker.com/mac/edge/Docker.dmg。

2.安装须知
Docker for Mac与DockerMachine的关系是互不影响。 用户可以从本地defaultmachine
拷贝容器和镜像至Dockerfor Mac的HyperKitVM中。 Hyp巳rKit是Docker开源的支持osx
的轻量级虚拟化工具包。 它基于MacOSX10.10之后引人的Hypervisor框架。 HyperKit应用
可以利用硬件虚拟化运行VM,但无须特殊权限或者复杂的管理工具钱。 关于HyperKit的详
细信息参见https://github.com/moby/hyperkit。
当用户运行Dockerfor Mac时,本机或远程均元须运行DockerMachine。 用户使用的
是一套新的原生虚拟化系统,不再需要Virtua!Box。 如果希望了解更多两者对比情况,参见
https://docs.docker.com/docker-for-mac/docker-toolbox/。
Docker for Mac支持macOSEl Capitan 10.11及其后续版本。 最小要求是macOSYosemite
10 .10.3,同时Docker并不保证可以完全支持10.10.X, Docker for Mac从版本1.13开始,不
再支持10.10版本的macOSo
3.下载运行Dockerfor Mac
首先,选择需要的版本并下载。 双击打开Docker.dmg
文件,将Docker.app拖至应用程序(或Applications)文件
夹即可。
Docker应用启动后,在任务栏会多出一个小图标,如
图 2 -3所示。
用户可以通过这个图标打开Docker应用,并进行配置。
4.验证
安装成功后,可以确认运行的Docker版本信息。 如果固2-3 下载Dockerfor Mac后

第 2 章核心概念与安装配置 令 17

用户环境己安装过Docker环境,则可能存在老版docker-py,为了防止冲突,需要重新
安装:
$ sudo pip uninstall docker py
$ sudo pip uninstall docker
$ sudo pip install docker
此时运行指令已不会提示冲突:
$ docker-compose --version
docker-compose version 1.18.0, build 8dd22a
用户还可以执行docker version获取更全面的版本信息:
$ docker vers工on
Client:
Version: 18. 03 .1-ce
API version: 1.
Go vers工on: gol 9 5
Git commit: 9ee9f
Built: Thu Apr 26 07:13 02 2018
OS/Arch: darwin/amd
Experimental false
Orchestrator· swarm
Server:
Engine:
Version:
API vers工on.
Go version:
Git commit·
Built:
OS/Arch:

18.03.1-ce
1 37 (minimum version 1 .12)
gol.9.
9ee9f
Thu Apr 26 07:22:38 2018
linux/amd
Experimental: false
可见正常输出客户端和服务端版本信息,以及实验特性默认关闭。 如果Dockerfor Mac
启动失败或关闭状态,则会出现Error respo口se from daemon: Bad response
from Docker e口gine提示。
下面启动一个Nginx容器,检查能正确获取镜像并运行.
$ docker run -d -p 80:80 --口ame webserver nginx
然后使用docker ps指令查看运行的容器:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d756726cl7c ngi口x "ngi丑x-g 'daemon of···" 49 seconds ago Up 48 seconds
0.0.0.0:80->80/tcp webserver
可见Nginx容器已经在0.0.0.0:80启动,并映射到 80 端口。 打开浏览器访问此地址,如
图2-4所示。

18 第—部分 基础入门

5.常用配置
点击系统状态栏的Docker图标可以访问管理菜单, 如图2-5所示。

o.o.o.o
W吐立沺to心,叫
Welcome to nginx!
If you see WO如ng.印rtherthis pageconfiguration , the nginx web server is required. is successfully installed and

Commercial For online documenta廿onsupport is available and support at nqinx.corn. please refer to nq呕Ql'Q,
茄nk you for using nginx.

Docker is runni!)g ?
About Docker
Preferences .?. 茜
Check for Updates ?.?
Diagnose and Feedback ???
Documentation
Kitematic
More of Docker t
yeasy ...
Repositories 惨
Kubernetes ...
Restart 揉R
Quit Docker 揉Q
图2-4 Nginx容器启动 图2-5 管理菜单
About Docker页面呈现已安装的各组件版本信息、 更新通道(稳定版或测试版), 以及更
新记录(Release Notes)、声明、版权信息等, 如图2-6所示。
点击菜单的Preferences项, 打开配置管理界面。 其中, General页面可以配置自动启动
配置、 升级、 备份, 以及使用数据收集配置, 如图2-7所示。

号Engine,18.03.1-ce
?Compo,., 1.21.
皇Machine,0.14.

Docker
Community Edition
Version 18.03.1-ce-mac65 (24312)
Channel: stable
93354b38bd

配Notacy,0.6.
色CcedcotlalHelpe 仁 O会6.

,<= ?--;r-?Release Notes ,.__ c比kn叩ledgements' ,,.,'已.., ,_ , ----License Ag,eement --
"

e? General
Gone辱ti] ? 护禧, 11 FlJoS国中.°''' """"心·-泗°'"'如


i
0 Start Docker when you log in
0Auto叩廿callycheck for updates
0 Inc lude VM in Time Machine backups
0 Securely store docl<er logins in macOS keychain
0Sendu笠gestatlstics
Send information syst的、(e.versiong., starts, and stops, language resets). as叭,IIas Docker app t,fecycJe
Note: Docker al炽yssends mlnimal p;ng刘thveraion information
This is a stable ve对on.You can switch to亟·
O心'"o,d?ho Doc..,, Copy,igM C 2016·2018酝k口logo,,.,,..,,,,. 六"'压兀'"'"'·1心.AIIRlghtoRm,v如四"""ia,h, U.S. ,od othe, 心""'"" Dookoris running
图2-6 About Docker页面 图2-7 General页面
在氏lesharing (文件共享)页面中, 用户可以选择哪个Mac本地文件夹与容器共享。 点
击+后可以继续添加本地目录, 点击Apply&Restart按钮生效, 这里其实使用了-v参数,
如图2-8所示。

第2章 核心概念与安装配置 19

在Disk页面中, 可以配置磁盘路径, 并可以修改虚拟磁盘大小, 如图2-9所示。

??? F妇$
....... 心S心“屯O吐红""'记od .....,., °"''?' 啊屯晷护亳穹


i
These macOS d泗eta,如(andt皈rlntoOoc妇ccnl吐飞,._T加“一还O归COMOl°"""'P. 印归攻 torios)can切如dmoun心
You can e柏改血如泗O!llil如伽叩“女喊..

啊团

Disk
Gcnllfal l'ile s归r'ng o;,i, Ad四need 妒怠 Proxies Doomon
Disk image location:
/UHnl温m几心富_,.,.,.,.,com.doci<e,.doci<.. 心囚com,d<吐.,,a 吓息_,,,. m氓认_,.. , .....
Move disk image -- -令 -" "' '.. , Open in Finder
Virtual disk image size: 64.0 GB (allocated: 2.4 GB)
Resize disk image

0i

0oc知;sn,M叩
图2-8 File Sharing页面 图2-9 Disk页面

在Advanced页面中, 可以修改本机分配给Docker的计算资源, 如CPU、 内存和存储位
置, 如图2-10所示。
在Proxies页面中, 可以配置Pull操作时的代理配置, 如图2-11所示。
??
,, ? ? 铲


nc吐

如era!砌S归叩 Di吐 卫呻'-" "" 沁vancedPro四s Daemon
应justthe computing resources dedicated to Docker.
CPUs: 2

』 切心蠡I''°S心,屯0,,k .. ?-压心归"心 ,, ti] ? 铲 i'?

Con叩叹如p叫"""喊切Doc血topuff论ges.
@U,asy如mp呴
QManualp叩a,nf,叩m如
--(HTTPh
Memory: _ 2.0 GB S 忙叩 WebSen心(HTTPS),
`'`'`'`'尸''''','勹''',',:'
Docker subnet: [ 192.168.65.0 ] / 24

”-

珈".,,.o,.,,.ttlno? lo, theS9 Hos撬&Oo咋如"'
Apply & Restart }
Docker Is running 0oc炟don,M;,,g

图2-10 Advanced页面 图2-11 Proxies页面

在Daemon页面中, 用户可用两种方式(基础模式/高级模式即JSON)配置Docker守
护进程, 可以选择自定义镜像、 开启尝鲜模式等, 如图2-12所示。
点击Reset按钮, 用户可以选择重启Docker、 删除所有Docker数据、 恢复出厂设置、
重装Docker等操作。

  1. Kitematic
    通过菜单可以安装氐te血tic工具管理本地镜像, 点击提示框中的下载地址, 如图2-13所示。

20 令 第一部分基础入门

General ’ File [i] Sharing .蜡,,Disk Ad呻needProx" " ies Onomon ~ ”阳时

Basic I Advanced
口Experimental坠笙盟主

Insecure Er registries.

l Apply & Restart l
。因kerts running

图 2 -12 Daemon页面

...

¥三

回t田natlc
Kitematic graphical is mtecompatible 巾cetomanage with Docloor y。urDocker for Mac corand、taine四n阳,be Youused 臼as ndowna !国d
抢险Jl!.(make sure归uinstall比,nI Applications)
·国B

图 2 -13 安装Kitematic
下载Kit巳matic
app,如图2-14所示。

“附酬atlc(Beta).app”是从军联网下’酷的应用
程序.您确定要打开宫吗?
"Chrome"于 2018 军 2 月 25 日
从"downloed.d。d晤,.com”下鸳 71 比文件.
? C豆豆JC互D

图 2 -14 下载Kit巳matic
进入DockerHub登录页面,用户可以选择暂时不登录,直接进入主页面,如图2-15所示。

?

第 2 童核心概念与安装配置 令 2 丁

...

。)))......③
Usem缸”e
Passw田回

"""'"'""'"""""""yo!? s-帽、υp

Connect t。DockerHub
民-t’“回D田m伯ll"HublCCOOnl-·-,陶饱附btemam啕帽""'"""'""监

~
图 2 -1 5 进入DockerHub登录页面
主页面可见多种常用镜像,点击CREATE即可直接创建容器,如图 2 - 16 所示。

...@幽”

Rec。mmended

C阳、talners Q,阳hf?町阳配Im晴’fromDocker Hub H呻BY工Recommer晦dMyR啊!崎i叩

Allgtthatd8"'10t鸭-咄咄回础帽”’·他血,,can-..。f

kltematlc h创;。”w。rld-r咱inx

""?何础性C
。蝇。酬

。蟹比祖国ghost
由刨创泪如可”..K圃’..伽,...,嗣制w咽。P刷刷,回m伽
J酣.sor够’

电酣阳∞ @ @

otftcW red;s
Radi幅lJest0tethattunc内翩。p制SOUIC8现ions民町a?
data现只施缸’'e59M!抵

。”比皿Irk副
S<*bU“,..,.,..回.、-”缸由丽萨取蝠’ωω‘.. 晤’四,
”“阳m队"'"'""'回施。.

082 .!)阻四 ...

。伽...,rethonkdb
冈-鸣doα""筒,"'""嘘地..”..........DBh’“、。... 、嗡锐,...
easy lo bUld and SC萃”,..抽回
。砸机M ·-EJ
。俩elasticsearch clal

(8) S由侃捕’崎由...回国画""b?阴阳.....阳、e回回回
“咆’,.,....‘棚”E由幅画町to..?
。,比划mem国ch甜
F""""""缸,..._回"""阳""'&锦翩翩翩。’电副P V
。销时t""'才市啕町,tom.
0955 ~四4M
otfic:ial Jenkins
。筒""捆曲唱由比""'M‘ ..

。旧~51M ... EJ
陆酬副mlnecraft c
.,,,.....,.剑”钩’阳。。,,"'睛”·-··α甜tmu倒树a机~-鸭”’
”..,御伽"""""t鸣”thar
。肘。74K ·-B
。”、p。cla!stgres l?
,,,. 面tab.... 国.,因..,s。omLa阳’叫“幅功缸H回"由四
,幅tabl就'""'也坦M叩盹
川..........EJ
?? 。”rabbitmq laal 量
阳mullb刷刷白酶町、。阳、“""回』阳四”到"""'吨阳啕bmtcer.
。t.8低。 10 旧 ”?I"'苞.,.
图 2 -1 6 创建容器
以hello-world-nginx镜像为例。 点击CREATE后进入下载页面,如图 2 - 1 7 所示。
GV

22 .》 第一部分 墓础入门

Connec恒ngto Docker Hub

图 2 - 17 下载镜像
容器运行后,在主页可见运行日志、 挂载磁盘(双击可以直接打开)、浏览器预览以及容
器配置(S巳忧ings)等,如图2-18所示。

... @叫 hello-w耐吨lnx~
Contain?陌 ~ @@ OB' ”。me ' Settings
回跚跚跚跚跚
CONTAINER LOGS WEB PREVIEW 曰@
/w臼阿""'副bsit‘_"'"" hlcV>od<?htal.,,., ht?. oot .? fc"°d
呵"'"吁盹'1\cglol<<tl /呵inx/error.lo'"""" ’”? .,,.,,., follod 12 \咽No hlc'"'" cpcotl file "dlmtc.-y)
201810311116,49,39 2818/03/ll ,.,咽 39 looti?I lncticcJ 6'嗡..,.,吨'"""'"'"' "'”即。 7 tl""四t..仙。d

(20) 4.8-2014四川 (3111) .8' (16) r.i:S913l 49 39 lnoti<el .,., built坷’“""·'"阻,制"'"闸,。GCC
2918/03111 20181 旧, 11 "''''" l&'"'" [noti<el [notice! &11.,., "四.gct<U.it(RLD<!TJ"""" 4.9.61H”。>n""kiFILE!←四h
2018103111 104 田"''刷,,,.1&.49 39 lnctiool 610 ''"'田,,.,,,.mm
2818103/ll 1n.口.0.116,49,39 --11111"''"" [noti<?I 16?... 咽·崎锦阻Sta同睛,'"eJ”GE7,,occss I何πP/l.1" (7) 20U 361 "-"
”?”CIO何"'-·?llaJS.e lite "'""'' t”oclnt,.h; Kit~泊Intel tic/0.17Hoc OS 2 Ch,X α16_13_31蝇, 45 a.2454.85邮国刷刷出泣,日oct<cn/0.35.4537.
缸,"i/537,.”

VoltO!Y...-吨@ buccontainer Is rur晴、gl

句“”...幅.....”’........”...n闲”’配’”....._..鼠......

VOLUMES i {§}

  • /webslte_fl阳

电m四CLJ ?@
图 2 -1 8 容器主页
进入配置页面,可见hostname、port,以及卷、 网络等配置, 如图 2 -1 9 所示。
用户此时可以打开浏览器访问h即://localhost:32768,查看示例页面。

第 2 章核心概念与安装配置 23

... @- """°"帽”吨阳巨豆豆B
.,__ ~ @@ <9 曰 ’相m Set曲事
。”呢,划 ”。由四”ne/Pom V恤Jmlll Netwcr’‘ "'咽~回
c。。但gureH。stname
”。3TlWll旺 ""'油"""'觅觅a
C副、ngurepαts
。。Q;ER萨。何TPυ9USKI四”,,,。.,.
"' H恕,K刷32769

"""航。- -


8

图 2 - 19 配置页面

2.2.5 Windows环境下安装Docker
目前Docker可以通过虚拟机方式来支持Windows7.1和Windows 8 ,只要平台CPU支
持硬件虚拟化特性即可。读者如果无法确定自己计算机的CPU是否支持该特性也无须担心,
实际上, 目前市面上主流的CPU都早已支持硬件虚拟化特性。
对Windows 10 的用户来说, Docker官方为 64 位Windows 10 Pro环境(需支持Hyper-V)
提供了原生虚拟化应用Dockerfor Windows。 Windows环境下DockerCE同样支持两个版
本: 稳定版和测试版。 这两个版本的异同可以参见上节。 下载地址可见官网文档中心的Get
Docker? Docker CE→Windows。 下面具体介绍安装步骤。
首先,双击巳xe文件进行安装,如图2- 20 所示。

  • installingD。ckerfor Windo明
    Docker for Windows 17.12.0-四-win

Unpacking files ...
Unpacking Un pa而ngfilfile田.s: rresourcesourc国es/Iddoc旺kekerdr-for-win.iso .四e
Unpacking Un阳ckingfilfile田s rresourc四川同自/四concrt140componentsVersion.json.dll
Unpacking Unpacking files files ·. resre回。urces/comurces/com.ddocker 。由町。proxy lo日lhost-foiwardeexe 仁四e
υnpacking Unpacking filfil白,田resr目。。urces/comurc回/com.d.d。。ckercker..cloud.pro9pdb.exe可回e
Unpacking Unpacki咱们files: les:revcrunome140.dll sources/CHANGELOG
Unpacking υnpacking filfiles: es: vccorlib140.dll Sys回m.ValueTuple dll
Unpacking Unpacking files files· : SysSystem回m.Runtime 同untime.WindowsRuWindowsRuntime.dll附meUl.Xaml.dll

图2-20 运行exe文件

口×

24 ·:· 第一部分 基础 入门

安装完成后点击OK开启Hyper-V, 如图2-21所示。

,, Docker for Windows x

Hyper-V and Containers features are not enabled.
Do you want to enable them for Docker to be able to work properly?
Your computer will restart automatically.

图 2 - 21 进入Hyper-V
下面查看常用配置。 General页面可以配置自启策略,是否收集用户信息,是否检查升
级等,如图2-22所示。

,,Settings ×
General
General
Shared Drives Adjust how Docker for Windows behaves
according to your preferences.
Advanced
Network 回 0 StartAutomatically Docker when check you for log updates in
Proxies 回Sendusage statistics
Help 目arts,us stops, improve resets), Docker Windows for Windows version byand 四lndmganguage anonymous setting app lifecycte information (e.g.,
Daemon
Note: When running, Docker for Windows will ll]姐姐且sendits version
Diagnose & Feedback
Reset

口Exposedaemon on tcp://localhost:2 375 without TLS
Exposing mak臼yourselfdaemon vulnerable on TCP wittohout 『emoteTLS code helps executlegacy ion clients attacks. connect Use withto the 臼utiondaemon It also

e Docker is running You are running a stable ve陌ion.You臼nswitch to ilJllllML且虹五国且

图 2 - 22 Generd页面
Shared Drivers页面可以选择本地磁盘作为共享存储,相当于设置-v参数,在容器中可
以使用这些磁盘空间,如图2-23所示。
Advanced页面可以调整容器使用的本地资源,包括CPU和内存,也可以配置镜像和卷
的VHD地址,如图 2 - 24 所示。
在Network页面可进行网络配置包括vswitch和DNS配置,如图 2 - 25 所示。

  • "°''~"'"""'可 Reset C<edentials
    图2-23 Shared Drives页面

’Sett叩 ×
General Advanced
Shared Drives Adjust the computing『esourc田dedicatedto
D。cker.
Ne阳ork CPUs: 2
Proxies Memo叩: 2048 MB
Daemo n
口iagnose& Feed back lImages e:阳and volumes VHD location
Reset

Advanced
Netw。rk
Pmx1es
Daemon
Diagnose & Feedback
Reset

  • Do<ktt邸,"""'咱

第 2 章核心概念与安装配置 25

x
Shared D「ives
Select available the toylocal 。urζdrives 。ntainersyou want to be
Shared Drive
口口 CD
口 E

Doc阳will<四M州~·悍’,,咱lhe饵St'ttir咱也
图 2 - 24 Advanced页面

Gene目l Network

8 露

...削呵‘

Sh3'ed Dri"OS
Advanced

x

cnetwork 。nfigurethe way Docker interacts with the

Subnet Address:! 100.75.0 I 曲曲E皿a1<
Proxies Subnet Mask: I 2SS.2SS.2SS.O I d<l?u t2.咀且在 2 且 0

Interna l Virtu al Switch

Daemon
Diagnose & Feedback
Reset

  • Doc阳isnnml呻

DNS Serve r
?Automatic
0 日xed I a.a.a.a I

』ck.erwlHrestartwhena即’yl咱theseSt"ll呵雹

图2-2 5 Network页面


V

26 第一部分基础入门

若要在Windows 10 之外的Windows上运行Docker,可以使用Boot2Docker工具。 用户
可从https://docs .docker. com/installation/windows/下载使用。

2.3 配置Docker服务
为了避免每次使用Docker命令时都需要切换到特权身份,可以将当前用户加入安装中
自动创建的docker用户组,代码如下:
$ sudo usermod -aG docker USER NAME
用户更新组信息,退出并重新登录后即可生效。
Docker服务启动时实际上是调用了dockerd命令,支持多种启动参数。 因此,用户可
以直接通过执行dockerd命令来启动Docker服务,如下面的命令启动Docker服务,开启
Debug模式,并监听在本地的 2376 端口:
$ dockerd -D H tcp://127.0.0.1:
这些选项可以写入/etc/docker/路径下的daemon.json文件中,由dockerd服务启动
时读取:

"debug ” : true,
”hosts”:[”tcp://127.0.0. 1:2376”]

当然,操作系统也对Docker服务进行了封装,以使用Upstart来管理启动服务的
Ubuntu系统为例, Docker服务的默认配置文件为Ietc/ default/ docker,可以通过修改其中的
DOCKER OPTS来修改服务启动的参数,例如让Docker服务开启网络 2375 端口的监昕:
DOCKER_OPTS="$DOC阻ROPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock”
修改之后,通过service命令来重启Docker服务:
$ sudo service docker restart
对于CentOS、 RedHat等系统,服务通过systemd来管理,配置文件路径为/etc/systemd/
system/docker.service.d/docker.conf。 更新配置后需要通过systemctl命令来管理Docker
服务:
$ sudo systemctl daemon-reload
$ sudo systemctl start docker.service
此外,如果服务工作不正常,可以通过查看Docker服务的日志信息来确定问题,例如
在RedHat系统上日志文件可能为/var/log/messages,在Ubuntu或CentOS系统上可以执行命
令journalctl -u docker.service。
每次重启Docker服务后,可以通过查看Docker信息(docker info命令),确保服务
已经正常运行。
GV

第 2 章核心概念与安装配置 27

2.4 推荐实践环境
从稳定性上考虑,本书推荐实践环境的操作系统是Ubuntu18.04 LTS系统或Debian稳
定版本系统,使用Linux4.0以上内核。 Docker不同版本的API会略有差异,推荐根据需求
选择较新的稳定版本。
如无特殊说明,默认数据网段地址范围为10.0.0.0/24,管理网段地址范围为 192. 168.
0.0/ 24 。
另外,执行命令代码中以$开头的,表明为普通用户;以#开头的,表明为特权用户
(root)。 如果用户已经添加到了docker用户组(参考上一节),大部分时候都无须管理员权限,
否则需要在命令前使用sudo来临时提升权限。
部分命令执行结果输出内容较长的,只给出关键部分输出。
对于使用非Linux系统的用户,推荐本地采用虚拟机构建Linux环境来使用Docker相关

(4) H).I坠A、 4 、。
读者可根据自己的实际情况搭建类似的环境。
2.5 本章小结
本章介绍了Docker的三大核心概念:镜像、容器和仓库,以及如何安装和配置Docker
引擎服务。
在后面的实践中,读者会感受到,基于三大核心概念所构建的高效工作流程,正是
Docker从众多容器虚拟化方案中脱颖而出的重要原因。 实际上, Docker和DockerHub的工
作流也并非凭空创造的,很大程度上参考了Git和Github的设计理念,从而为应用分发和团
队合作都带来了众多优势。
在后续章节中,笔者将具体讲解围绕这三大核心概念的Docker操作命令。
φ

=········ ....; ..........

; ... ...... ..

.. ???.

: ? ? ? ??? ?

......................。芍f'4'心夕;第3章.

使用Docker镜像

镜像是 Docker 三大核心概念中最重要的, 自 Docker 诞生之日起镜像就是相关社区最为
热门的关键词。
Docker 运行容器前需要本地存在对应的镜像,如果镜像不存在, Docker 会尝试先从默
认镜像仓库下载(默认使用 DockerHub 公共注册服务器中的仓库), 用户也可以通过配置,
使用自定义的镜像仓库。
本章将围绕镜像这一核心概念介绍具体操作, 包括如何使用 pull 命令从 DockerHub
仓库中下载镜像到本地;如何查看本地已有的镜像信息和管理镜像标签;如何在远端仓库使
search 命令进行搜索和过滤;如何删除镜像标签和镜像文件;如何创建用户定制的镜像并
且保存为外部文件。 最后, 还将介绍如何往 DockerHub 仓库中推送自己 的镜像。

3.1 获取镜像
镜像是运行容器的前提, 官方的 DockerHub 网站已经提供了数十万个镜像供大家开放
下载。 本节主要介绍 pecker 镜像的 pull 子命令。
可以使用 docker [image] pull 命令直接从 DockerHub 镜像源来下载镜像。该命
令的格式为 docker [image] pull NAME [ :TAG] 。
其中, NAME 是镜像仓库名称(用来区分镜像), TAG 是镜像的标签(往往用来表示版本
信息)。 通常情况下, 描述一个镜像需要包括 “名称+标签“信息。
例如, 获取一个 Ubuntu18.04 系统的基础镜像可以使用如下的命令:
$ docker pull ubuntu: 18. 04

18. 04: Pulling from library/ubuntu

posted @ 2024-02-23 10:06  城市幽灵  阅读(25)  评论(0编辑  收藏  举报