Docker参数,以及仓库搭建

一·。Docker的构建参数

注释:

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

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

FROM的基本使用

mkdir /docker

cd /docker

vi /Dockerfile

  • 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

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

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

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

二。docker内部署centos

三。搭建docker的私有仓库

  1. docker pull registry:拉取文件

  2. docker run -d -p 5000:5000 --restart=always registry

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

3.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镜像。

4.docker push 192.168.142.135:5000/busybox:latest

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

5.vi /etc/docker/daemon.json

6.测试:

注释:register文件在:

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

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

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

2.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证书,最终将证书保存于后续文件

3.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表设置环境变量,设置端口,证书和私钥

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

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

6.systemctl restart docker

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

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

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

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

2.mkdir auth

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

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

  1. 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" registry

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

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

五。搭建一个Harbor仓库

wget -c https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz

相关推荐
Starwow17 分钟前
微服务之gRPC
后端·微服务·golang
Asthenia041220 分钟前
AtomicMarkableReference如何解决ABA问题:深入分析
后端
Asthenia041239 分钟前
Fail-Fast与快照机制深入解析及并发修改机制拷打
后端
Pasregret1 小时前
观察者模式:从博客订阅到消息队列的解耦实践
后端·观察者模式
考虑考虑1 小时前
Springboot捕获feign抛出的异常
spring boot·后端·spring
洛神灬殇1 小时前
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 时间事件处理部分)
redis·后端
DataFunTalk2 小时前
Foundation Agent:深度赋能AI4DATA
前端·后端·算法
楽码2 小时前
一文看懂隐藏功能!语言的逃逸分析
后端·go·编程语言
hello_ejb32 小时前
聊聊Spring AI Alibaba的PdfTablesParser
windows·python·spring
RunsenLIu2 小时前
基于Django实现的图书分析大屏系统项目
后端·python·django