451c4b378723ff645311abcd7a56266d.png

Docker简介

Docker是一个开源的应用容器引擎,基于Go语言开发,Docker可以让开发者打包她们的应用以及依赖包到一个轻量级、可移植的容器中,之后发布到任何流行的系统

Docker是世界领先的软件容器平台,Docker官方的标语是”调试你的应用,而不是调试环境“。在进行多人协作开发时,开发者可以使用Docker来清除所谓“我这儿运行是好的”(worksonmymachine)问题,运维人员使用Docker来并行的运行和管理应拿来获得更优估算密度,基于各自独立的容器,不会由于环境诱因引起应用运行错误。

如右图所示,在工作当中,假如我们面对这样多的服务、多个服务器,以及多种环境,我们应当怎样处理呢?若果还继续用传统的方法打包布署,我们会浪费多少时间?

14ec5034ac84b0fe288b45427b21ce63.png

所以在Docker横空出世之前,应用打包仍然是大部份研制团队的痛点,在Docker出现后,它以更高效的借助系统资源、更高效的借助系统资源、一致的运行环境、持续交付和布署、更轻松的迁移、更轻松的维护和拓展,6大优点迅速火了上去。

Docker的三个核心概念

是一个包含有文件系统的面向Docker引擎的只读模板。任何应用程序运行都须要环境,而镜像就是拿来提供这些运行环境的。比如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板。

类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网路空间等),以及运行在其中的应用程序。Docker引擎借助容器来运行、隔离各个应用。

容器是镜像创建的应用实例docker busybox,可以创建、启动、停止、删除容器,各个容器之间是是互相隔离的,互不影响。

注意:镜像本身是只读的,容器从镜像启动时linux设置环境变量,Docker在镜像的下层创建一个可写层,镜像本身不变。

镜像库房,是Docker拿来集中储存镜像文件的地方。

Docker安装

Docker是开源的商业产品,有两种版本:社区版(CommunityEdition,简写为CE)和企业版(EnterpriseEdition,简写为EE)。企业版包含了一些收费服务,通常用不到。我们下边将会演示DockerCE版本的使用技巧。

docker busybox_docker busybox_docker busybox

Docker支持好多操作系统平台,有你们常用的MicrosoftWindows系列操作系统(Docker不支持Windows10家庭版系统),Linux发行版和MacOS系统。

安装

Windows上有两种安装Docker形式:

第一种:访问Docker网站下载DockerDesktop软件的exe文件,下载地址:%20Desktop%20Installer.exe

第二种:使用Chocolatey包管理工具安装Docker。(包管理工具需自行下载安装)

choco install docker-for-windows

1.切换到管理员权限

su root

2.安装必要的一些系统工具

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

3.安装GPG证书

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

4.写入软件源信息

add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

docker busybox_docker busybox_docker busybox

5.更新并安装Docker-CE

apt-get -y updateapt-get -y install docker-ce

1.切换到管理员权限

su root

2.安装必要的一些系统工具

yum install -y yum-utils device-mapper-persistent-data lvm2

3.添加软件源信息

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.更新并安装Docker-CE

yum makecache fastyum -y install docker-ce

macOS上有两种安装Docker形式:

第一种:访问Docker网站下载DockerDesktop的dmg安装包,下载地址:

第二种:使用包管理工具方法来安装Docker,使用Homebrew工具安装Docker。(包管理工具需自行下载安装)

brew cask install docker

Docker常用操作

systemctl start docker

systemctl retart docker

bashsystemctlenabledocker¨G2Gbashsystemctlstatusdocker

Docker加速器配置

我们下载Docker镜像的时侯,默认会访问Docker网站,而Docker网站是在美国布署的linux重启命令,距离比较远下载速率非常慢。我们可以通过设置加速器的方法来加速Docker镜像下载的速率。下边将描述一下使用加速器的步骤:

1.我们这儿选择的是阿里云提供的Docker镜像加速器服务,首先访问阿里云的镜像库房(假如没有阿里云帐号则须要注册):

2.选择“镜像加速器“

3ec2032edef64b91f2810898fac0d0d6.png

3.依据个人的系统平台,选择运行Docker的OS,并根据操作文档的要求更改Docker配置文件,之后重启Docker服务即可完成加速器的配置。

316468b2521e79e0f267bb6a52f6b545.png

Docker常用命令

Docker的常用命令通常分为:镜像管理、容器管理。

查看Docker版本

docker busybox_docker busybox_docker busybox

docker version

镜像管理命令

下边使用busybox软件作为示例,busybox软件是一个集成了十分多最常用的Linux命令和工具的软件集合。

docker images

下载软件镜像

docker pull busybox:latest

备注:latest表示使用busybox软件的最新版本,所以软件默认下载都是latest版本。

docker save busybox > busybox.tar

备注:把busybox镜像导入为busybox.tar文件,可以把busybox.tar文件复制到别的操作系统上使用,减免下载时网路慢的问题。

docker rmi busybox:latest

备注:镜像通常还会依据版本打包docker busybox,假如有下载一个软件的多个版本就须要指定具体版本信息。如busybox:1.26都会删掉busybox软件的1.26版本的镜像,不会删掉latest版本的镜像。

docker load 

备注:使用导入命令导入的镜像,可以通过此命令导出到没有下载此软件的操作系统,便捷网路条件差的情况使用。

docker tag busybox:latest busybox:test

docker busybox_docker busybox_docker busybox

备注:busybox:latest原镜像名,busybox:test要改成的镜像名

容器管理命令

docker run -d --name=busybox busybox:latest ping 114.114.114.114

- `run`:run参数代表启动容器- `-d`:以后台daemon的方式运行- `--name`:指定一个容器的名字,此后操作都需要使用这个名字来定位容器。- `busybox:latest`:容器所使用的镜像名字- `ping 114.114.114.114`:启动容器执行的命令

docker ps

docker ps -a

- `CONTAINER ID`:容器启动的id- `IMAGE`:使用哪个镜像启动的容器- `COMMAND`:启动容器的命令 - `CREATED`:创建容器的时间- `STATUS`:容器启动时间- `PORTS`:容器映射到宿主机的端口- `NAMES`:容器启动的名字

docker start busybox

docker restart busybox

docker stop busybox

docker kill busybox

docker rm -f busybox

docker exec -it busybox ls

备注:-it交互终端

docker cp busybox:/etc/hosts hosts

docker logs -f busybox

以上,更多进阶内容后续进一步阐述。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复