網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
初識(shí)Dockerfile
Dockerfile就是用來(lái)構(gòu)建docker鏡像的構(gòu)建文件!命令腳本!
通過(guò)這個(gè)腳本可以生成鏡像,鏡像是一層層的,腳本是一行行的命令,每行命令都是一層
dockerfile是面向開(kāi)發(fā)的,我們以后要發(fā)布項(xiàng)目,作鏡像,就需要編寫(xiě)dockerfile文件,這個(gè)文件十分簡(jiǎn)單。
Dockerfile鏡像之間成為了企業(yè)交付的標(biāo)準(zhǔn),必須掌握!
編寫(xiě)一個(gè)自己的docker 鏡像:
編寫(xiě)Dockerfile文件:
#創(chuàng)建一個(gè)dockerfile文件,名字可以隨機(jī),建議Dockerfile
#文件中的內(nèi)容:指令(大寫(xiě)) 參數(shù)
#實(shí)例測(cè)試:
#創(chuàng)建目錄存放dockerfile文件的目錄:
[root@localhost ~]# mkdir docker_test
#進(jìn)入目錄創(chuàng)建dockerfile文件:
[root@localhost ~]# mkdir docker_test
[root@localhost ~]# cd docker_test/
[root@localhost docker_test]# touch dockerfile
#編寫(xiě)dockerfile文件,在文件中寫(xiě)入dockerfile指令:
[root@localhost docker_test]# vim dockerfile
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end----"
CMD /bin/bash
將Dockerfile文件轉(zhuǎn)為鏡像:
#使用docker build . 命令將dockerfile文件轉(zhuǎn)為鏡像
[root@localhost docker_test]# docker build -f /root/docker_test/dockerfile -t hzw/centos .
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM centos
---> 5d0da3dc9764
Step 2/4 : VOLUME ["volume01","volume02"]
---> Running in d4b23ae86ace
Removing intermediate container d4b23ae86ace
---> 8f39792fbef7
Step 3/4 : CMD echo "----end----"
---> Running in 1bb4751f04ef
Removing intermediate container 1bb4751f04ef
---> 2e2bb5e2a502
Step 4/4 : CMD /bin/bash
---> Running in 82a0b5905405
Removing intermediate container 82a0b5905405
---> 39a1fd86fd73
Successfully built 39a1fd86fd73
Successfully tagged hzw/centos:latest
#由此可以發(fā)現(xiàn)docker創(chuàng)建鏡像也是一層層創(chuàng)建的。每個(gè)命令都是鏡像的一層。
查看自己構(gòu)建的docker鏡像
[root@localhost docker_test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hzw/centos latest 39a1fd86fd73 2 minutes ago 231MB
使用自己構(gòu)建的docker鏡像生成容器:
[root@localhost docker_test]# docker run -it hzw/centos /bin/bash
[root@f62a714bb306 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02
#可以看見(jiàn)我們構(gòu)建的鏡像也是能正常進(jìn)去使用的,并且我們?cè)赿ockerfile寫(xiě)指令掛載的目錄也在這個(gè)容器里。
DockerFile
dockerfile時(shí)用來(lái)構(gòu)建docker鏡像文件!命令參數(shù)腳本!
構(gòu)建步驟:
1、編寫(xiě)一個(gè)dockerfile文件
2、docker build . 構(gòu)建稱為一個(gè)鏡像
3、docker run 運(yùn)行鏡像
4、docker push 發(fā)布鏡像(DockerHub、阿里云鏡像倉(cāng)庫(kù))
Dockerfile指令:
FROM #指定基礎(chǔ)鏡像,一切從這里開(kāi)始構(gòu)建
MAINTAINER #鏡像是誰(shuí)寫(xiě)的,姓名+郵箱
RUN #鏡像構(gòu)建的時(shí)候需要運(yùn)行的命令
ADD #步驟:tomcat鏡像,這個(gè)tomcat壓縮包!添加內(nèi)容
WORKDIR #鏡像的工作目錄
VOLUME #掛載的目錄
EXPOST #暴露端口配置
CMD #指定這個(gè)容器啟動(dòng)時(shí)候要運(yùn)行的命令,只有最后一個(gè)會(huì)生效,可被替代
ENTRYPOINT #指定這個(gè)容器其董事會(huì)要運(yùn)行的命令,可以追加命令
ONBUILD #當(dāng)構(gòu)建一個(gè)被繼承dockerfile,這個(gè)時(shí)候就會(huì)運(yùn)行ONBUILD的指令。是一個(gè)觸發(fā)指令
COPY #類似ADD,將我們文件拷貝到鏡像
ENV #構(gòu)建的時(shí)候設(shè)置環(huán)境變量!
docker build . 命令
構(gòu)建好dockerfile文件后,我們就用docker build命令將文件構(gòu)建成鏡像。
#命令使用方法:
docker build -f dockerfile文件路徑 -t 取個(gè)鏡像名 .
#參數(shù)詳解:
-f dockerfile的文件路徑,可以寫(xiě)絕對(duì)路徑,也可以寫(xiě)相對(duì)路徑
-t 給構(gòu)建的鏡像取個(gè)名字,名字格式: 名字:標(biāo)簽
. 構(gòu)建上下文的路徑 必須寫(xiě)
查看鏡像是如何生成的
docker history 鏡像ID
實(shí)操訓(xùn)練:Dockerfile構(gòu)建Nginx鏡像: 編寫(xiě)Dockerfile制作鏡像,生成鏡像名為my_build:Nginx1。首先創(chuàng)建目錄dockerfile-nginx1,保存Dockerfile文件。具體要求如下:
(1)基于鏡像centos:7
(2)安裝Nginx
? ? ? ?a.安裝相關(guān)依賴
? ? ? ?b.下載并解壓Nginx
(3)工作目錄設(shè)為:nginx-1.9.7
(4)編譯安裝Nginx
(5)對(duì)外暴露80,443端口
(6)修改Nginx配置文件,以非daemon方式啟動(dòng)
(7)復(fù)制服務(wù)啟動(dòng)腳本并設(shè)置權(quán)限
(8)啟動(dòng)容器時(shí)執(zhí)行腳本run.sh
run.sh內(nèi)容如下所示:
開(kāi)始操作:
創(chuàng)建dockerfile-nginx1文件夾,進(jìn)入該文件夾,編寫(xiě)Dockerfile文件
mkdir dockerfile-nginx1
cd dockerfile-nginx1/
vim Dockerfile
編寫(xiě)Dockerfile文件內(nèi)容:
#該文件時(shí)基于centos7鏡像為基礎(chǔ)創(chuàng)建的
FROM centos:7
#下載nginx依賴源
RUN yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
#下載wget
RUN yum install -y wget
#下載nginx
RUN wget http://nginx.org/download/nginx-1.9.7.tar.gz
#解壓nginx
RUN tar -zxvf nginx-1.9.7.tar.gz
#執(zhí)行編譯命令,通過(guò)--prefix=安裝目錄,指定nginx安裝目錄
RUN ./configure --prefix=/usr/localinx && make && make install
#設(shè)置工作目錄
WORKDIR nginx-1.9.7
#暴露端口80和443
EXPOSE 80
EXPOSE 443
#將虛擬機(jī)文件復(fù)制到容器里
ADD run.sh /run.sh
#給run.sh授予可執(zhí)行權(quán)限
RUN chmod 775 /run.sh
#啟動(dòng)容器后執(zhí)行run.sh腳本
CMD ["/run.sh"]
在該文件夾里再編寫(xiě)一個(gè)run.sh
vim run.sh
run.sh里的內(nèi)容:
#!/bin/bash
/usr/local/nginx/sbin/nginx
docker build 構(gòu)建鏡像
docker build -t my_build:nginx1 .
?docker images查看鏡像:
使用該鏡像構(gòu)建容器:
可以看到鏡像成功啟動(dòng),東西也下載安裝好了,工作目錄設(shè)置好了,文件也復(fù)制到容器里了
原文鏈接:https://blog.csdn.net/weixin_53466908/article/details/124238064
相關(guān)推薦
- 2022-07-07 WCF的異常處理_C#教程
- 2022-04-16 C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之二叉鏈表創(chuàng)建二叉樹(shù)_C 語(yǔ)言
- 2023-07-26 TypeScript中的對(duì)象類型(可選屬性 只讀屬性 交叉類型)
- 2022-09-19 Docker安裝Nacos詳細(xì)圖文教程_docker
- 2022-04-17 C語(yǔ)言?動(dòng)態(tài)內(nèi)存管理全面解析_C 語(yǔ)言
- 2023-01-17 Pytorch-Geometric中的Message?Passing使用及說(shuō)明_python
- 2022-03-31 python多線程方法詳解_python
- 2022-09-24 Go?iota關(guān)鍵字與枚舉類型實(shí)現(xiàn)原理_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支