溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何使用dockerfile文件和registry私有倉(cāng)庫(kù)

發(fā)布時(shí)間:2020-06-03 20:38:41 來(lái)源:億速云 閱讀:684 作者:Leah 欄目:云計(jì)算

如何使用dockerfile文件和registry私有倉(cāng)庫(kù)?相信很多新手小白還沒(méi)學(xué)會(huì)這個(gè)技能,通過(guò)這篇文章的總結(jié),希望你能學(xué)會(huì)使用dockerfile文件和registry私有倉(cāng)庫(kù)。

Dockerfile常用命令(安全)
1.》FROM:構(gòu)建鏡像基于那個(gè)鏡像
例如:FROM centos:7
2》MAINTAINER:鏡像維護(hù)者名字或郵箱地址
例如:MAINTAINER adam
3》RUN:構(gòu)建鏡像時(shí)運(yùn)行的shell命令
例如:
RUN[“yum”,”install”,”httpd”]
RUN yum -y install httpd
4>CMD:運(yùn)行容器時(shí)執(zhí)行的shell命令
例如:
CMD[“/bin/bash”]  或shell
5>EXPOSE聲明容器的服務(wù)端口
例如:EXPOSE   80   443
6》ENV:設(shè)置容器環(huán)境變量
例如
ENV  MYSQL_ROOT_PASSWORD  123.com
7》ADD:拷貝文件或目錄的鏡像,如果是URL或壓縮包會(huì)自動(dòng)下載或自動(dòng)解壓
ADD <源文件>... <目標(biāo)目錄>
ADD[“源文件”...”目標(biāo)目錄”]
8》COPY:拷貝文件或目錄到鏡像容器內(nèi),跟ADD類(lèi)似,但不具備自動(dòng)下載或解壓功能。
9》ENTRYPOINT:運(yùn)行容器時(shí)執(zhí)行的shell命令
例如
ENTRYPOINT[“/bin/bash”,”-c”,”command”]
ENTRYPOINT /bin/bash -c ‘command’
10>VOLUME:指定容器掛載點(diǎn)到宿主機(jī)自動(dòng)生成的目錄或其他容器
例如:  (數(shù)據(jù)持久化)
VOLUME [“/var/lib/mysql”]
docker run  -it --name  xxx  /var/lib/mysql  --volume 指定的是容器 目錄,會(huì)將其放到宿主機(jī)的某個(gè)目錄。
11>USER:為RUN。CMD和ENTYRYPOINT執(zhí)行命令指定運(yùn)行用戶(hù)
12>WORKDIR:為RUN,CMD,ENTRYPOINT,COPY和ADD設(shè)置工作目錄,意思為切換目錄
例如:
WORKDIR: /var/lib/mysql
13>HEALTHCHECK:健康檢查
14>ARG構(gòu)建時(shí)指定的一些參數(shù)
例如:
FROM centos:7
ARG user
USER  $user
注意:
1.RUN在building時(shí)運(yùn)行,可以寫(xiě)多條
2.CMD和ENTRYPOINT在運(yùn)行CONTAINER(容器)時(shí)運(yùn)行,只能寫(xiě)一條,如果寫(xiě)多條,最后一條生效
3.CMD在run時(shí)可以被COMMAND覆蓋,ENTRYPOINT不會(huì)被COMMAND覆蓋,但可以指定--ENTRYPOINT覆蓋。
4.如果在dockerfile里需要往鏡像內(nèi)導(dǎo)入文件則此文件必須在dockerfile所在目錄或子目錄下。

測(cè)試實(shí)驗(yàn):
使用dockerfile文件制作一個(gè)鏡像基于centos:7 鏡像部署安裝nginx服務(wù)
注意Nginx包需要與dockfile文件在同一目錄,要不運(yùn)行時(shí)是dockerfile文件不允許的
vim  Dockerfile
配置:
FROM    centos:7
RUN     yum -y install gcc  pcre-devel openssl-devel zlib-devel
RUN     yum -y install make
COPY    nginx-1.14.0.tar.gz /
RUN     tar -zxf  nginx-1.14.0.tar.gz -C /usr/src
RUN     useradd -M -s /sbin/nologin nginx
WORKDIR /usr/src/nginx-1.14.0
RUN     ./configure  --prefix=/usr/local/nginx --user=nginx  --group=nginx
RUN     make && make install
RUN     ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
RUN     nginx -t
RUN     nginx
EXPOSE  80

