docker建立私有仓库的过程

Docker建立私有仓库的过程

Docker 是一款基于 Linux 的轻量级虚拟化,可以快速部署和管理容器化应用程序,它广泛应用于开发、测试、部署等环节。 Docker Hub 是 Docker 的云服务平台,可以让你共享或者获取 Docker 的 image。但是,在特殊场景下,如网络不便、代码私密性要求等情况下,我们需要自建 Docker 私有仓库来存储自己的 Docker image。私有仓库可以在局域网内提供高效、便捷的镜像服务,极大的提高了开发效率。

下面是 Docker 建立私有仓库的完整攻略。

一、创建用于存储 image 的目录

首先,我们需要在自己的服务器上创建一个目录,用于存储 Docker image。这个目录可以是任意的,例如:

sudo mkdir -p /data/docker_registry
sudo chown -R www-data:www-data /data/docker_registry

其中,docker_registry 目录是存放 Docker image 的目录,www-data 用户组是访问该目录的用户组。

二、安装 Docker

在创建好 Docker image 存储目录之后,我们需要安装 Docker,安装 Docker 可以参考官方的文档,这里就不再赘述。

三、创建 Docker Registry 容器

在安装 Docker 后,我们需要构建 Docker Registry image,并在 Docker 容器中运行该 image。

1. 构建 Docker Registry Image

我们可以使用 Docker 官方提供的 Registry Image,也可以根据自己的需求构建 Registry Image。

docker pull registry:2.7.1
docker tag registry:2.7.1 my-registry:1.0

其中,registry:2.7.1 是 Docker 官方提供的 Docker Registry Image,my-registry:1.0 是我们为该 Docker image 自定义的镜像名称和版本号。

2. 启动 Docker Registry 容器

使用以下命令启动 Docker Registry 容器:

docker run -d -p 5001:5000 --name my-registry -v /data/docker_registry:/var/lib/registry my-registry:1.0

其中:
- -d 表示以后台方式运行容器;
- -p 表示发布容器的端口,这里发布容器的端口为 5001,实际可以自定义;
- --name 指定容器的名称为 my-registry;
- -v 表示容器的内部目录挂载到本地的目录,这里/var/lib/registry 目录挂载到 /data/docker_registry 目录。这样,容器中的 image 文件就可以存储在 /data/docker_registry 目录;
- my-registry:1.0 是我们自定义的 Docker Registry 镜像名称和版本号。

3. 配置 Docker

我们需要配置 Docker,使它在向私有仓库中 push 和 pull image 时可以正确识别。

可以在 /etc/docker/daemon.json 中配置,如果没有该文件,可以新建一个。

{
  "insecure-registries":["my-registry:5001"]
}

其中,my-registry:5001 是我们上面创建的 Docker Registry 容器的 IP 地址和端口。

4. 重启 Docker 服务

修改完 /etc/docker/daemon.json 后,我们需要重启 Docker 服务。

sudo systemctl restart docker

四、向私有仓库中 push 和 pull image

在 Docker Registry 容器中启动成功后,我们就可以使用 docker push 和 docker pull 命令向私有仓库中 push 和 pull image 了。

push image

我们需要为 Docker image 添加 tag,指定为我们自己的私有仓库名。

docker tag my-image:latest my-registry:5001/my-image:latest

备注:
- my-image:latest 是我们本地要 push 到 Docker Registry 容器中的镜像名称和版本号;
- my-registry:5001 是私有仓库的 IP 地址和端口;
- my-image:latest 是我们想要 push 到私有仓库的镜像名称和版本号。

然后,我们可以使用 docker push 命令将镜像推送到私有仓库中:

docker push my-registry:5001/my-image:latest

pull image

我们可以使用 docker pull 命令从私有仓库中 pull image。

docker pull my-registry:5001/my-image:latest

五、示例

下面,我们以 Node.js 的应用为例来演示如何构建 Docker image 并 push 到私有仓库中。

1. 编写 Node.js 应用

我们首先需要编写一个 Node.js 应用,这里简单起见,我们只编写了一个简单的 HTTP Server。

