前言:在k8s学习过程中,我们还需要一个关键的工具就是docker harbor,他是我们自己得私有仓库,可以理解成阿里云镜像仓库。
本章我们将学会仓库的搭建,dockerfile 构建仓库。
安装docker
我们先了解docker-io,docker-ce,docker-ee区别。
-
docker-io是以前早期的版本,centos7 yum install docker -y默认 安装的是docker-io,最新版是 1.13。
-
docker-ce是社区版本,简单理解是免费使用,提供小企业与小的IT团队使用
-
docker-ee的企业版,适用于企业级开发,同样也适用于开发、分发和运行商务级别的应用的IT 团队。付费。
在这里docker harbor不能通使用yum进行安装docker,否则会报错下边错误,我们需要安装docker-ce
[root@zjdk harbor]# ./install.sh
[Step 0]: checking if docker is installed ...
✖ Need to upgrade docker package to 17.06.0+.
如果你的服务器yum方式安装的docker,请用下边方式进行卸载。
yum remove docker docker-common docker-selinux docker-engine -y
重新安装docker-ce
#1、安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2
#紧接着配置一个稳定(stable)的仓库、仓库配置会保存到/etc/yum.repos.d/docker-ce.repo文件中
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#更新Yum安装的相关Docke软件包&安装Docker CE
yum update -y && yum install docker-ce -y
#2、设置docker daemon文件
#创建/etc/docker目录
mkdir /etc/docker -p
#更新daemon.json文件
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors":["https://pee6w651.mirror.aliyuncs.com"],
"insecure-registries": ["https://zjdk.docker.com"]
}
EOF
#注意: 一定注意编码问题,出现错误:查看命令:journalctl -amu docker 即可发现错误
#创建,存储docker配置文件
mkdir -p /etc/systemd/system/docker.service.d
#3、重新加载 重启docker服务 开启自启动
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
安装docker compose
安装需要的资料docker harbor和compose
https://pan.baidu.com/s/1uKm2tJ4IOujEGTTnpdAP3A
提取码:【zjdk】
#在线下载docker-compose ,harbor需要借助docker-compose安装
#安装依赖包
yum -y install yum-utils device-mapper-persistent-data lvm2
#复制官网上的上述命令
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#赋予该命令执行权限
chmod u+x /usr/local/bin/docker-compose
#查看其版本信息
docker-compose -version
docker-compose version 1.24.1, build 4667896b
##############一般下载肯可能会有问题,我们可以采用离线安装,以后遇到类似的都可以采用离线安装)#########
#离线安装
#上传本地文件,资料已经准备,在本地文件夹
#把本地文件拷贝到/usr/local/bin目录下
mv docker-compose /usr/local/bin/
#授权:可以执行
chmod 755 /usr/local/bin/docker-compose
#查询docker版本 会看到对应版本号
docker-compose -version
安装docker harbor
我们可以通过官网可以下载自己喜欢的版本。
#追加ip:hostname到每k8s一台机器节点;
echo "192.168.70.131 zjdk.docker.com" >> /etc/hosts
#查询harbor服务节点 /etc/hosts
192.168.70.128 k8s-master01
192.168.70.129 k8s-node01
192.168.70.130 k8s-node02
192.168.70.131 zjdk.docker.com
#你自己的windows系统中C:\Windows\System32\drivers\etc
#后期使用域名访问harbor
192.168.70.131 zjdk.docker.com
#将下载的安装包解压到指定目录
tar zxf harbor-offline-installer-v1.10.6.tgz -C /usr/local
#切换至解压后的目录中
cd /usr/local/harbor/
#编辑这个配置文件
vim harbor.yml
..............#省略部分内容
#将hostname更改为本机IP域名
hostname = zjdk.docker.com
#这行指定的是登录harbor的登录名及密码
#默认用户为“admin”,密码为“Harbor12345”
harbor_admin_password = Harbor12345
# 证书配置
certificate: /data/cert/server.crt
private_key: /data/cert/server.key
..............#省略部分内容
# 证书安装
请参考我上一篇文章
#执行自带的安装脚本,安装完毕,浏览器即可访问
./install.sh
完结撒花。
新建项目
1.首先登录 用户名称admin 密码 Harbor12345 (如果你没有在配置文件修改的话)
2.创建项目
上传镜像
我们可以去到我们k8s master或者node上进行退送镜像实验
1.先登录
[root@k8s-master01 ~]# docker login https://zjdk.docker.com
Username: admin
Password:
Error response from daemon: Get https://zjdk.docker.com/v1/users/: x509: certificate is valid for cer.com, not zjdk.docker.com
上述问题是因为我们没有在daemon.json文件种配置私仓地址。我们手动添加一下这个。如果是mac电脑除了命令行要加,你的docker客户端种也要添加。
"registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"],
"insecure-registries": ["https://zjdk.docker.com"]
重新加载docker,并重启
systemctl daemon-reload && systemctl restart docker
在次登录
[root@k8s-master01 ~]# docker login https://zjdk.docker.com
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
温馨提示:如果你第二天机器是使用yum安装的docker而不是docker-ce安装,那么你即使改了daemon.json也有可能报 x509;解决办法安装上边的方式卸载重新安装docker-ce。
对于这种重新安装的docker可能会出现的docker images显示镜像但是镜像没有任何作用,使用的时候提示如下
Error response from daemon: No such image: nginx:latest;
# 删除/var/lib/docker/image/overlay2/imagedb/content/sha256目录下相应的镜像文件即可
rm -rf /var/lib/docker/image/overlay2/imagedb/content/sha256/对应的镜像
2.给镜像打tag
# 你的镜像:你的版本
# docker tag SOURCE_IMAGE[:TAG] zjdk.docker.com/zjdk/IMAGE[:TAG]
[root@k8s-master01 sha256]# docker tag nginx zjdk.docker.com/zjdk/nginx:v1
[root@k8s-master01 sha256]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 519e12e2a84a 3 days ago 133MB
zjdk.docker.com/zjdk/nginx v1 519e12e2a84a 3 days ago 133MB
3.将镜像推送到远程仓库
# docker push zjdk.docker.com/zjdk/IMAGE[:TAG]
[root@k8s-master01 sha256]# docker push zjdk.docker.com/zjdk/nginx:v1
The push refers to repository [zjdk.docker.com/zjdk/nginx]
7703406462db: Pushed
962b263b732e: Pushed
097985a72f15: Pushed
a433210552af: Pushed
47ba6c704819: Pushed
7e718b9c0c8c: Pushed
v1: digest: sha256:8e2bc905e7d89b592beabb816913bab7894afdd067efcb5a1d2f7bd54e3853e0 size: 1570
完结撒花。