维护网站是什么意思,青岛开发区建网站公司,app软件开发企业,网站必须做商标么前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到教程。 介绍
Docker是一个很好的工具#xff0c;但要真正充分利用它的潜力#xff0c;最好是应用程序的每个组件都在它自己的容器中运行。对于…前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到教程。 介绍
Docker是一个很好的工具但要真正充分利用它的潜力最好是应用程序的每个组件都在它自己的容器中运行。对于包含大量组件的复杂应用程序编排所有容器以便一起启动和关闭更不用说彼此交谈可能很快变得笨拙。
Docker社区提出了一种名为Fig的流行解决方案该解决方案允许您使用单个YAML文件编排所有Docker容器和配置。这变得非常流行以至于Docker团队最终决定根据Fig的源代码制作他们自己的版本。他们称之为Docker Compose。简而言之它使处理Docker容器的编排流程如启动关闭和设置内部容器链接和卷非常容易。
在本文的最后您将安装Docker和Docker Compose并对Docker Compose的工作原理有一个基本的了解。 Docker和Docker撰写概念
使用Docker Compose需要将一大堆不同的Docker概念组合在一起因此在开始之前让我们花一些时间来回顾一下涉及的各种概念。如果您已经熟悉卷链接和端口转发等Docker概念那么您可能需要继续并跳到下一节。 Docker图像
每个Docker容器都是Docker镜像的本地实例。您可以将Docker镜像视为完整的Linux安装。通常最小安装仅包含运行映像所需的最少数量的软件包。这些映像使用主机系统的内核但由于它们在Docker容器内运行只能看到自己的文件系统所以完全可以在Ubuntu主机上运行CentOS等发行版反之亦然。
大多数Docker镜像都是通过由Docker团队维护的Docker Hub进行分发的。大多数流行的开源项目都有相应的镜像上传到Docker Registry您可以使用它来部署软件。在可能的情况下最好是抓住“官方”图片因为Docker团队保证他们遵循Docker最佳实践。 Docker镜像之间的通信
默认情况下Docker容器与主机隔离这意味着默认情况下主机不能访问Docker容器内的文件系统也不能通过网络与其通信。不用说这使默认情况下很难配置和处理在Docker容器内运行的映像。
Docker有三种主要的解决方法。第一个也是最常见的是让Docker指定将在Docker容器中设置的环境变量。在Docker容器中运行的代码将在启动时检查这些环境变量的值并使用它们来正确配置它自己。
另一个常用的方法是Docker数据量。Docker卷有两种风格 - 内部和共享。
指定内部卷意味着对于您为特定Docker容器指定的文件夹当容器被移除时数据将被保留。例如如果你想确保你的日志文件挂在你的周围你可以指定一个内部/var/log卷。
共享卷将Docker容器中的文件夹映射到主机上的文件夹中。这使您可以轻松地在Docker容器和主机之间共享文件我们将在Docker数据卷文章中探讨这些文件。
与Docker容器进行通信的第三种方式是通过网络进行通信。Docker允许通过links端口转发实现不同Docker容器之间的通信允许您将端口从Docker容器内部转发到主机服务器上的端口。例如您可以创建一个链接来允许您的WordPress和MariaDB Docker容器相互交谈并通过端口转发将WordPress发布到外部世界以便用户可以连接到它。 先决条件
要按照这篇文章您将需要以下内容
CentOS 7 Droplet具有sudo权限的非root用户有关详细信息请参阅CentOS 7上的初始服务器设置第1步 - 安装Docker
首先如果你还没有安装Docker。安装Docker最快的方法是下载并安装他们的安装脚本系统会提示您输入sudo密码。
wget -qO- https://get.docker.com/ | sh
上述命令下载并执行由Docker团队编写的小型安装脚本。如果您不信任第三方脚本或想了解脚本的更多细节请查看DigitalOcean Docker教程或Docker自己的安装文档中的说明。
如果您的用户配置不正确使用Docker会很痛苦因此请使用docker以下命令将您的用户添加到组中。
sudo usermod -aG docker $(whoami)注销并从服务器登录以激活您的新组。
设置Docker在启动时自动启动
sudo systemctl enable docker.service
最后启动Docker服务
sudo systemctl start docker.service
注意要了解有关如何使用Docker的更多信息请阅读如何安装和使用Docker入门指南中的如何使用Docker部分。 第2步 - 安装Docker撰写
现在您已经安装了Docker我们继续并安装Docker Compose。首先安装python-pip为先决条件
sudo yum install epel-releasesudo yum install -y python-pip
然后你可以安装Docker Compose
sudo pip install docker-compose
您还需要在CentOS 7上升级您的Python软件包docker-compose才能成功运行
sudo yum upgrade python*第3步 - 使用Docker Compose运行容器
公共Docker注册表Docker Hub包含一个简单的Hello World图像。现在我们安装了Docker Compose让我们用这个非常简单的例子来测试它。
首先为我们的YAML文件创建一个目录
mkdir hello-world
然后转到目录
cd hello-world
现在使用您最喜欢的文本编辑器我们将使用nano创建YAML文件
nano docker-compose.yml
将以下内容放入文件中保存文件并退出文本编辑器 my-test: image: hello-world
第一行将用作容器名称的一部分。第二行指定用于创建容器的图像。该图片将从官方Docker Hub存储库下载。
仍然在~/hello-world目录中时执行以下命令来创建容器
docker-compose up
输出应该从以下开始
Output of docker-compose upCreating helloworld_my-test_1... Attaching to helloworld_my-test_1 my-test_1 | my-test_1 | Hello from Docker. my-test_1 | This message shows that your installation appears to be working correctly. my-test_1 |
然后输出解释了Docker正在做什么
Docker客户端联系了Docker守护进程。Docker守护进程从Docker Hub中提取“hello-world”图像。Docker守护进程从该映像创建了一个新的容器该容器运行可执行文件生成您当前正在阅读的输出。Docker守护进程将输出流式传输到Docker客户端并将其发送到您的终端。
如果进程没有自行退出请按CTRL-C。
这个简单的测试并未显示Docker Compose的主要优点之一 - 能够同时上下拖放一组Docker容器。该如何与码头工人撰写Ubuntu上安装WordPress和phpMyAdmin的14.04文章展示了如何使用泊坞窗撰写运行三个容器作为一个应用程序组。它是为Ubuntu 14.04编写的但是这些步骤可以很容易地适用于CentOS 7。 第4步 - 学习Docker组合命令
我们来看看该docker-compose工具支持的命令。
该docker-compose命令在每个目录的基础上工作。您可以在一台机器上运行多组Docker容器 - 只需为每个容器创建一个目录为其目录中的每个容器创建一个docker-compose.yml文件。
到目前为止我们一直docker-compose up在自己运行并用CTRL-C它来关闭它。这允许调试消息显示在终端窗口中。这并不理想但在生产环境中运行时您会希望docker-compose更像一项服务。一个简单的方法就是-d在你up的会话中添加选项
docker-compose up -d
docker-compose 现在将分叉到后台。
要显示您的Docker容器组已停止并且当前正在运行请使用以下命令
docker-compose ps
例如以下显示helloworld_my-test_1容器已停止
Output of docker-compose psName Command State Ports ----------------------------------------------- helloworld_my-test_1 /hello Exit 0
正在运行的容器将显示Up状态
Output of docker-compose psName Command State Ports --------------------------------------------------------------- nginx_nginx_1 nginx -g daemon off; Up 443/tcp, 80/tcp
要停止应用程序组的所有正在运行的Docker容器请在与docker-compose.yml用于启动Docker组的文件相同的目录中发出以下命令
docker-compose stop
注意 docker-compose kill如果您需要更强有力地关闭它也可用。
在某些情况下Docker容器会将其旧信息存储在内部卷中。如果您想从头开始可以使用该rm命令来完全删除组成您的容器组的所有容器
docker-compose rm
如果您尝试从包含Docker容器和.yml文件的目录以外的目录执行这些命令中的任何一个它将会发出抱怨并且不会显示您的容器
Output from wrong directoryCant find a suitable configuration file in this directory or any parent. Are you in the right directory? Supported filenames: docker-compose.yml, docker-compose.yaml, fig.yml, fig.yaml 第5步 - 访问Docker容器文件系统可选
如果您需要在容器内的命令提示符下工作则可以使用该 docker exec命令。
在世界你好示例在运行后退出因此我们需要启动一个将继续运行的容器以便我们可以使用docker exec该容器访问容器的文件系统。我们来看看Docker Hub 的Nginx镜像。
为它创建一个新目录并更改为它
mkdir ~/nginx cd $_
docker-compose.yml在我们的新目录中创建一个文件
nano docker-compose.yml
并粘贴在以下内容中 nginx: image: nginx
保存该文件并退出。我们只需要使用以下命令作为后台进程启动Nginx容器
docker-compose up -d
Nginx的图像将被下载然后容器将在后台启动。
现在我们需要CONTAINER ID容器。所有正在运行的容器的列表
docker ps
您将看到类似于以下内容的内容
Output of docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e90e12f70418 nginx nginx -g daemon off 6 minutes ago Up 5 minutes 80/tcp, 443/tcp nginx_nginx_1
注意只有正在运行的容器与该docker ps命令一起列出。
如果我们想对这个容器中的文件系统进行更改我们将使用它的ID在本例中e90e12f70418并用docker exec它在容器中启动一个shell
docker exec -it e90e12f70418 /bin/bash
该-t选项打开一个终端该-i选项使其交互。这些/bin/bash选项为正在运行的容器打开一个bash shell。一定要使用您的容器的ID。
您会看到类似于以下内容的容器的bash提示符
roote90e12f70418:/#从这里你可以从命令提示符下工作。但请记住除非您位于保存为数据卷一部分的目录中否则只要容器重新启动您的更改就会消失。另一个需要注意的是大多数Docker镜像都是使用非常少量的Linux安装创建的因此您习惯使用的某些命令行工具和工具可能不存在。 结论
太棒了这样就涵盖了Docker Compose的基本概念以及如何让它安装并运行。退房的部署Wordpress和PHPMyAdmin的与码头工人撰写在Ubuntu 14.04教程如何部署与码头工人撰写的应用程序更复杂的例子。它是为Ubuntu 14.04编写的但是这些步骤可以很容易地适用于CentOS 7。
有关该docker-compose.yml文件的完整配置选项列表请参阅撰写文件参考。 转自https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-centos-7#top