一·。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的私有倉庫
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表設置環境變量,設置端口,證書和私鑰
4.?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
3.?htpasswd -Bc auth/.htpasswd lee:為目錄創建密碼和用戶lee
注釋:再次添加密碼和用戶不需要添加c,只要-B
4.?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