比尔云BierYun--阿里云最新优惠活动
阿里云优惠码丨阿里云代金券

最火的容器技术|Docker入门与实践

最火的容器技术|Docker入门与实践

前言
Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机。不过,Docker 跟传统的虚拟化方式相比具有众多的优势。开发者可以打包他们的应用以及依赖包到一个可移植的Docker容器中,然后在Linux 机器上进行部署。

直白一点,我们可以不严谨地理解为:一台linux服务器安装了Docker,就好比我们的电脑上安装了Vmware虚拟机管理软件。服务器里面创建的Docker容器好比电脑里面创建的虚拟机。

一、 为什么使用Docker
Docker有很多用途,简化配置、代码管道化管理、开发人员的生产化、应用隔离、服务合并、多租户、快速部署等等。

这里举一个最贴近广大开发者的例子来说明下Docker的强大:运行环境快速部署。

假设有一个程序员小明,某天完成了一个PHP网站的开发,需要把它部署到一台linux服务器A上。传统的做法是,用apt-get或者手动编译安装好LNMP(linux+nginx+mysql+php)环境,然后对nginx.conf、my.cnf、php.ini各种配置和参数进行调整和优化,终于把环境搞好了。

过了一段时间,这个网站的访问量变大了,原来一台服务器已经无法支撑网站服务了,需要扩展一台服务器B进行负载均衡。这时小明需要把原来在服务器A上做的事情,在服务器B上再进行一次,把服务器B的环境弄好。这个过程不仅费心费力,而且容易出错,导致两台服务器的环境不一致。

如果小明使用Docker进行环境部署的话,这个难题就变得容易解决了。小明只需要在A服务器里面创建一个docker容器,在里面进行各种环境的安装和参数配置(PS:这里只是举个例子,不建议把很多服务塞到一个容器里,最好每个服务对应一个容器,有利解耦),然后把这个docker打包成镜像。接着在B服务器创建一个容器并加载这个镜像,就能轻松实现环境搭建以及保持环境一致了。

这个例子的具体实现笔者在下面会进行详细介绍。

二、Docker优点
硬件成本低,虚拟化硬件损耗低,性能好;
快速部署,秒级启动,弹性伸缩;
支持镜像打包管理,“易分享”,保证环境一致性;
动态调度迁移成本低。
三、安装
ubuntu 16.04安装最新版本Docker命令(PS:直接用apt-get、yum安装的版本比较旧):

apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add –

add-apt-repository \
“deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable”

apt-get update

apt-get install docker-ce

其他操作系统安装方法大家可以参考Docker官网安装指南。

四、基本使用
1.容器管理
(1) 运行容器
例子:
运行一个后台运行、可交互、镜像为ubuntu16.04、名称为salasolo的容器

docker run -dit –name salasolo ubuntu:16.04
1
命令:
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
1
参数
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-p: 端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

–name=”nginx-lb”: 为容器指定一个名称;

–dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

–dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h “mars”: 指定容器的hostname;

-e username=”ritchie”: 设置环境变量;

–env-file=[]: 从指定文件读入环境变量;

–cpuset=”0-2″ or –cpuset=”0,1,2″: 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

–net=”bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

–link=[]: 添加链接到另一个容器;

–expose=[]: 开放一个端口或一组端口;

(2)访问容器
docker exec -it salasolo /bin/bash
1
(3)停止容器
docker stop salasolo
1
(4)启动容器
docker start salasolo
1
(5)移除容器
docker rm salasolo
1
(6) 查看容器列表
命令:
docker ps [OPTIONS]
1
参数:
-a :显示所有的容器,包括未运行的。

-f :根据条件过滤显示的内容。

–format :指定返回值的模板文件。

-l :显示最近创建的容器。

-n :列出最近创建的n个容器。

–no-trunc :不截断输出。

-q :静默模式,只显示容器编号。

-s :显示总的文件大小。

2.镜像管理
每个容器初始化时候可以指定一个镜像,有php-fpm环境、mysql环境、ubuntu纯净环境、centos环境、nodejs环境、python环境等等,我们可以去hub.docker.com官网查找我们需要的镜像。

首次使用run命令创建基于远程镜像的容器、或者使用pull命令拉取时会下载镜像缓存到本地,可以在本地镜像列表进行查看。

(1)拉取远程仓库的镜像
docker pull ubuntu:16.04
1
(2)查看本地镜像列表
docker images
1
(3)移除本地镜像
docker rmi ubuntu:16.04
1
(4)容器打包为镜像
docker commit salasolo salasolo:1.0
1
3.国内镜像加速
由于网络原因,下载Docker官方仓库的镜像会比较慢,可以使用国内镜像加速:

https://www.docker-cn.com/registry-mirror

五、应用实践
1.安装最新版nginx
docker run -d –name container nginx:latest
1
2.安装php 7.2
docker run -d –name container php:php:7.2-fpm
1
3.安装最新版tomcat
docker run -d –name container tomcat:latest
1
4.安装最新版python
docker run -d –name container python:latest
1
5.安装最新版redis
docker run -d –name container redis:latest
———————
作者:全栈社区
来源:CSDN
原文:https://blog.csdn.net/zhsmain/article/details/89191023
版权声明:本文为博主原创文章,转载请附上博文链接!

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

强烈推荐

高性能SSD云服务器ECS抗攻击,高可用云数据库RDS