初学docker容器技术
前言
容器是继大数据和云计算之后的又一热门技术,越来越多的应用以容器的方式在开发、测试和生产环境中运行。作为目前较为流行的容器平台,Docker 是开发、发布和运行应用的开放平台。利用 Docker 的快速发布、测试和部署的整套方法,可以大大减少开发中的代码编写与运行之间的时间延迟,提高软件开发的效率和质量,实现产品的快速交付和快速迭代。软件开发人员、IT 实施和运维工程师都需要掌握这一新兴技术。
提示:以下是本篇文章正文内容,下面案例可供参考
一、认识docker(并配置好Docker的基本运行环境)
Docker是一个开源的容器项目,它使用 Go 语言开发实现,遵从Apache 2.0 协议。作为运行和管理容器的容器引擎,Docker 让开发人员可以将应用程序及其依赖打包到一个可移植的镜像中,然后发布到任何使用流行的操作系统(如 Linux、Windows 和mac OS)的计算机上,也可以发布到云端进行部署。Docker 是传统虚拟机的替代解决方案,越来越多的应用程序以容器(一种操作系统层虚拟化方式方式在开发、测试和生产环境中运行。
二、使用步骤
设置docker仓库
在新主机上首次安装docker之前,需要先设置docker的yum仓库,这样可以很方便的从该仓库安装和更新Docker
(1)执行以下命令安装其必要的包。其中,yum-utils 提供 yum-config-manager工具,devicemapper 存储驱动程序需要 device-mapper-persistent-data和Ivm2。
yum install -y yum-utils device-mapper-persistent-data Ivm2
代码如下(示例):
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data Ivm2
已加载插件:fastestmirror
Determining fastest mirrors
* base: mirrors.bfsu.edu.cn
* extras: mirror.lzu.edu.cn
* updates: mirror.lzu.edu.cn
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/4): base/7/x86_64/group_gz | 153 kB 00:00:01
(2/4): extras/7/x86_64/primary_db | 249 kB 00:00:03
(3/4): base/7/x86_64/primary_db | 6.1 MB 00:00:14
(4/4): updates/7/x86_64/primary_db | 20 MB 00:00:32
没有可用软件包 Ivm2。
正在解决依赖关系
--> 正在检查事务
---> 软件包 device-mapper-persistent-data.x86_64.0.0.8.5-3.el7 将被 升级
---> 软件包 device-mapper-persistent-data.x86_64.0.0.8.5-3.el7_9.2 将被 更新
---> 软件包 yum-utils.noarch.0.1.1.31-54.el7_8 将被 安装
--> 正在处理依赖关系 python-kitchen,它被软件包 yum-utils-1.1.31-54.el7_8.noarch 需要
--> 正在处理依赖关系 libxml2-python,它被软件包 yum-utils-1.1.31-54.el7_8.noarch 需要
--> 正在检查事务
---> 软件包 libxml2-python.x86_64.0.2.9.1-6.el7_9.6 将被 安装
--> 正在处理依赖关系 libxml2 = 2.9.1-6.el7_9.6,它被软件包 libxml2-python-2.9.1-6.el7_9.6.x86_64 需要
---> 软件包 python-kitchen.noarch.0.1.1.1-5.el7 将被 安装
--> 正在处理依赖关系 python-chardet,它被软件包 python-kitchen-1.1.1-5.el7.noarch 需要
--> 正在检查事务
---> 软件包 libxml2.x86_64.0.2.9.1-6.el7.5 将被 升级
---> 软件包 libxml2.x86_64.0.2.9.1-6.el7_9.6 将被 更新
---> 软件包 python-chardet.noarch.0.2.2.1-3.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
=====================================================================================================
Package 架构 版本 源 大小
=====================================================================================================
正在安装:
yum-utils noarch 1.1.31-54.el7_8 base 122 k
正在更新:
device-mapper-persistent-data x86_64 0.8.5-3.el7_9.2 updates 423 k
为依赖而安装:
libxml2-python x86_64 2.9.1-6.el7_9.6 updates 247 k
python-chardet noarch 2.2.1-3.el7 base 227 k
python-kitchen noarch 1.1.1-5.el7 base 267 k
为依赖而更新:
libxml2 x86_64 2.9.1-6.el7_9.6 updates 668 k
事务概要
=====================================================================================================
安装 1 软件包 (+3 依赖软件包)
升级 1 软件包 (+1 依赖软件包)
总下载量:1.9 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
警告:/var/cache/yum/x86_64/7/base/packages/python-kitchen-1.1.1-5.el7.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
python-kitchen-1.1.1-5.el7.noarch.rpm 的公钥尚未安装
(1/6): python-kitchen-1.1.1-5.el7.noarch.rpm | 267 kB 00:00:01
(2/6): python-chardet-2.2.1-3.el7.noarch.rpm | 227 kB 00:00:01
device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64.rpm 的公钥尚未安装
(3/6): device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64.rpm | 423 kB 00:00:01
(4/6): libxml2-python-2.9.1-6.el7_9.6.x86_64.rpm | 247 kB 00:00:01
(5/6): yum-utils-1.1.31-54.el7_8.noarch.rpm | 122 kB 00:00:00
(6/6): libxml2-2.9.1-6.el7_9.6.x86_64.rpm | 668 kB 00:00:02
-----------------------------------------------------------------------------------------------------
总计 785 kB/s | 1.9 MB 00:00:02
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥
导入 GPG key 0xF4A80EB5:
用户ID : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
指纹 : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
软件包 : centos-release-7-9.2009.0.el7.centos.x86_64 (@anaconda)
来自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : python-chardet-2.2.1-3.el7.noarch 1/8
正在安装 : python-kitchen-1.1.1-5.el7.noarch 2/8
正在更新 : libxml2-2.9.1-6.el7_9.6.x86_64 3/8
正在安装 : libxml2-python-2.9.1-6.el7_9.6.x86_64 4/8
正在安装 : yum-utils-1.1.31-54.el7_8.noarch 5/8
正在更新 : device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64 6/8
清理 : libxml2-2.9.1-6.el7.5.x86_64 7/8
清理 : device-mapper-persistent-data-0.8.5-3.el7.x86_64 8/8
验证中 : device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64 1/8
验证中 : libxml2-2.9.1-6.el7_9.6.x86_64 2/8
验证中 : libxml2-python-2.9.1-6.el7_9.6.x86_64 3/8
验证中 : python-kitchen-1.1.1-5.el7.noarch 4/8
验证中 : yum-utils-1.1.31-54.el7_8.noarch 5/8
验证中 : python-chardet-2.2.1-3.el7.noarch 6/8
验证中 : libxml2-2.9.1-6.el7.5.x86_64 7/8
验证中 : device-mapper-persistent-data-0.8.5-3.el7.x86_64 8/8
已安装:
yum-utils.noarch 0:1.1.31-54.el7_8
作为依赖被安装:
libxml2-python.x86_64 0:2.9.1-6.el7_9.6 python-chardet.noarch 0:2.2.1-3.el7
python-kitchen.noarch 0:1.1.1-5.el7
更新完毕:
device-mapper-persistent-data.x86_64 0:0.8.5-3.el7_9.2
作为依赖被升级:
libxml2.x86_64 0:2.9.1-6.el7_9.6
完毕!
(2)执行以下命令设置Docker CE 稳定版的仓库地址。即使用户还想从每日构建版或测试版的Docker 仓库进行安装,也始终需要稳定版的仓库。考虑到国内访问 Docker 官方镜像不方便,这里提供的是阿里巴巴的镜像仓库源。
yum-config-manager --add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum-config-manager --add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
这将在/etc/yum.repos.d 目录下创建一个名为 docker.repo 的文件。该文件中定义了多个仓库的地址但默认只有稳定版(Stable )被启用。如果要启用 Nightly和Test 仓库,则要启用相应的选项,命令如下
yum-config-manager --enable docker-ce-nightly
[root@localhost ~]# yum-config-manager --enable docker-ce-nightly
已加载插件:fastestmirror
====================================== repo: docker-ce-nightly ======================================
[docker-ce-nightly]
async = True
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/7
baseurl = https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/nightly
cache = 0
cachedir = /var/cache/yum/x86_64/7/docker-ce-nightly
check_config_file_age = True
compare_providers_priority = 80
cost = 1000
deltarpm_metadata_percentage = 100
deltarpm_percentage =
enabled = 1
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/7/docker-ce-nightly/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/7/docker-ce-nightly/gpgdir
gpgkey = https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
hdrdir = /var/cache/yum/x86_64/7/docker-ce-nightly/headers
http_caching = all
includepkgs =
ip_resolve =
keepalive = True
keepcache = False
mddownloadpolicy = sqlite
mdpolicy = group:small
mediaid =
metadata_expire = 21600
metadata_expire_filter = read-only:present
metalink =
minrate = 0
mirrorlist =
mirrorlist_expire = 86400
name = Docker CE Nightly - x86_64
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/x86_64/7/docker-ce-nightly
pkgdir = /var/cache/yum/x86_64/7/docker-ce-nightly/packages
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 30.0
ui_id = docker-ce-nightly/7/x86_64
ui_repoid_vars = releasever,
basearch
username =
yum-config-manager --enable docker-ce-test
[root@localhost ~]# yum-config-manager --enable docker-ce-test
已加载插件:fastestmirror
======================================= repo: docker-ce-test ========================================
[docker-ce-test]
async = True
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/7
baseurl = https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/test
cache = 0
cachedir = /var/cache/yum/x86_64/7/docker-ce-test
check_config_file_age = True
compare_providers_priority = 80
cost = 1000
deltarpm_metadata_percentage = 100
deltarpm_percentage =
enabled = 1
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/7/docker-ce-test/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/7/docker-ce-test/gpgdir
gpgkey = https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
hdrdir = /var/cache/yum/x86_64/7/docker-ce-test/headers
http_caching = all
includepkgs =
ip_resolve =
keepalive = True
keepcache = False
mddownloadpolicy = sqlite
mdpolicy = group:small
mediaid =
metadata_expire = 21600
metadata_expire_filter = read-only:present
metalink =
minrate = 0
mirrorlist =
mirrorlist_expire = 86400
name = Docker CE Test - x86_64
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/x86_64/7/docker-ce-test
pkgdir = /var/cache/yum/x86_64/7/docker-ce-test/packages
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 30.0
ui_id = docker-ce-test/7/x86_64
ui_repoid_vars = releasever,
basearch
username =
要禁用仓库,使用–disable 选项即可。如果不使用阿里巴巴的镜像仓库源,改用 Docker 官方的源,则要执行以下命令创建 docker.repo文件。(因为上面已经使用了阿里巴巴的镜像仓库源所以在这里不进行演示了)
yum-config-manager --add-repo\https://download.docker.com/linux/centos/docker-ce.repo
安装Docker CE:
安装 Docker CE 方法是执行以下命令,安装最新版本的 Docker CE和containerd。(中间遇到需要选择的一直y下去就好了一个问题一个y加回车)
yum install docker-ce docker-ce-cli containerd.io
[root@localhost ~]# yum install docker-ce docker-ce-cli containerd.io
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.bfsu.edu.cn
* extras: mirror.lzu.edu.cn
* updates: mirror.lzu.edu.cn
docker-ce-nightly | 3.5 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
docker-ce-test | 3.5 kB 00:00:00
(1/6): docker-ce-test/7/x86_64/updateinfo | 55 B 00:00:00
(2/6): docker-ce-stable/7/x86_64/updateinfo | 55 B 00:00:00
(3/6): docker-ce-stable/7/x86_64/primary_db | 106 kB 00:00:00
(4/6): docker-ce-nightly/7/x86_64/updateinfo | 55 B 00:00:01
(5/6): docker-ce-nightly/7/x86_64/primary_db | 177 kB 00:00:01
(6/6): docker-ce-test/7/x86_64/primary_db | 202 kB 00:00:00
正在解决依赖关系
--> 正在检查事务
---> 软件包 containerd.io.x86_64.0.1.6.20-3.1.el7 将被 安装
--> 正在处理依赖关系 container-selinux >= 2:2.74,它被软件包 containerd.io-1.6.20-3.1.el7.x86_64 需要
---> 软件包 docker-ce.x86_64.