背景:
本文介绍Docker的安装以及本地镜像仓库Harbor的安装过程。
1.Docker安装
1.1 安装步骤
安装步骤比较简单,按部就班执行shell命令即可,感兴趣小伙伴可以整理成一个shell脚本(需要考虑幂等性);
[1] 安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
[2] 设置本地镜像源:
#添加docker的repo文件
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#使用aliyun镜像
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
[3] 安装docker-ce
yum install -y docker-ce
[4] 关闭防火墙
# 关闭防火墙,同时取消开机自启动
systemctl stop firewalld && systemctl disable firewalld
[5] 启动以及设置开机自启动
systemctl enable docker && systemctl start docker
[6] 测试Docker安装成功
[7] 配置docker镜像下载加速器
通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://n7d4jdun.mirror.aliyuncs.com"]
}
EOF
修改配置文件后,需要重启docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
1.2 案例演示
安装完Docker后,可以进行简单测试:
【1】使用docker pull去公共仓库中拉取httpd镜像:
【2】使用docker images查看下载的httpd镜像
因为没有指定标签,默认下载latest版本。
【3】使用docker inspect 查看该镜像的详细信息,发现暴露的端口为80
【4】使用docker run运行该镜像
返回容器的长ID;
【5】在宿主机上访问8080端口
【6】可以通过docker ps 查看容器的短ID:
【7】通过容器的名字、长ID或者短ID可以进入该容器内部
由于容器为最简化安装,因此容器内部不存在curl工具。
通过exit可以返回宿主机。
2. 本地Docker仓库安装与配置
2.1 Harbor安装
【1】安装docker compose
下载docker-compose, 并上传到/usr/local/bin目录下;
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compos-xxx版本号 /usr/bin/docker-compose
docker-compose --version # 查看是否成功
【2】安装Harbor
#创建Harbor解压缩路径
mkdir /usr/local/data/software
#解压缩
tar zxf harbor-offline-installer-v2.4.1.tgz
mv harbor /usr/local/data/software
【3】修改docker的配置文件
由于docker默认使用https形式访问(http会报错),因此需要在/etc/docker/daemon.json中添加insecure-registries配置:
修改完成后,重启docker
#读取配置&&重启docker
systemctl daemon-reload && systemctl restart docker
【4】配置开机自启动:
在 /etc/rc.local 文件中添加:
/usr/local/sbin/docker-compose -f /data/software/harbor/docker-compose.yml up -d
【5】设置权限:
chmod +x /etc/rc.local /etc/rc.d/rc.local
2.2 案例介绍
Harbor安装完成后,可以通过http://seng230:5000访问(seng230改成服务器地址), 默认用户为admin,密码为admin123.
Harbor通过RBAC进行权限管理,一般:管理员-all权限;开发(pull/push), 访客(pull)。另外Harbor按照项目分类管理镜像,且项目有公有、私有之分;其中私有的项目,必须登录才能操作(pull/push); 如上图表示该Harbor仓库中现存一个公有和一个私有项目。
【1】Docker使用docker login 服务器:5000登录:
操作完成后,可以使用docker logout退出;
【2】使用docker tag对httpd镜像打上标签:**
因为docker默认会向Docker hub推送镜像,会因为没有权限而被拒,所以需要添加仓库地址。
【3】使用docker push 将镜像推送到Harbor:
【4】刷新Harbor页面
发现镜像已被推送到仓库: