一·。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 /leefile
:RUN
指令用于在镜像构建过程中执行命令。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的私有仓库
-
docker pull registry:拉取文件
-
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表设置环境变量,设置端口,证书和私钥

- 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
- htpasswd -Bc auth/.htpasswd lee:为目录创建密码和用户lee
注释:再次添加密码和用户不需要添加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" 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