如何在Ubuntu 18上设置Docker Private Registry()

本文概述

  • 要求
  • 入门
  • 安装Docker
  • 安装Docker Registry Container
  • 在客户端系统上创建Docker容器映像
  • 在私有注册表服务器上上传Nginx映像
Docker Registry是一个软件应用程序, 可让你在组织内创建和存储映像。
你还可以在Docker Hub公共注册表上创建和上传映像。但是, 这些图像变为公开图像, 任何人都可以访问和使用你的图像。因此, 建议使用允许你控制和保护映像的Docker私有注册表。
在本教程中, 我将解释如何在Ubuntu 18.04上设置Docker私有注册表。
要求
  • 两台具有根凭据的Ubuntu服务器
  • 两台服务器上的静态IP地址
入门在开始之前, 你将需要在两个系统上都配置主机名解析。因此, 两个系统都可以通过主机名相互通信。
为此, 请在两个系统上运行以下命令:
echo "192.168.0.100 server" > > /etc/hostsecho "192.168.0.102 client" > > /etc/hosts

完成后, 你可以继续下一步。
安装Docker接下来, 你将需要在两个系统上安装Docker软件包。默认情况下, Docker在Ubuntu 18.04默认存储库中不可用。因此, 你将需要添加它们。
首先, 使用以下命令安装所需的软件包:
apt-get install apt-transport-https software-properties-common ca-certificates curl -y

接下来, 使用以下命令添加Docker存储库:
wget https://download.docker.com/linux/ubuntu/gpg apt-key add gpgecho "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" | tee /etc/apt/sources.list.d/docker.list

接下来, 更新存储库并使用以下命令安装Docker:
apt-get update -yapt-get install docker-ce -y

安装完成后, 使用以下命令检查docker的状态:
systemctl status docker

你应该看到以下输出:
docker.service - Docker Application Container EngineLoaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)Active: active (running) since Wed 2019-05-01 15:08:45 UTC; 7min agoDocs: https://docs.docker.comMain PID: 2658 (dockerd)Tasks: 8CGroup: /system.slice/docker.service└─2658 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

安装Docker Registry Container首先, 你需要在服务器系统上安装注册表容器。你可以通过运行以下命令来做到这一点:
docker pull registry

下载注册表映像后, 应该会看到以下输出:
Using default tag: latestlatest: Pulling from library/registryc87736221ed0: Pull complete 1cc8e0bb44df: Pull complete 54d33bcb37f5: Pull complete e8afc091c171: Pull complete b4541f6d3db6: Pull complete Digest: sha256:3b00e5438ebd8835bcfa7bf5246445a6b57b9a50473e89c02ecc8e575be3ebb5Status: Downloaded newer image for registry:latest

接下来, 使用以下命令启动注册表容器:
docker run -d -p 5000:5000 --restart=always --name registry registry

你可以使用以下命令查看正在运行的注册表容器:
docker ps

你应该看到以下输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES4912e461745f registry "/entrypoint.sh /etc…" About a minute ago Up About a minute 0.0.0.0:5000-> 5000/tcp registry

在客户端系统上创建Docker容器映像你的注册表服务器现在可以使用了。是时候在客户端系统上创建Docker容器映像了。
首先, 登录到客户端系统并创建一个dockerfile来构建Nginx Web服务器映像:
mkdir Imagecd Imagenano dockerfile

添加以下行:
FROM ubuntu:18.04LABEL project="Nginx Web Server Image"LABEL maintainer "[email  protected]"RUN \apt-get update & & \apt-get install -y nginx & & \rm -rf /var/lib/apt/lists/* & & \echo "\ndaemon off; " > > /etc/nginx/nginx.conf & & \chown -R www-data:www-data /var/lib/nginx# Define mountable directories.VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]# Define working directory.WORKDIR /etc/nginx# Define default command.CMD ["nginx"]# Expose ports.EXPOSE 80EXPOSE 443

保存并关闭文件。然后, 通过运行以下命令来构建Nginx映像:
docker build -t ubuntu:nginx .

成功构建Nginx映像后, 你应该看到以下输出:
---> bc6e61406108Step 5/9 : VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]---> Running in 30832b7ff816Removing intermediate container 30832b7ff816---> 1940ec1c2225Step 6/9 : WORKDIR /etc/nginx---> Running in 88755ef2d7c8Removing intermediate container 88755ef2d7c8---> 4fe930c96a73Step 7/9 : CMD ["nginx"]---> Running in c8d492317d88Removing intermediate container c8d492317d88---> 3218acfd15f8Step 8/9 : EXPOSE 80---> Running in 35921ef45db9Removing intermediate container 35921ef45db9---> a6a299b86a6dStep 9/9 : EXPOSE 443---> Running in 755441cefe2fRemoving intermediate container 755441cefe2f---> 9be7dc6b0825Successfully built 9be7dc6b0825Successfully tagged ubuntu:nginx

【如何在Ubuntu 18上设置Docker Private Registry()】接下来, 你可以使用以下命令检查生成的图像:
docker images

你应该在以下输出中看到你的nginx图像:
REPOSITORY TAG IMAGE ID CREATED SIZEubuntu nginx 9be7dc6b0825 About a minute ago 161MBubuntu 18.04 d131e0fa2585 4 days ago 102MBregistry latest f32a97de94e1 7 weeks ago 25.8MB

接下来, 你将需要以” registryserver:端口号/图像名称:标签” 格式重命名nginx图像。
你可以使用以下命令进行操作:
docker tag ubuntu:nginx server:5000/ubuntu:nginx

在私有注册表服务器上上传Nginx映像现在, 你可以使用push命令将生成的Nginx映像上载到Private Registry Server:
docker push server:5000/ubuntu:nginx

图像成功上传后, 你将看到以下输出:
The push refers to repository [server:5000/ubuntu]2e5us8en4s9d: Pushed l1is9e9d8j7e: Pushed nginx: digest: sha256:aa0d8fi49dir0d7rn33nee122b size: 1862

你还可以使用以下命令从注册表服务器下载上载的图像:
docker pull server:5000/ubuntu:nginx

我希望你现在已有足够的知识来在生产服务器上设置自己的私有Docker注册表服务器。如果你希望获得更多的Docker动手知识, 请查看此在线课程。

    推荐阅读