本文概述
- 要求
- 入门
- 安装Docker
- 安装Docker Registry Container
- 在客户端系统上创建Docker容器映像
- 在私有注册表服务器上上传Nginx映像
你还可以在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动手知识, 请查看此在线课程。
推荐阅读
- 5种鲜为人知的惊人AWS产品推荐
- 面向机器学习和AI开发人员的7个平台即服务
- 观后感|当幸福来敲门 The Pursuit of Happyness
- h5调用app中写好的的方法
- Android Fragment碎片
- Android如何防止apk程序被反编译
- Android 创建与解析XML—— 概述
- 错误(Attempted to load applicationConfig: [classpath:/application.yml] but snakeyaml was not found on)
- Android Studio环境安装