在CentOS 7上使用Docker Swarm(CE)进行粘性会话
使用其他系统?简介Docker Swarm将您的单个服务器转变为计算机集群,从而促进扩展,高可用性和扩展性。
我们都知道并喜欢Docker,这是一个在多台机器上创建,管理和分发应用程序容器的平台。Docker Inc.提供了一个服务来托管要下载(或拉出)的开源容器,例如git存储库(称为“ Docker Registry”)。可以将其视为Docker容器的GitHub。
但是,如果您要托管自己的注册表而不与公共注册表分开,该怎么办?好吧,Docker Inc.已在GitHub上开源了他们的Registry应用程序。
本教程将带您了解在新VPS上使用CoreOS设置私有Docker注册表的过程。
我们不会花大量时间来详细研究Docker和CoreOS可以做什么,因为它不在本教程的讨论范围之内。本质上,CoreOS专为大型服务器群集而设计,它体积小,速度快,并且会自动获得定期的安全更新。它的根文件系统也是只读的,这意味着您必须使用Docker来运行基本安装中未包含的任何类型的软件。
这使Core OS成为Docker的理想主机系统!
Docker Inc.已将注册表作为顶级映像提供,这意味着我们可以使用以下简单的方法将其拉低:
docker pull registry
这可能需要几分钟,具体取决于连接速度。
作为顶级映像的优势还意味着它会得到定期的支持和更新。
现在让我们测试一下注册表。我们可以使用注册表映像创建一个新容器:
docker run -p 5000:5000 -d --name=basic_registry registry
对于那些不太使用Docker的用户,该-p
标记代表PORT
,表示我们将端口5000从容器公开到主机端口5000。
该-d
标记代表daemon
,这将导致容器在后台运行,而不是将输出打印到当前SSH会话,我们还希望使用该--name
选项来命名此基本测试容器,以便我们以后可以轻松地对其进行管理。
确保您的基本注册表容器正在使用运行docker ps
。输出应类似于:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
edfb54e4a8c4 registry:0.8.1 "/bin/sh -c 'exec do 7 seconds ago Up 6 seconds 0.0.0.0:5000->5000/tcp basic_registry
另外,http://YOUR_IP:5000
在您的Web浏览器中访问,您应该会收到类似以下的消息:
"docker-registry server (dev) (v0.8.1)"
注意
dev
括号中的单词。这意味着服务器当前正在运行dev config。我们将尽快查看更多配置。
现在,您正在运行自己的(非常基本的)容器注册表!但是我们还没有完成。
也许您想保密,或者将图像存储在Amazon S3而不是本地存储上。让我们在下一部分中介绍各种配置选项。
在继续之前,让我们杀死测试容器,以免遇到冲突的端口。
docker kill basic_registry
我们可以通过两种方式将配置传递给Docker注册表。一种方法是将环境变量传递到新容器,另一种方法是添加配置文件。
这是我们将要使用的一些常用配置选项:
loglevel
-记录到控制台的最少信息量。默认值为info
。standalone
-该注册管理机构应自行采取行动吗?(从不查询公共注册表。)默认值为true
。index_endpoint
-如果不是独立的,我们还将查询什么其他索引?默认index.docker.io
。cache
和cache_lru
-关于使用Redis的缓存对小文件的选项,我们将在后面讨论这个。storage
-我们应该为此服务器使用哪个存储后端?(在本教程中,我们将使用本地)。storage_path
-如果使用本地存储,我们应该使用哪个目录保存文件?在进行配置之前,我们需要一个基础文件。来自GitHub上Docker注册表存储库的文件可以正常工作:
wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml
该文件应成功保存,并显示以下内容:
2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]
大!现在,我们可以修改此文件以适合我们的需求。
Core OS随附的唯一文本编辑器是vim
,但是不用担心,如果您以前从未使用过它,它将逐步说明编辑内容和操作方法。
vim config_sample.yml
打开文件后,点击,I
右下角将显示:-- INSERT --
插入模式。使用箭头键一直滚动到文件底部,您应该看到标记为的部分prod
。
我们将更改两行,更改如下
prod:
<<: *local
storage_path: _env:STORAGE_PATH:/data
我们所做的是更改prod
配置以从该local
部分而不是该s3
部分派生。然后,我们重写,storage_path
以使用/data
新容器内的路径。
确认所有更改正确后,单击ESC
以退出插入模式并键入:wq
(这意味着将更改写入文件,然后退出vim。)
现在让我们将文件重命名为 config.yml
mv config_sample.yml config.yml
如果您想使用Redis来加快容器注册表的速度,就像从公共注册表中提取一个新容器并添加几行配置一样简单。
首先,拉出Redis的顶级图像:
docker pull redis
成功拉出映像后,我们可以运行它并对其命名,就像使用测试注册表一样:
docker run -d --name registry-redis redis
因为redis在内存中,所以我们不需要对其进行任何配置,因为我们将在以后的步骤中将其链接到注册表容器。
再次使用docker ps
以下命令确保其正在运行:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54f65641eccf redis:2.8 "redis-server" 2 seconds ago Up 1 seconds 6379/tcp registry-redis
现在,重新打开config.yml
in vim
并进入插入模式,就像我们第一次编辑它一样。
在该prod
部分下面添加以下几行,确保缩进正确。这次我们仅添加cache
和cache_lru
。
cache:
host: _env:REDIS_PORT_6379_TCP_ADDR
port: _env:REDIS_PORT_6379_TCP_PORT
db: 0
cache_lru:
host: _env:REDIS_PORT_6379_TCP_ADDR
port: _env:REDIS_PORT_6379_TCP_PORT
db: 1
与Redis容器链接后,将环境变量REDIS_PORT_6379_TCP_ADDR
和REDIS_PORT_6379_TCP_PORT
传递给注册表容器。
这样,您现在已经设置了一个Redis容器,它将与您的注册表容器紧密配合。现在开始构建注册表!
我们已经准备好所有配置,现在需要构建实际的注册表容器。
启动vim Dockerfile
以创建新的Dockerfile。进入插入模式,然后执行以下编辑。
FROM registry:latest
# Add the custom configuration file we made
ADD ./config.yml /docker-registry/config/config.yml
# Create the data directory
RUN mkdir /data
# Set the configuration file to config.yml
env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml
# Make sure we use the prod configuration settings
env SETTINGS_FLAVOR prod
上面我们所做的基本上是扩展了注册表映像,因此它将使用我们的配置文件和设置。Dockerfile是一组用于Docker读取和构建的构建指令。如果您想了解更多有关Dockerfile及其语法的信息,请查看官方Docker站点文档。
接下来,我们需要构建要使用的容器。
docker build -t my_registry .
Sending build context to Docker daemon 13.82 kB
Sending build context to Docker daemon
Step 0 : FROM registry
---> e42d15ec8417
Step 1 : ADD ./config.yml /docker-registry/config/config.yml
---> 4339f026d459
Removing intermediate container 2d5138fbcd34
Step 2 : RUN mkdir /data
---> Running in a090f0bdbfd1
---> 8eb27ba6e12a
Removing intermediate container a090f0bdbfd1
Step 3 : env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml
---> Running in 565b5bfb2b22
---> 914462e46dc0
Removing intermediate container 565b5bfb2b22
Step 4 : env SETTINGS_FLAVOR prod
---> Running in 31a92847b851
---> b5949575c374
Removing intermediate container 31a92847b851
Successfully built b5949575c374
现在我们可以运行了!
让我们在主机系统上创建一个目录以将其作为/data
卷挂载在容器中。
mkdir registry-data
现在我们可以启动一个新的容器。如果您打算使用Redis缓存,请使用下面的第二条命令。
# For a non-Redis cache registry
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg my_registry
# For a Redis cached registry (Must have followed Redis Caching section above)
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg --link registry-redis:redis my_registry
为确保服务器正常运行,请访问http://YOUR_IP:5000
。您将看到以下消息:
"docker-registry server (prod) (v0.8.1)"
注意(prod)
我们的配置更改成功的含义!
现在我们有了自己的正在运行的注册表,我们希望本地计算机上的Docker客户端开始使用它。通常,您会使用以下命令:docker login
,但是为了使用,我们需要在login命令中再添加一个参数:
docker login YOUR_IP:5000
输入用户名和密码(例如,创建一个新帐户),然后忽略提示您必须激活它的消息。
接下来,让我们提取一个库存图像,并将其推到我们自己的存储库中。
# Pull the busybox image from the public registry
docker pull busybox
# Tag it with our IP/URL
docker tag busybox YOUR_IP:5000/busybox
# Push it to our newly made registry
docker push YOUR_IP:5000/busybox
如果一切正常,则最终消息应遵循以下内容:
Pushing tag for rev [a9eb17255234] on
恭喜你!您已经设置了自己的docker存储库。
以下是有关如何改善新的私人注册表的一些想法:
使用其他系统?简介Docker Swarm将您的单个服务器转变为计算机集群,从而促进扩展,高可用性和扩展性。
Rancher OS是围绕Docker构建的非常轻量级的Linux发行版。操作系统本身的重量约为20MB。本教程将帮助您入门和运行
借助Vultr Docker应用程序,您可以轻松地在Vultr服务器实例上部署Docker。同时,您可以方便地进行Docker管理任务
简介Docker是一个应用程序,可让我们部署作为容器运行的程序。它是用流行的Go编程语言编写的
概述RancherOS是一个非常轻量级的操作系统(仅约60 MB),它以PID 0作为运行系统服务的方式运行系统Docker守护程序。
使用其他系统?简介Docker是一个允许在虚拟容器内部署软件的应用程序。它写在G
LXC容器(Linux容器)是Linux中的一种操作系统功能,可用于在单个主机上运行多个隔离的Linux系统。塞斯
本教程介绍了Docker入门的基础知识。我假设您已经安装了Docker。本教程中的步骤将适用于
本文将向您展示如何在Docker容器中部署Node应用程序。注意:本教程假定您已安装Docker并已阅读
在运行Web应用程序时,通常希望充分利用资源,而不必转换软件以使用多线程处理程序。
使用其他系统?简介Rancher是一个用于运行容器和构建私有容器服务的开源平台。牧场主是基地
Kubernetes是Google开发的开放源代码平台,用于跨服务器集群管理容器化应用程序。它以十年为基础
简介本指南将向您展示如何使用多个Alpine Linux 3.9.0服务器和Portainer创建和配置Docker群。请注意
使用其他系统?简介Docker Swarm将您的单个服务器转变为计算机集群。便于扩展,高可用性和
Harbor是一个开放源代码的企业级注册服务器,用于存储和分发Docker映像。Harbor扩展了开源Docker Distribution b
概述本文旨在帮助您立即建立Kubernetes集群并使用kubeadm运行。本指南将在以下位置部署两台服务器
前提条件Docker引擎1.8+。至少4GB的磁盘空间。至少4GB的RAM。步骤1.安装Docker为了安装SQL-Server,Docker mus
使用其他系统?Docker是一个允许部署作为容器运行的程序的应用程序。它是用流行的Go程序编写的
PHP应用程序通常由Web服务器,关系数据库系统和语言解释器本身组成。在本教程中,我们将继续学习
勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根
ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。
Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+
閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。
最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息
大數據的13個商業數據提取工具
我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true
隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。
洞察 26 種大數據分析技術:第 1 部分
過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。