目录

Docker参数,以及仓库搭建

目录

Docker参数,以及仓库搭建

一·。Docker的构建参数

https://i-blog.csdnimg.cn/direct/5f5fe665dcb74427ada60b970cc82b5c.png

https://i-blog.csdnimg.cn/direct/fe01c55c8075435cbd8bfccdb1dd7e43.png

注释:

1.对于CMD,如果不想显示,而是使用交互界面:docker run -ti –rm –name test2 busybox:v5 sh

2.对于CMD,一个交互界面只可以使用一个,如果想多次使用CMD,则用ENTRYPOINT进行替换

FROM的基本使用

mkdir /docker

cd /docker

vi /Dockerfile

https://i-blog.csdnimg.cn/direct/c2be755424394adbbfe355629c54d511.png

  • FROM busybox :这是 Dockerfile 中的一条指令, FROM 用于指定基础镜像, busybox 是一个轻量级的 Linux 工具集镜像,许多 Docker 镜像都会基于它来构建,以此为基础可以在其之上添加额外的功能。
  • RUN touch /leefileRUN 指令用于在镜像构建过程中执行命令。 touch 是 Linux 系统中用于创建空文件的命令, /leefile 是要创建的文件的路径,这里表示在镜像中创建一个名为 leefile 的空文件。

docker build -t busybox:v2 .

(或者使用:docker build -f /docker/Dockerfile1 -t busybox:v3 .

)

docker build 是 Docker 用于构建镜像的命令, -t 选项用于给构建的镜像指定一个标签(tag), busybox:v2 表示镜像的名称为 busybox ,版本号为 v2

docker run -it –rm –name test1 busybox:v2

--rm 选项表示容器停止运行后自动删除容器,避免占用过多磁盘空间。

综上所述,这一系列操作的整体流程是:先创建一个目录,然后在该目录下创建一个 Dockerfile 来定义镜像的构建步骤,接着使用 docker build 命令基于 Dockerfile 构建一个名为 busybox:v2 的镜像,最后使用 docker run 命令基于这个镜像启动一个交互式的容器,并将其命名为 test1 ,容器停止后会自动删除。

docker history busybox:v2 :可以用于查看该镜像版本的信息

COPY的使用

将passwd复制到容器内

1.首先进行文件的复制,copy /etc/passwd  /docker

2.vi /docker/Dockerfile1

https://i-blog.csdnimg.cn/direct/5fbc5ed7c0784a9082a63058a8ebb991.png

docker build -f /docker/Dockerfile1 -t busybox:v3 .

4.docker run -it –rm –name test1 busybox:v2

ADD和COPY相似,可以进行压缩文件

https://i-blog.csdnimg.cn/direct/7f4f442fc202477ca5d922555f319459.png

二。docker内部署centos

https://i-blog.csdnimg.cn/direct/ec6fc2512438401881ffb38fbba95800.png

三。搭建docker的私有仓库

docker pull registry :拉取文件

docker run -d -p 5000:5000 –restart=always registry

创建register容器,-p端口5000, --restart=always :这是一个重启策略选项,指定容器在退出后总是自动重启,确保镜像仓库服务能够持续运行

docker tag busybox:latest 192.168.142.135:5000/busybox:latest

  • docker tag : 用于为镜像添加标签,方便对镜像进行标识和管理。
  • busybox:latest :是源镜像的名称和标签,这里表示本地的 busybox 镜像的 latest 版本。
  • 192.168.142.135:5000/busybox:latest :是目标标签,指定了将本地的 busybox:latest 镜像标记为可以推送到地址为 192.168.142.135 、端口为 5000 的本地镜像仓库中的 busybox:latest 镜像。

docker push 192.168.142.135:5000/busybox:latest

  • docker push :用于将本地的镜像推送到指定的镜像仓库。
  • 192.168.142.135:5000/busybox:latest :指定了要推送的镜像的目标地址和名称标签

5.vi /etc/docker/daemon.json

https://i-blog.csdnimg.cn/direct/50e83201985d48cb9a86dd44781265d6.png

6.测试:

https://i-blog.csdnimg.cn/direct/3178a33ac5b9418f9c681a19df02777b.png

注释:register文件在:

/var/lib/docker/volumes/a03953bf68bf99f30e7529aac89ed497fbfbd7af6c55abc71330123b6ce60f82/_data/docker/registry/v2/repositories

拓展:私有仓库直接存入,风险太大,需要进行加密保证安全性:

mkdir certs :创建用于存储共公私钥的目录

openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/jiami.org.key -addext “subjectAltName =DNS:reg.jiami.org” -x509 -days 365 -out certs/jiami.org.crt

注释:使用openssl req生成一个4096位的私钥,采用sha256哈希算法最终将私钥存储与certs/jiami.org.key文件内,指定解析后,生成-x509证书,最终将证书保存于后续文件

docker run -d -p 443:443 –restart=always -v /root/certs:/certs

-e REGISTRY_HTTP_ADDR=0.0.0.0:443

-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/jiami.org.crt

-e REGISTRY_HTTP_TLS_KEY=/certs/jiami.org.key registry:latest

注释:-v /root/certs:/certs,-v表挂载,将主机上的/root/cets挂载于容器内的certs,-e表设置环境变量,设置端口,证书和私钥

https://i-blog.csdnimg.cn/direct/efa1fb7f678740afbdf9df7e37a52c84.png

mkdir -p /etc/docker/certs.d/reg.jiami.org :创建一个docker子目录用于存储证书

cp /root/certs/jiami.org.crt /etc/docker/certs.d/reg.jiami.org/ca.crt :将证书复制于文件

systemctl restart docker

docker tag nginx:v1 reg.jiami.org/nginx:v1 :打标签

docker push reg.jiami.org/nginx:v1 :进行推送

https://i-blog.csdnimg.cn/direct/e356a187c04d4cc687199e08e35a1c6b.png

四。为仓库建立登陆认证:(前提创建好私钥和证书)

yum install httpd-tools :下载登陆工具

mkdir auth

htpasswd -Bc auth/.htpasswd lee :为目录创建密码和用户lee

https://i-blog.csdnimg.cn/direct/23553d19e2d34e63bce6b29427d30e1c.png

注释:再次添加密码和用户不需要添加c,只要-B

docker run -d \ -p 443:443 \ –restart=always \ -v /root/certs:/certs \ -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/jiami.org.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/jiami.org.key \ -v /root/auth:/auth \ -e REGISTRY_AUTH=htpasswd \ -e “REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm” \ -e “REGISTRY_AUTH_HTPASSWD_PATH=/auth/.htpasswd” \ -e REGISTRY_HTTP_SECRET=$(openssl rand -hex 32) \ registry

https://i-blog.csdnimg.cn/direct/7d3d2fc062b048c595b4bc78ea464c6b.png

注释:必须拥有此文件,提供http加密

https://i-blog.csdnimg.cn/direct/e2e05103624c4d13936ad8e7b744fbde.png

注释:在以后上传任何东西前,必须进行登陆:docker login reg.jiami.org,否则无法上床内容于私有仓库

五。搭建一个Harbor仓库

wget -c