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

相关推荐
uzong24 分钟前
技术故障复盘模版
后端
GetcharZp1 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent
后端·llm·agent
桦说编程1 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
IT毕设实战小研1 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi2 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
甄超锋2 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国3 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Jimmy3 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
AntBlack3 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
bobz9654 小时前
pip install 已经不再安全
后端