docker基础展示-2

13.Dockerfile-构建JAVA网站镜像

参考:https://blog.csdn.net/liukuan73/article/details/60880137

该章节难点:理解CMD和ENTRYPOINT指令的区别

CMD指令为ENTRYPOINT指令提供默认参数是基于镜像层次结构生效的,而不是基于是否在同个Dockerfile文件中。意思就是说,如果Dockerfile指定的基础镜像中是ENTRYPOINT指定的启动命令,则该Dockerfile中的CMD依然是为基础镜像中的ENTRYPOINT设置默认参数。

部署java项目

[root@master ~]# cd /root/dockfiles/tomcat

[root@master tomcat]# ls

apache-tomcat-8.5.40.tar.gz  Dockerfile  jdk-8u161-linux-x64.tar.gz  server.xml

[root@master tomcat]#

[root@master tomcat]# docker build -t tomcat:v1 -f Dockerfile .

[root@master tomcat]# docker images

REPOSITORY  TAG                 IMAGE ID            CREATED             SIZE

tomcat      v1                  1363e2e1856d        16 minutes ago      600 MB

[root@master ~]# mkdir –p /app/webapps/  

[root@master ~]# cd /app/webapps/

[root@master webapps]# ls

[root@master webapps]# mkdir ROOT

[root@master webapps]# echo "hello" >ROOT/index.html

[root@master tomcat]# docker run -itd --name=tomcat -p 8089:8080 -v /app/webapps/:/usr/local/apache-tomcat-8.5.40/webapps/ tomcat:v1

18436dcc627d2868726da7a5c334966aed3879cc033392220a2228c9cd259969

[root@master tomcat]# curl 192.168.19.129:8089

hello

测试java项目正常访问。

 

14.镜像仓库-官方Registry镜像仓库搭建与使用

搭建私有镜像仓库

私有私有仓库管理

Docker Hub公共镜像仓库使用

[root@master ~]# docker images save 该方法显然不适合批量保存镜像

 

搭建私有镜像仓库

Docker Hub 作为docker默认官方公共镜像,如果自己搭建私有镜像仓库,官方提供registry镜像,使得搭建私有仓库非常简单。

 

下载registry镜像并启动

[root@master ~]# docker pull registry

[root@master ~]# docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry    异常退出重启registry服务策略:restart

测试,查看镜像仓库所有镜像

[root@node1 ~]# curl 192.168.19.129:5000/v2/_catalog

{"repositories":["mysql","tomcat","tomcat-app"]}

[root@node1 ~]#

 

Docker pull获取的镜像地址https://hub.docker.com/search/?q=&type=image,从此处获取仓库镜像。

下载和推送镜像到私有仓库,需要处理https问题。

[root@node1 ~]# cat /etc/docker/daemon.json   配置私有仓库可信任

{

"registry-mirrors": ["http://hub-mirror.c.163.com"],

"insecure-registries":["192.168.19.129:5000"]

}

[root@node1 ~]# systemctl restart docker

[root@node1 ~]# docker pull 192.168.19.129:5000/tomcat:v1    下载镜像正常。

Status: Downloaded newer image for 192.168.19.129:5000/tomcat:v1

[root@node1 ~]# docker images

REPOSITORY         TAG                 IMAGE ID            CREATED             SIZE  192.168.19.129:5000/tomcat   v1   5a069ba3df4d    10 days ago    465 MB

[root@node1 ~]# curl 192.168.19.129:5000/v2/tomcat/tags/list

{"name":"tomcat","tags":["v1"]}

[root@node1 ~]# docker tag 192.168.19.129:5000/tomcat:v1 192.168.19.129:5000/tomcat:v2.0

[root@node1 ~]# docker push 192.168.19.129:5000/tomcat:v2.0   上传镜像

[root@node1 ~]# curl 192.168.19.129:5000/v2/tomcat/tags/list     列出镜像标签

{"name":"tomcat","tags":["v1","v2.0"]}

[root@node1 ~]# docker images

 

15.镜像仓库-Docker Hub公共镜像仓库使用

官方公共仓库,也可注册dockerhub账号,存储个人私有镜像。

地址:https://hub.docker.com/

Docker id: szsunny

Password::xxx

Email:xxx576084@qq.com

(微信搜藏查看)浏览器登录之后,创建repository镜像,

创建之后,开始上传镜像。

[root@master ~]# docker login

Username: szsunny

Password:

Login Succeeded

[root@master ~]# docker tag busybox szsunny/busybox:v1

[root@master ~]# docker push szsunny/busybox:v1

浏览器登录,查看上传的镜像成功。

公共镜像源(地址在国外)比较缓慢,可自行决定是否使用。

 

16.企业级镜像仓库-Harbor介绍

Harbor是Vmware公司开源的企业级Docker registry项目,项目地址:https://github.com/goharbor/harbor

下载离线安装包:https://github.com/goharbor/harbor/releases

安装Docker

安装docker-compose

自签TLS证书:https://github.com/goharbor/harbor/blob/master/docs/configure_https.md

Harbor安装与配置:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

Docker主机访问Harbor

 

下载安装离线包

Harbor offline installer :离线安装

Harbor online installer: 在线安装,不建议使用,整个包比较大

 

两种环境部署方式,企业一般通过https部署

[root@node2 ~]# wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.0.tgz

下载docker-compose:https://github.com/docker/compose/releases

硬件:

CPU、Mem、Disk

软件:

Python、Docker 、Compose、Openssl

网络:

HTTP、HTTPS

 

17.企业级镜像仓库-Harbor部署

[root@node2 ~]# docker info   安装docker

[root@node2 ~]# mv docker-compose-Linux-x86_64 docker-compose

[root@node2 ~]# chmod +x docker-compose

[root@node2 ~]# ./docker-compose version

