Docker有啥用

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以用与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

Docker两个基础概念

镜像(Images)

Docker镜像是一个只读的模板。包含了容器运行时所需要的文件系统和一些参数。镜像是无状态的,也不会改变。镜像是用来创建容器的。你可以使用docker pull命令获取一个别人已创建好的镜像,或者使用dockerbuild来构建一个自己的镜像,如果觉得上面说的不清楚,那你也可以把镜像理解为我们Windows的系统镜像,也就是说一个镜像拥有固定的初始环境,而这个环境可以在任何一个兼容的机器去安装运行。

容器(Containers)

Docker容器就像是一个文件夹,容器中包含了应用运行所需的一切。每个容器都是一个隔离的和安全的应用平台。容器是镜像的一个实例,它是有状态的,而且随时会改变,容器一般是短暂的,其实它跟我们传统意义上的虚拟机的基本概念是一样的,但是有又一些特点与优势,它类似于一个“微系统”,小巧而灵活。

举个例子:

在传统的方式中,我们在Linux系统部署一个Wordpress网站,需要做的步骤是:安装lamp/lnmp环境->配置数据库->下载源码->修改源码配置->完成。

而切换到Docker下是这样的:部署Docker->拉取镜像->创建容器->完成。

从主要步骤来看好像也没有减少多少步骤,但是在实际部署过程中,采用传统方式的话需要做的工作是非常多的,而通过Docker的方式进行启动则变得非常容易,下面演示一下:

使用Docker部署一个wordpress网站

在开始之前我们还需要了解下面几个命令:

  • pull #拉取镜像
  • run #创建容器

下面进行简单的演示,暂不对相关命令进行详细的讲解,对于Dockcer部署的话下期讲解。

首先查看Docker是否正常运行:

systemctl status docker

714df6841228653b90230681e5251fb1.png

然后修改镜像加速地址:

echo -e "{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}" > /etc/docker/daemon.json

systemctl daemon-reload

systemctl restart docker

c7717e4975e194638b67c3e4938104fc.png

然后通过docker info命令查看镜像加速地址是否成功修改:

a5981b653bef530313fa30dc243460dc.png

到这里Docker的验证就完成了,然后开始拉取镜像。

pull拉取镜像

docker的pull指令其实跟我们的yum install大致的意思是一样的,你也可以把它理解为是在安装一个wordpress应用

docker pull wordpress

c7fc3923f633a7c64c920e98d271e7c7.png

拉取wordpress镜像完成

然后继续拉取一个MariaDB镜像:

a0c9dcb9e5ac813b6953ddc4b39f7bb0.png

拉取mariadb镜像

run创建容器

创建一个容器需要用run指令,基本格式如下:

docker run -d ${镜像}

-d :后台运行容器

创建mariadb容器

拉取完成之后自然是创建一个容器(应用)了,按照先后顺序,我们先创建一个数据库容器,命令如下:

docker run -tid -e MYSQL_ROOT_PASSWORD=zuogongjiao mariadb

创建成功会出现一串ID值,如果出现其他提示信息那就是有问题了。

创建成功之后,我们通过下面这个命令获取容器的ID以通过ID进入容器操作(也可以在创建的时候指定容器名)

docker ps

5b40b9c74973476627f0f136b01ce563.png

创建容器并查看容器运行ID

得到ID之后,我们通过下面这个命令进入容器

docker exec -ti b /bin/bash

其中,b是ID的第一个字符,也就是无需指定全部的ID值也可以进入一个容器(前提是通过特点字符就能筛选出唯一的容器)

进入容器之后,我们就可以登录并创建数据库了:

mysql -uroot -pzuogongjiao

create database wordpress;

数据库密码是创建容器时指定的:-e MYSQL_ROOT_PASSWORD=zuogongjiao

b510c3bb745f8147e734d995c4e705d2.png

创建数据库

数据库创建完成之后,可以选择创建一个普通用户用于wordpress的数据管理,也可以直接使用root用户,这里建议使用普通用户去给wordpress使用,所以这时候还需要使用下面的命令创建用户:

grant all privileges on wordpress.* to 'zgj'@'%' identified by 'zuogongjiao';

创建完成之后,我们可以退出数据库使用新的用户登录:

quit;

mysql -uzgj -pzuogongjiao

3efbdb430915ed16522e9887d6471bd1.png

使用新用户登录数据库

然后查看当前可操作的数据库:

show databases;

2466c90b695169645b62714ab4631709.png

查看数据库列表

那么到这步,数据库部分就完成了,下面开始创建wordpress容器:

创建Wordpress容器

创建之前需要先执行下面的命令回到宿主机:

exit

a33a5df071e8ef8be2d75536ed2aa497.png

为了便于管理容器,我们可以对数据库容器进行重命名,命令如下:

docker rename elastic_bhaskara db

55f93d31582b7e51debb9a914712c144.png

修改好容器名之后就继续创建wordpress容器,这次可以加上--link参数,具体命令如下:

docker run -tid --name=wordpress --link db:mysql -p 80:80 wordpress

然后如果想看容器的运行情况,可以使用下面的命令查看实时日志:

docker logs -f wordpress

fad3bbfb48847f22e7c934a81c966794.png

查看容器运行日志

创建容器之后,我们可以直接在浏览器输入宿主机的IP(前提是映射80端口,否则需要IP+端口的方式)进行访问,然后得出这样一个界面:

56d14cebb7677f167463c3637201ac8f.png

wordpress安装程序

我们直接点继续,然后就可以填写网站信息了,填写完成之后点击安装wordpress:

b267c9a785f22913d7ed70e7fe5bec5d.png

填写网站信息

然后就安装完成了:

2e9965daa9a36e28c6c4f3f5986fd453.png

wordpress安装完成

然后我们再次输入Docker宿主机IP地址进行访问:

d3ac1e9a3840530dd879cafe9c3f69a2.png

这时候就可以看到,我们的网站已经搭建完成了,中途没有出现任何php错误,不兼容之类的环节,可以说非常的顺利,另外Docker作为一个跨平台的工具,可以在Mac、Windows、Linux中随处运行与构建,大大的方便了运维工作。

你认为Docker是否可以在学习或工作中帮助到你,请在评论中说出来吧

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