考虑到未来可能有多种项目资产需要管理,这里选用Nexus搭建私有仓库,开源版有UI和足够的功能可以管理maven,nuget,docker等包。
项目构建
项目目录
nexus
data
secret.json
docker-compose.yml
Docker Compose
version: '3.8'
services:
nexus:
image: sonatype/nexus3:latest
container_name: nexus
ports:
- "18081:8081"
volumes:
- ./data:/nexus-data
environment:
- INSTALL4J_ADD_VM_PARAMS=-Xms256m -Xmx2g -XX:MaxDirectMemorySize=2g
- NEXUS_SECRETS_KEY_FILE=/nexus-data/secret.json
restart: unless-stopped
secret.json
{
"active": "active-secret-id",
"keys": [
{
"id": "active-secret-id",
"key": "active-secret-key"
}
]
}
初始账户
用户名:admin
密码:通过以下命令获取
sudo docker exec nexus cat /nexus-data/admin.password
Docker仓库配置
新建Docker仓库
Blob Stores > Create Blob Store > File,来配置docker的存放区。
Repositories > Create repository > docker (hosted),这里要注意勾选Http,并填写端口号,后面docker命令行login, push, pull等操作都基于此端口号。Blob Store选择刚刚配置的。
如果要配置允许不经身份验证的pull操作,就勾选Allow anonymous docker pull。
如果要允许某个版本重新deploy,就配置Deployment policy。
配置自动回收
System > Tasks > Create task > Docker - Delete unused manifests and images,根据表单选择清理的Blob和频率。这样删除了某个镜像后,这个task可以在指定时间回收相关的空间。
Docker基础操作
打包测试镜像
目录
test-image
Dockerfile
index.html
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Test Page</title>
</head>
<body>
<h1>Welcome to the Test Page</h1>
<p>This is a simple web page for testing purposes.</p>
</body>
</html>
Dockerfile
FROM busybox:glibc
COPY ./ /www
CMD ["httpd", "-f", "-p", "80", "-h", "/www"]
EXPOSE 80
打包命令
docker build -t test-image:latest -t test-image:v1.0.0 .
登录远程仓库
docker login registry.mydocker.com:2023 -u user -p password
本地镜像打标签
docker tag test-image:latest registry.mydocker.com:2023/test/test-image:latest
推送镜像到远程仓库
docker push registry.mydocker.com:2023/test/test-image:latest
列出远程仓库所有镜像
curl -u user:password \\n "http://registry.mydocker.com:2023/service/rest/v1/components?repository=docker"
拉取远程镜像
docker pull registry.mydocker.com:2023/test/test-image:latest
删除本地镜像
docker rmi test-image:latest
删除远程镜像
可以通过Nexus UI操作
常见问题解决
http访问提示不安全
For Mac
Mac系统中,打开docker客户端,在配置中找到如下位置,添加insecure-registries相关配置
For Linux
#新建docker目录
mkdir -p /etc/docker
#新建daemon.json文件
vim /etc/docker/daemon.json
#在insecure-registries中增加你的仓库地址
{ "insecure-registries":["registry.mydocker.com:2023"] }
#保存修改后,重启docker
systemctl restart docker
评论