下面是从零搭建Docker私有仓库的步骤的完整攻略:
准备工作
在开始搭建Docker私有仓库之前,需要完成以下准备工作:
-
安装Docker:在使用Docker的过程中,首先需要在主机上安装Docker,可以参考Docker官方文档进行安装。
-
申请域名:需要一个域名用来访问私有仓库,默认域名为
registry.local
,可以自定义域名。
搭建私有仓库
- 创建一个新的目录用于存放仓库数据,并进入该目录。
$ mkdir registry && cd registry
- 创建一个新的Docker容器,用于搭建私有仓库。
$ docker run -d -p 5000:5000 --restart=always --name registry \
-v `pwd`/data:/var/lib/registry \
-v `pwd`/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
registry:2
解释:
-d
:以后台运行的方式启动容器。-p 5000:5000
:将容器的5000端口映射到宿主机的5000端口。--restart=always
:容器在挂掉后会自动重启。--name registry
:指定容器的名字为registry
。-v
:映射数据卷,将/var/lib/registry
和/auth
目录挂载到宿主机的./data
和./auth
目录。-
-e
:设置环境变量,指定使用htpasswd访问私有仓库,以及用户名和密码的路径。 -
创建用户名和密码
在./auth
目录下创建一个新的用户名和密码,并将其加入到./auth/htpasswd
中。
$ mkdir auth
$ docker run --entrypoint htpasswd registry:2 -Bbn your_username your_password >> auth/htpasswd
- 配置域名解析
需要将注册表的域名解析到本机的IP地址。可以通过修改/etc/hosts
文件来实现。
$ echo "127.0.0.1 registry.local" >> /etc/hosts
- 配置Docker客户端
在Docker客户端中配置daemon.json
文件,以便能够认证并推送到私有仓库。如果没有该文件,则需要手动创建。
$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<EOF
{
"insecure-registries" : ["registry.local:5000"],
"auths": {
"registry.local:5000": {
"auth": "$(echo -n your_username:your_password | base64)"
}
}
}
EOF
$ sudo systemctl restart docker
- 验证
最后,我们可以通过以下命令,验证是否能够成功访问私有仓库。
$ docker pull alpine
$ docker tag alpine registry.local:5000/my-alpine
$ docker push registry.local:5000/my-alpine
这是一个基础示例。下面我们来看一个更加实际的示例,如何将本地编写好的Docker镜像推送到私有仓库。
将本地的Docker镜像推送到私有仓库
- 创建Docker镜像
首先我们需要创建一个Docker镜像,可以使用以下命令创建。
$ cd app
$ docker build --tag my-app:1.0 .
在这个示例中,使用了一个名为my-app
的本地Docker镜像。
- 标记Docker镜像
Docker推送镜像时需要先将本地镜像标记,并指定要推送的仓库和镜像标签版本。如下所示,将本地的my-app:1.0标记为私有仓库里的my-app:1.0
。
$ docker tag my-app:1.0 registry.local:5000/my-app:1.0
- 推送镜像到私有仓库
最后,我们通过以下命令将标记后的镜像推送到私有仓库。
$ docker push registry.local:5000/my-app:1.0
好了,以上就是从零搭建Docker私有仓库的完整攻略,包含了基础示例和推送本地Docker镜像的实际示例的详细步骤。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:从零搭建docker私有仓库的步骤 - Python技术站