1.搭建docker
apt-get update
apt-get upgrade
docker ps -a
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get install python3
python3 -V
sudo apt install python3-pip
pip3 -V
sudo apt-get install docker.io
sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
wget -qO- https://get.docker.com/ | sh
systemctl start docker
2.搭建harbor和docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 下载docker-compose1.24 版本要是很低的话执行harbor的脚本时会报版本问题
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 这个通过daocloud下载会比hub快
sudo chmod +x /usr/local/bin/docker-compose 给docker-compose可执行的权限
注:python3和openssl默认都装了
wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-online-installer-v1.8.1.tgz 下载harbor包
tar zxvf harbor-online-installer-v1.8.1.tgz
cd harbor/
vim harbor.yml
将hostname字段后改为自己harbor镜像库的IP
其他的根据需求再改
之后执行./install.sh 可能会出现docker-compose版本的问题
----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at http://***.***.***.***
For more details, please visit https://github.com/goharbor/harbor .
这就是安装成功了 之后就可以通过web去访问harbor了 http://***.***.***.***
账户默认是admin 密码:Harbor12345
3.通过本地访问harbor实现镜像上传和下载
安装docker 略…
安装完成后需要将harbor的IP指定一下 代表下载的话可以去harbor里下载
vim /etc/docker/daemon.json
{"insecure-registries": ["***.***.***.***"]} harbor的IP
之后重启服务
systemctl daemon-reload
systemctl restart docker
之后用本地docker尝试登录harbor
docker login ***.***.***.*** 就可以登录了 也可以 docker login -u admin -p Harbor12345 ***.***.***.*** 指定账户和密码
--------------------------------------------------------------------
之后可以下载一个镜像
docker pull nginx
打一个标签 这样的会上传到harbor默认的library项目中
docker tag nginx:latest ***.***.***.***/library/nginx
docker push ***.***.***.***/library/nginx
这样上传上去的话harbor会生成一个library/nginx的镜像 标签还是默认的latest
----------------------------------------------------------------------
docker tag nginx:latest ***.***.***.***/library/nginx:v1
docker push ***.***.***.***/library/nginx:v1
例如再打一个标签v2
docker tag nginx:latest ***.***.***.***/library/nginx:v2
docker push ***.***.***.***/library/nginx:V2
这样在harbor的library/nginx中就会有v1和v2标签的镜像了
打标签的格式 docker tag 本地镜像 harbor的IP/项目/镜像仓库:标签(标签有多个)
-------------------------------------------------------------------------------------
这个项目也就是harbor存储镜像的空间名称 类似于目录然后里面放文件,可以创建多个 比如说在harbor web界面创建了一个test_images的项目
那么就可以 docker tag nginx:latest ***.***.***.***/test_images/nginx
docker push ***.***.***.***/test_images/nginx
有了新版本就可以 docker tag nginx:latest ***.***.***.***/test_images/nginx:V1
docker push ***.***.***.***/test_images/nginx:V1
这样在harbor的test_images项目中会产生一个镜像名为test_images/nginx的镜像 但是有两个标签为:一个版本为latest一个为V1
--------------------------------------------------------------------------
4.由于harbor需要底层很多容器支持,所以一旦出现断电或者重启服务器时,那么docker的容器也会自己stop掉,然后就需要一个一个去start,很费劲 ,下面设置harbor开机自启动的
将 harbor 配成 systemd 的 service,添加配置文件 vim /lib/systemd/system/harbor.service ,内容如下:
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/local/bin/docker-compose -f /harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target
其中 “-f” 后 指定自己harbor安装的路径安装在哪就指定哪 要不是不生效
systemctl enable harbor
systemctl start harbor
systemctl status harbor
如果不把以上内容添加到以上配置文件中,直接systemctl enable harbor 是会出问题的奥
效果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201105145047385.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2IxMTU5NDExNzE2,size_16,color_FFFFFF,t_70#pic_center
以下为基于已有镜像的容器创建
docker commit
参数:
-a:作者信息
-m:提交信息
-p:提交时暂停容器运行
例子:
启用容器
查看容器ID
此容器的ID为”c79598cc425a”
命令如下:
docker commit -m “add a new file” -a “zhangsan” c79598cc425a nginx_cp:1
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx_cp 1 155a2a88437d 7 seconds ago 181.2 MB
nginx 1 64d97232b585 8 minutes ago 181.2 MB
镜像已经创建完成