在Ubuntu上搭建Docker私有仓库,你可以使用Docker自带的registry
镜像。以下是详细的步骤:
如果你还没有安装Docker,可以按照以下步骤进行安装:
sudo apt update
sudo apt install docker.io
使用以下命令拉取Docker Registry镜像:
docker pull registry:2
创建一个目录来存储注册表数据,并运行Registry容器:
mkdir -p /myregistry
docker run -d -p 5000:5000 --restart=always --name registry registry:2
这个命令会在后台运行一个名为registry
的容器,并将容器的5000端口映射到主机的5000端口。
为了让你的Docker客户端能够与私有仓库通信,你需要配置Docker客户端。创建或编辑/etc/docker/daemon.json
文件,添加以下内容:
{
"insecure-registries" : ["localhost:5000"]
}
然后重启Docker服务:
sudo systemctl restart docker
假设你有一个本地镜像myimage
,你可以将其标记并推送到私有仓库:
docker tag myimage localhost:5000/myimage:latest
docker push localhost:5000/myimage:latest
你可以从私有仓库拉取镜像:
docker pull localhost:5000/myimage:latest
默认情况下,私有仓库是不安全的,因为它允许任何人访问。为了提高安全性,你可以使用以下方法:
mkdir -p /myregistry/certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /myregistry/certs/domain.key -x509 -days 365 -out /myregistry/certs/domain.crt
docker run -d -p 5000:5000 \
--restart=always \
--name registry \
-v /myregistry/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
registry:2
{
"insecure-registries" : ["localhost:5000"]
}
/etc/docker/auth.json
:{
"auths": {
"localhost:5000": {
"username": "admin",
"password": "password"
}
}
}
{
"insecure-registries" : ["localhost:5000"],
"credsStore": "desktop"
}
通过以上步骤,你就可以在Ubuntu上搭建一个安全的Docker私有仓库。