第3部分:使用WordPress和DokuWiki容器创建记事本
前言
在第一部分中 ,我们讨论了Docker容器如何工作,与其他软件虚拟化技术不同,在第二部分 ,我们准备了Docker容器管理系统。
在这部分中,我们将开始使用Docker图像并以实用的方式创建容器。 换句话说,我们将创建一个基于Web的高级个人记事本,运行在DokuWiki或WordPress之上。 您可以选择您喜欢的任何一个。
如何运行Docker容器
首先,我们必须确保通过下载“Hello world”图像并从中创建容器,Docker引擎可以根据需要进行工作。
记住,当我们谈论一个图像时,它是暂停状态,而当我们谈论容器时,它是一个停泊点图像的运行时实例。 在类比中,我们在之前的部分中讨论过,Docker的图像就像是一个Linux发行版的ISO文件,而容器是ISO文件的实时会话,就像从USB U盘驱动器一样运行它。
要下载并运行“Hello world”图像,只需输入终端即可
sudo docker run hello-world
此命令下载Hello World映像并将其运行在容器中。 当容器运行时,它打印一条信息消息,然后它退出(意味着它关闭)。
我们如何检查我们的系统中有多少图像? 我们只是运行
sudo docker images
你可能问自己,我的系统是怎么找到这个Hello World的图像,它是从哪里来的? 那么这就是Docker中心的地方。
Docker Hub介绍
Docker Hub是一种基于云的集中资源,用于容器图像发现,图像构建和这些图像的分发。
具体来说,Docker Hub提供了一些有用的功能和功能,我们将在后面的部分讨论更多内容。
目前,我们将专注于一个功能,这是查找和下载Docker窗图像。
搜索Docker图像
您可以通过简单地访问在线码头中心或使用终端来搜索“准备下载并运行码头服务器映像”。 请注意,您无法从网络中心下载Docker窗图像,但您可以了解有关图像的更多信息,例如图像的构建和维护等。
所以为了这一部分的目的,我们将着重于使用终端方式。 让我们搜索WordPress
sudo docker search wordpress
您可以看到有大量的WordPress码头图像,它们是用各种组合构建的(例如有或没有数据库包含),它们被评为受欢迎的明星,它们是官方的(由码头公司维护)或自动(建立和由个人维护)。 很明显,任何人都可以创建一个帐户并上传他/她的定制码头图像,我们将在稍后的部分讨论。
下载Docker图像
为了本文的目的,我们将使用最新版本的bitnamis的docker映像,它附带在MySQL中。 所以让我们下载它:
sudo docker pull bitnami/wordpress:latest
一旦你运行上面的命令,它将与docker集线器通信,询问是否有一个名为“bitnami”的存储库,然后询问是否有一个被标记为“最新”版本的“WordPress”构建。
目前,我们已经下载了一个WordPress的图像,没有别的。 我们现在可以通过搜索一个DokuWiki图像并选择我们喜欢的图像,或使用如下所示的图像
sudo docker pull mprasil/dokuwiki
Docker图像架构
在等待下载过程完成时,您可以看到Docker窗图像是基础图像之上的多层图像。 您可以看到每一层正在下载,然后“神奇”地统一。 下图显示了包含4个堆叠图像层的Ubuntu基本图像。
您可以想像,每个Docker Image都会引用代表文件系统差异的只读层列表。 当您创建一个新的容器时,从Docker Image开始,您将在以后再添加一个新的,薄的可写层,并在底层的上添加。 对运行容器进行的所有更改(如写入新文件,修改现有文件和删除文件)都将写入此可写入容器层。 下图显示了基于Ubuntu 15.04映像的容器。
删除Docker图像
现在,如果您检查您的系统上有多少图像
sudo docker images
你会看到WordPress,DokuWiki和Hello World。 如果由于任何原因想要删除(rmi)您只需键入的图像
sudo docker rmi <name-of-the-image>
其中图像的名称是与“docker images”命令一起显示的Docker窗的名称。 例如,如果我们要删除Hello World,我们可以简单地输入:
sudo docker rmi hello-world
容器是短暂的
通过设计Docker容器是短暂的。 通过“短暂的”,我们意味着容器可以被停止和销毁,并且可以从相同的Docker图像构建一个容器,并且以绝对最小的设置和配置来建立容器。
通过设计Docker容器是短暂的。 通过“短暂的”,我们意味着容器可以被停止和销毁,并且可以从相同的Docker图像构建一个容器,并且以绝对最小的设置和配置来建立容器。
因此,您应该记住,当我们从Docker Image(WordPress或DokuWiki)创建一个容器时,您所做的任何更改(例如添加帖子,图片)将在您停止或删除容器后丢失。 换句话说,当容器被删除时,与容器一起删除不存储在数据卷中的写入容器的任何数据。
数据卷是Docker主机文件系统中直接安装到容器中的目录或文件。 这样,您可以使用新的容器交换容器,并在您的用户主文件夹中保持任何数据安全。 请注意,您可以将任意数量的数据卷装载到容器中。 甚至多个容器也可以共享一个或多个数据卷。
下图显示了运行两个容器的单个Docker主机(例如您的Ubuntu 15.10)。 您可以看到,Docker主机上还有一个共享数据卷位于/ data。 这直接安装在两个容器中。
这样当容器被删除时,存储在数据卷中的任何数据仍然存在于Docker主机上,并且可以安装到新的容器。
Docker容器网络
当您安装Docker时,它会在系统中创建一个网络设备。 您可以通过在主机系统上使用`ifconfig`命令来查看它(它将被命名为docker0)作为主机网络的一部分。
重要的是要了解Docker容器是隔离的,它们是具有自己的网络属性的单独的微服务,并且我们运行它们并连接到它们的方式是将其端口号映射到主机系统的端口号。
这样我们可以将容器运行的Web服务公开给主机系统。
使用WordPress容器创建个人记事本
让我们开始创建我们的测试记事本。 首先我们将使用WordPress映像创建一个Docker容器
sudo docker run --name=mynotepad -p 80:80 -p 443:443 bitnami/wordpress
通过上述命令,我们要求我们的主机系统中的Docker服务创建并运行(docker运行)名为“mynotepad”(--name = mynotepad)的容器,映射主机和容器的HTTP和HTTPS端口(-p 80:80 -p 443:443),并使用WordPress图像(bitnami / wordpress)
一旦初始化容器,您将收到关于容器的一些信息。 现在是启动浏览器并将其指向http:// localhost的时候了
如果一切顺利,您将看到默认的WordPress网站
您可能已经知道登录到WordPress管理页面,只需访问http:// localhost / login并使用默认凭证用户/ bitnami。 然后,您可以在WordPress中创建新用户或测试文章并发布。 您可以在下面的图片中看到我的测试帖子
让我们回到终端。 正如您可以看到您的终端当前正在绑定到正在运行的容器。 您可以使用Ctrl + C退出。 这也将停止容器。
现在让我们检查我们可用的容器。 您可以运行以下命令:
sudo docker ps -l
查看我们以前创建并运行的容器。
从上图可以看出,有一些重要的信息,如容器的名称和容器的唯一ID。 这样我们可以再次启动容器
docker start mynotepad
然后,您可以使用以下命令检查docker容器运行的进程:
sudo docker top mynotepad
默认情况下,docker启动mynotepad,docker容器在后台运行。 要停止它,您可以运行以下命令
sudo docker stop mynotepad
您可以在Docker的官方文档https://docs.docker.com/engine/userguide/containers/usingdocker/上阅读有关如何与容器进行交互的更多信息
容器在哪里
如果要查看主机文件系统上的容器位置,那么可以转到/ var / lib / docker
sudo cd /var/lib/docker
sudo ls
sudo cd containers
sudo cd ID
sudo ls
您可以看到ID号表示您创建的实际容器。
创建持久存储
让我们创建一个新的WordPress容器,但这一次,将它放在后台,并将WordPress文件夹暴露给我们的主机系统,以便我们可以把文件放在它或删除我们不想要的任何文件。
首先我们在主目录中创建一个文件夹
mkdir ~/wordpress-files
然后根据我们创建的上一个图像运行并创建一个容器:
sudo docker run -d -ti --name=mynotepad-v2 -v ~/wordpress-files:/opt/bitnami/apps -e USER_UID=`id -u` -p 80:80 bitnami/wordpress
不同之处在于,我们使用-d分离模式的-d参数和-ti参数以交互模式连接终端,以便稍后可以与其进行交互。
要检查正在运行的容器,只需运行以下命令
sudo docker ps
让我们停下来
sudo docker stop mynotepad-v2
现在,如果你运行`docker ps`命令,你将看不到任何东西。
让我们再次用以下命令启动它:
sudo docker start mynotepad-v2
如果您检查我们以前创建的文件夹,您将看到WordPress安装
您可以在Docker中心https://hub.docker.com/r/bitnami/wordpress/上阅读更多关于我们使用的图像
使用DokuWiki容器创建个人记事本
这一次,我们将使用DokuWiki创建一个记事本。 正如我们以前下载的图像,唯一需要做的是创建一个容器。
所以让我们运行以下命令来创建我们的`mywikipad`命名容器
docker run -d -p 80:80 --name mywikipad mprasil/dokuwiki
然后转到您的浏览器,并添加以下地址开始您的维基记事本的配置:
http://localhost/install.php
您可以从官方文档中了解DokuWiki的更多信息,并针对您的需求定制维基:
https://www.dokuwiki.org/manual
删除Docker容器
一旦你喜欢创建,启动和停止Docker容器,你会发现自己需要清理由多个容器创建的测试混乱。
要首先删除容器,您将需要停止它,然后通过运行以下命令将其删除:
docker rm <name of container or ID>
您也可以在同一个“docker rm”命令中添加多个ID,以同时删除多个docker容器。
概要
在这部分中,我们学习了如何创建容器,并以实用的方式使用它来创建基于WordPress或DokuWiki的个人记事本。 我们查看了有关如何启动和停止我们创建的容器以及如何删除映像和容器的一些基本命令。
在下一部分中,我们将介绍如何通过创建我们自己的Docker图像来创建。