Reference: https://www.jianshu.com/p/86e573f18df3
1 Docker的安装
yum install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates| sort -r
yum install docker-ce.x86_64
docker version
2 部署nexus
docker pull sonatype/nexus3:3.16.0
docker images
mkdir /opt/nexus-data
chown -R 200 /opt/nexus-data
docker run -it --rm sonatype/nexus3:3.5.2 cat /etc/passwd
docker run -d --restart=always --name nexus --ulimit nofile=65536:65536 -p 18081:8081 -v /opt/nexus-data:/nexus-data sonatype/nexus3:3.16.0
3 登录图形化界面
- 访问链接: http://36.134.187.221:18081/
-
默认登录用户密码:admin/admin123
image.png
3.1 创建Repository
image.png
image.png
3.2 配置完成后修改监听端口2021后重启Docker
# docker stop nexus
# docker rm nexus
# docker run -d --restart=always --name nexus --ulimit nofile=65536:65536 -p 18081:8081 -p 2021:2021 -v /opt/nexus-data:/nexus-data sonatype/nexus3:3.16.0
3.3 登录Respository
通过docker login命令登录时会出现如下报错,由于目前不支持https导致:
Error response from daemon: Get https://10.0.100.35:2021/v2/: http: server gave HTTP response to HTTPS client
通过如下方式解决该问题:
# vim /etc/docker/daemon.json
{ "insecure-registries":["10.0.100.35:2021"] }
# systemctl stop docker
# systemctl start docker
4 上传镜像
# docker login 10.0.100.35:2021 -u admin -p "admin123"
# docker tag jenkins/jenkins:lts 10.0.100.35:2021/jenkins/jenkins:lts
# docker push 10.0.100.35:2021/jenkins/jenkins:lts
5 登录控制台检查镜像列表
image.png
6 kubernetes与镜像仓库的认证
6.1 方式一: 通过secret方式
在应用所在的kubernetes中创建secret
# kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD -n NAMESPACE
在应用deployment yaml中的imagePullSecrets字段设置对应的secret:
apiVersion: v1
kind: Pod
metadata:
name: foo
namespace: awesomeapps
spec:
containers:
- name: foo
image: janedoe/awesomeapp:v1
imagePullSecrets:
- name: myregistrykey
6.2 方式二:节点配置认证文件的方式
在本地服务器执行docker login成功后,本地会生成认证文件,如下所示:
# cat ~/.docker/config.json
可以将该文件上传到应用所在kubernetes集群的所有worker节点。