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账号,存储个人私有镜像。
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)删除存储库的实际文件。
使用脚本清理。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2019-07-02 Python3.6+Django2.0.3基础环境调试