const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

将这个文件保存为 index.js。

2. 编写 Dockerfile

在 Node.js 应用编写完后,我们需要构建 Docker image,下面是一个简单的 Dockerfile。

FROM node:12
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]

在上述 Dockerfile 中,我们首先使用 node:12 镜像作为基础镜像,然后将当前目录下的 package*.json 文件拷贝到镜像中,运行 npm install 安装应用程序的依赖包,最后拷贝整个当前目录到镜像中,暴露容器的端口为 3000,指定应用程序的启动命令为 npm start。

3. 构建 Docker image 并 push 到私有仓库中

在编写完 Dockerfile 后,我们需要使用 docker build 命令构建 Docker image。

docker build -t my-registry:5001/my-node-app:1.0 .

其中:
- -t my-registry:5001/my-node-app:1.0 指定要构建的 Docker image 的名称和版本号;
- . 表示 Dockerfile 文件在当前目录下。

构建成功后,我们可以使用 docker push 命令将 Docker image 推送到私有仓库中。

docker push my-registry:5001/my-node-app:1.0

成功推送到私有仓库中后,我们可以使用 docker pull 命令从私有仓库中 pull image。

docker pull my-registry:5001/my-node-app:1.0

结论

私有仓库提供了更加安全、可靠、高效的 image 管理服务,我们可以在自己的局域网中建立 Docker 私有仓库,极大的提高 image 的管理和部署效率。本篇攻略详细讲解了 Docker 建立私有仓库的过程,同时提供了两个简单的示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:docker建立私有仓库的过程 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • docker_基础用法

    1. docker architecture   2. 命令  

    Docker 2023年4月11日
    00
  • .Net6在Docker环境下操作Selenium.Chrome的那些坑

    .Net6中想实现对某个网址截屏,可通过Selenium模拟访问网址并实现截图。 实现 安装Nuget包 <PackageReference Include=”Selenium.Chrome.WebDriver” Version=”85.0.0″ /> <PackageReference Include=”Selenium.Support”…

    Docker 2023年4月11日
    00
  • Docker存储驱动之总览

      本文会介绍Docker存储驱动的特性,别列出现在已经支持的存储驱动,最后,会介绍如果选型适合你的存储驱动。 可插拔的存储驱动架构   Docker的存储驱动架构是可插拔的,可以让你很方便的将适合你环境和用例的存储驱动“插进”Docker。每个Docker存储驱动都建立在一种Linux文件系统或者卷管理系统之上,也可以很自由地按照其自己的方法去实现镜像层和…

    Docker 2023年4月11日
    00
  • Docker 教程之CentOS安装 Docker

    下面是 Docker 教程之CentOS安装 Docker 的完整攻略。 安装 Docker 1.更新yum软件包: sudo yum update 2.安装必要的软件包: sudo yum install -y yum-utils device-mapper-persistent-data lvm2 3.添加Docker的官方GPG密钥: sudo yum…

    Docker 2023年5月16日
    00
  • docker安装influxdb的详细教程(性能测试)

    下面我将为你详细讲解“docker安装influxdb的详细教程(性能测试)”的完整攻略,包含两个示例说明。 准备工作 首先,我们需要安装 Docker 和 Docker Compose,如果你已经安装了,请跳过该步骤。可以参考 Docker 官方文档:https://docs.docker.com/engine/install/ 和 https://doc…

    Docker 2023年5月16日
    00
  • 重启后 Docker服务及容器自动启动设置

    重启服务器后,我们知道如何重启docker服务(将启动命令加入到/etc/rc.d/rc.local配置文件中),但是docker容器确没有自动启动,还需要我们手动去启动容器。如何能做到重启docker服务后,能自动重启docker容器呢。 docker容器自动启动设置在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启: d…

    Docker 2023年4月12日
    00
  • Docker 安装和使用

    安装 curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh or sudo sh get-docker.sh –mirror Aliyun sudo usermod -aG docker your-user 最好用国内的源,国外的源容易卡,容易安装失败 常用命令 下…

    Docker 2023年4月13日
    00
  • 安装docker

    docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部