[root@node2 ~]# mv docker-compose /usr/bin/        

[root@node2 ~]# docker-compose version    安装docker-compose

参考:https://github.com/docker/compose/releases/

docker-compose version 1.24.0-rc1, build 0f3d4dda

docker-py version: 3.7.0

CPython version: 3.6.8

OpenSSL version: OpenSSL 1.1.0j  20 Nov 2018

[root@node2 ~]# tar -xf harbor-offline-installer-v1.7.0.tgz

[root@node2 ~]# cd harbor

配置harbor地址,

hostname = reg.sunny.com

ui_url_protocol = https

no_proxy = 127.0.0.1,localhost,core,registry,reg.mydomain.com

ssl_cert = /root/harbor/ssl/reg.sunny.com.crt

ssl_cert_key = /root/harbor/ssl/reg.sunny.com.key

harbor_admin_password = 123456

email_identity =

email_server = smtp.163.com

email_server_port = 25

email_username = 15000305224@163.com

email_password = bxi3odtD8

email_from = 15000305224@163.com

email_ssl = false

email_insecure = false

配置邮件在用户重置密码时使用:https://blog.csdn.net/BigData_Mining/article/details/88300979

开始安装

[root@node2 harbor]# ./prepare

[root@node2 harbor]# ./install.sh

初次安装需要5分钟以上(下载很多harbor镜像组件)。

[root@node2 harbor]# docker-compose ps查看容器服务

https浏览器访问,

登录账号密码:admin  pass自定义

操作:

新建项目、创建用户。

忘记密码操作:收到邮件。

  

邮件配置正常,用户可收到重置密码邮件。

 

18.企业级镜像仓库-自签HTTPS证书

生成证书:https://github.com/goharbor/harbor/blob/master/docs/configure_https.md

[root@node2 ~]# tar -xf harbor-offline-installer-v1.7.0.tgz

[root@node2 ~]# cd harbor

[root@node2 harbor]# mkdir ssl

[root@node2 harbor]# cd ssl/

参考:https://github.com/goharbor/harbor/blob/master/docs/configure_https.md

A、获得证书授权

openssl req \

-subj "/C=CN/ST=GD/L=shenzhen/O=Estone/OU=Innopro/CN=sunny.cn" \

-newkey rsa:4096 -nodes -sha512 -keyout ca.key \

-x509 -days 3650 -out ca.cr -out ca.crt

B、获得服务器证书

假设自己的域名为reg.sunny.com

[root@node2 ssl]# openssl req \

>     -subj "/C=CN/ST=GD/L=shenzhen/O=Estone/OU=Innopro/CN=reg.sunny.com" \

>     -newkey rsa:4096 -nodes -sha512 -keyout reg.sunny.com.key \

>     -out reg.sunny.com.csr

C、生成证书签名请求:颁发证书

[root@node2 ssl]# openssl x509 -req -days 3650 \

>     -in reg.sunny.com.csr \

>     -CA ca.crt -CAkey ca.key -CAcreateserial \

>     -out reg.sunny.com.crt

需要使用到的crt、key。

[root@node2 ssl]# ls reg.sunny.com.

reg.sunny.com.crt  reg.sunny.com.csr  reg.sunny.com.key

 

19.企业级镜像仓库-Docker主机从Harbor上传下载镜像

客户端上传和下载

[root@master ~]# tail -1 /etc/hosts

192.168.19.131 node2 reg.sunny.com

[root@master ~]# mkdir -p /etc/docker/certs.d/reg.sunny.com

[root@master ~]# docker login reg.sunny.com 

[root@master ~]# scp root@192.168.19.131:/root/harbor/ssl/reg.sunny.com.crt /etc/docker/certs.d/reg.sunny.com/

root@192.168.19.131's password:

reg.sunny.com.crt                         100% 1891     1.5MB/s   00:00   

[root@master ~]# docker login reg.sunny.com

Username: sunny

Password:

Login Succeeded

[root@master ~]#

[root@master ~]# docker tag nginx reg.sunny.com/test/nginx:v1

[root@master ~]# docker push reg.sunny.com/test/nginx:v1    推送成功,浏览器端查看镜像

The push refers to a repository [reg.sunny.com/test/nginx]

fc4c9f8e7dac: Pushed

912ed487215b: Pushed

5dacd731af1b: Pushed

v1: digest: sha256:c10f4146f30fda9f40946bc114afeb1f4e867877c49283207a08ddbcf1778790 size: 948

[root@master ~]#

下载镜像,也需要先登录。

[root@master ~]# docker login reg.sunny.com -usunny -pSunny123

Login Succeeded

[root@master ~]#

[root@master ~]# docker rmi reg.sunny.com/test/nginx:v1

[root@master ~]# docker rmi nginx

下载镜像。

[root@master ~]# docker pull reg.sunny.com/test/nginx:v1

Trying to pull repository reg.sunny.com/test/nginx ...

v1: Pulling from reg.sunny.com/test/nginx

Digest: sha256:c10f4146f30fda9f40946bc114afeb1f4e867877c49283207a08ddbcf1778790

Status: Downloaded newer image for reg.sunny.com/test/nginx:v1

[root@master ~]# docker images

自此,完成了harbor镜像上传和下载操作。

 

Harbor镜像清理?面试遇到问题

 

删除Harbor的UI中的存储库。这是软删除。您可以删除整个存储库或仅删除它的标签。软删除后,Harbour中不再管理存储库,但是存储库的文件仍然保留在Harbour的存储中,镜像文件还是保存在磁盘上。

 

使用注册表的垃圾回收(GC)删除存储库的实际文件。

 

使用脚本清理。

posted @ 2023-07-02 17:04  wang_wei123  阅读(9)  评论(0编辑  收藏  举报