另一種將COPY改為ADD的創(chuàng)建鏡像
FROM centos:7
RUN yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
ADD nginx-1.14.0.tar.gz /usr/src/
RUN useradd -M -s /sbin/nologin nginx
WORKDIR /usr/src/nginx-1.14.0
RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
RUN make && make install
RUN ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
RUN nginx -t
RUN nginx
EXPOSE 80

如果編譯安裝時(shí),MAKE不上,需要在Dockerfile文件中添加
yum一個(gè)make。

執(zhí)行Dockerfile文件的命令:

docker build  -t  test1  .

查看鏡像
docker images
如何使用dockerfile文件和registry私有倉(cāng)庫(kù)

3)將制作的鏡像運(yùn)行一個(gè)容器,使容器運(yùn)行時(shí)自動(dòng)開(kāi)啟nginx服務(wù)。驗(yàn)證服務(wù)正常運(yùn)行。
創(chuàng)建容器
docker run -itd --name  test1 test1:latest
進(jìn)入容器
docker exec -it test1 /bin/bash

如果想要保證容器運(yùn)行之后,nignx服務(wù)開(kāi)啟后面需要添加nginx -g "daemon off;"
docker run -itd  --name  test1-2 test1:latest  nginx -g "daemon off;"
查看容器信息
docker inspect  test1-2

curl 172.17.0.2
如何使用dockerfile文件和registry私有倉(cāng)庫(kù)
運(yùn)行一個(gè)私有倉(cāng)庫(kù),將自制鏡像上傳到私有倉(cāng)庫(kù),且開(kāi)啟另外一臺(tái)虛擬機(jī)同樣加入私有倉(cāng)庫(kù),在docker02上下載私有倉(cāng)庫(kù)鏡像并運(yùn)行一個(gè)容器,驗(yàn)證服務(wù)正常運(yùn)行。
Registry
用docker容器運(yùn)行registry私有倉(cāng)庫(kù)服務(wù)
docker  pull registry:2(下載鏡像)
如何使用dockerfile文件和registry私有倉(cāng)庫(kù)

運(yùn)行私有倉(cāng)庫(kù)服務(wù)
docker  run -itd  --name  registry   --restart=always  
-p 5000:5000  -v  /registry:/var/lib/registry  registry:2
-p:端口映射,宿主機(jī)端口:容器暴漏的端口。
-v:掛載目錄,宿主機(jī)的目錄;容器內(nèi)的目錄。(自動(dòng)創(chuàng)建目錄,并掛載)

鏡像重命名;docker tag test1:latest (   鏡像名)192.168.1.1:5000/test (更改后的名)

上傳到私有倉(cāng)庫(kù)
docker push  192.168.1.1:5000/test:latest 
如何使用dockerfile文件和registry私有倉(cāng)庫(kù)
需要https的所以要更改(記住目錄路徑)
vim  /usr/lib/systemd/system/docker.service (更改)
如何使用dockerfile文件和registry私有倉(cāng)庫(kù)
Secure安全,insecure不安全的
[root@docker test1]# systemctl  daemon-reload
[root@docker test1]# systemctl  restart  docker

docker push  192.168.1.1:5000/test:latest (上傳到私有倉(cāng)庫(kù))
cd /registry/ 私有倉(cāng)庫(kù)位置
在第二臺(tái)docker2上下載私有倉(cāng)庫(kù)鏡像并運(yùn)行一個(gè)容器,驗(yàn)證服務(wù)正常運(yùn)行。

vim  /usr/lib/systemd/system/docker.service (更改)
如何使用dockerfile文件和registry私有倉(cāng)庫(kù)
systemctl  daemon-reload
systemctl  restart  docker
下載鏡像
docker pull  192.168.1.1:5000/test:latest 在私有倉(cāng)庫(kù)下載鏡像
docker images
制作容器lbs1
docker run -itd  --name  lbs1 192.168.1.1:5000/test:latest  nginx -g "daemon off;"
查看容器lbs1
docker  inspect lbs1
訪(fǎng)問(wèn)nginx
curl 172.17.0.2

以上就是dockerfile文件和registry私有倉(cāng)庫(kù)的使用方法了,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI