为什么需要容器技术
1、面临的问题
在项目迭代开发和部署过程中,运维人员不可避免会遇到这些情况:同样的代码需要被
部署到不同的运行环境中;由于运行环境不同导致项目部署失败,无法正常运行。
导致上述问题的原因可能不同。下面列举几种比较典型的原因。
运行环境发生了变化。例如,在开发阶段,代码是运行在程序员的本地环境
或测试环境中的;而在生产环境中,代码则被切换到集群环境或云平台上了。
代码的依赖发生了变化。例如,在开发阶段使用的是 JDK 1.7,而在生产环
境中使用的是JDK 1.8。
操作系统发生了变化。例如:在开发阶段使用的是Redhat Linux,而在生产
环境中使用的是CentOS。
随着系统架构不断变复杂,微服务架构得到了广泛的应用,这就要求每个功
能模块需要单独进行部署
2. Docker虚拟化容器的价值
Docker 虚拟化容器有以下两方面的价值。
从系统的架构层面上看:Docker 可以方便地支持并实现微服务架构,从而更
方便灵活地实现架构的变化和系统的扩展。同时,Docker虚拟化容器有助于DevOps
的落地,可以大大提升开发效率,加速迭代。
从底层基础层面上看:利用Docker 虚拟化容器技术可以方便地实现系统的移
植,,帮助实现企业应用上云,让应用在自有数据中心和云端之间实现动态迁移。
随着云计算技术的不断发展,在产生Docker 虚拟化容器技术后,一批相关的虚拟化容
器管理技术也随之诞生,例如Kubernetes ( K8s)等。这样的工具极大地推动了技术的分工,
也极大地促进了技术和业务的创新。
2、Docker介绍
Docker是一个开源的虚拟化容器引擎,让开发者可以打包他们的应用及依赖到一个可
移植的容器中,然后发布到Linux环境中以实现虚拟化的管理。这些 Linux环境包括
CentOS、Redhat、Ubuntu等。在Windows上也可以部署Docker,但不推荐。
Docker 中的虚拟化容器完全使用“沙箱”机制,相互之间不会有任何接口。可以把这些
容器理解为是逻辑隔离的。
一个完整的 Docker 由以下几部分组成:
Docker客户端。
Docker守护进程(Daemon)。
Docker 镜像(lmage)。
Docker容器(Container)。
镜像仓库(Repository)。
Docker 实现了应用代码与底层运行环境之间的耦合。它可以将一个复杂系统中的各个
模块进行容器化,同时提供了负载均衡和失败迁移功能。应用的容器化,满足了敏捷开发、动
态迁移、标准化的要求,从而大大提高了效率
先用yum安装docker
yum -y install docker
然后再启动docker,再设置一个开机启动
然后 执行docker version查看docker版本
使用二进制包方式安装docker
安装wget下载工具
yum -y install wget
下载docker安装包
wget https
:
//
download
.
docker
.
com
/
linux
/
static
/
stable
/
x
86_64
/
docker
‐
20.10.9
.
tgz
使用tar命令解压缩docker二进制安装包
tar -zxvf docker-20.10.9.taz
查看docker二进制包提供的命令
ls docker
将docker的可执行命令复制到/usr/bin目录下
cp docker/* /usr/bin
执行以下命令启动docker服务
/usr/bin/dockerd
在"/etc/systemd/system/docker.service"文件中输入以下内容
[Unit]
4 Description=Docker Application Container Engine
5 Documentation=https://docs.docker.com
6 After=network‐online.target firewalld.service
7 Wants=network‐online.target
8 [Service]
9 Type=notify
10 ExecStart=/usr/bin/dockerd
11 ExecReload=/bin/kill ‐s HUP $MAINPID
12 LimitNOFILE=infinity
13 LimitNPROC=infinity
14 TimeoutStartSec=0
15 Delegate=yes
16 KillMode=process
17 Restart=on‐failure
18 StartLimitBurst=3
19 StartLimitInterval=60s
20 [Install]
21 WantedBy=multi‐user.target
4 Description=Docker Application Container Engine
5 Documentation=https://docs.docker.com
6 After=network‐online.target firewalld.service
7 Wants=network‐online.target
8 [Service]
9 Type=notify
10 ExecStart=/usr/bin/dockerd
11 ExecReload=/bin/kill ‐s HUP $MAINPID
12 LimitNOFILE=infinity
13 LimitNPROC=infinity
14 TimeoutStartSec=0
15 Delegate=yes
16 KillMode=process
17 Restart=on‐failure
18 StartLimitBurst=3
19 StartLimitInterval=60s
20 [Install]
21 WantedBy=multi‐user.target
在创建"/etc/systemd/system/docker.service"文件后,需要给该文件添加可执行权限
chmod +x /etc/systemd/system/docker.service
启动Docker,并设置Docker为开机自动模式
systemctl start docker.service
systemctl enable docker.service
在命令行工具Xshell 中,使用“docker info”命令可以查看Docker运行状态的详细信
息
docker info
通过使用系统服务命令可以查看Docker 的运行状态。执行以下命令,可以查看Docker
服务的状态
systcemctl status doker.service
在镜像仓库中搜索Nginx的镜像
docker search nginx
通过以下命令从镜像仓库拉取 Nginx的镜像到本地,这里拉取了
docker.io/library/nginx镜像
docker pull nginx
![](https://i-blog.csdnimg.cn/blog_migrate/f174d0ea82a9b2205397e3325d066ce6.png)
使用“docker images”命令查看本地的镜像信息
![](https://i-blog.csdnimg.cn/blog_migrate/bfd6a63d4ce02a0a16537475ebae1b59.png)
执行以下的命令将使用镜像来创建 Nginx的容器。
docker run -d -p 1234:80 nginx
在容器创建并启动成功后,可以查看Docker的容器信息,
docker ps
打开浏览器访问“
http://192.168.149.38:1234/
",将打开 Nginx的首页。
![](https://i-blog.csdnimg.cn/blog_migrate/262eeb211482ce1e1a6cf9de71ff9524.png)