1. 以交互的模式進(jìn)入容器,并修改容器內(nèi)容
這個(gè)時(shí)候以tomcat來做一個(gè)例子:
root@yuanay:/home/yuanay# docker pull tomcat:8.0.52
Using default tag: latest
latest: Pulling from library/tomcat
50e431f79093: Pull complete
dd8c6d374ea5: Pull complete
c85513200d84: Pull complete
55769680e827: Pull complete
e27ce2095ec2: Pull complete
5943eea6cb7c: Pull complete
3ed8ceae72a6: Pull complete
91d1e510d72b: Pull complete
415cc4506e71: Pull complete
a79d88064227: Pull complete
Digest: sha256:b707d3b8b4f40951ca2f387c24ab9f78800c69c90740f0cca937a1b95204b3a4
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
查看下載好的容器
root@yuanay:/home/yuanay# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest a7fa4ac97be4 5 days ago 528MB
ubuntu 16.04 77be327e4b63 4 weeks ago 124MB
運(yùn)行容器
docker run -p 8080:8080 tomcat
這時(shí)候換另一個(gè)鏈接差牛,查看docker容器(因?yàn)閐ocker容器有隔離機(jī)制命锄,我們此時(shí)要做的是修改容器里的index.jsp文件,所以要在這個(gè)容器里完成這個(gè)操作)
docker ps
剛才的run很明顯是啟動(dòng)容器偏化,而現(xiàn)在我們想修改容器里的東西脐恩,需要以交互的模式進(jìn)入容器侦讨,那怎么進(jìn)入容器呢?
docker exec -it 容器id bash
使用 ls -al 來查看文件目錄
ls -al
cd webapps/
cd ROOT/
ls -al
在index.jsp文件末尾添加一段內(nèi)容
echo "Hello Docker Tomcat" >> index.jsp
查看index.jsp文件末尾有沒有添加上
cat index.jsp
這個(gè)tomcat是啟動(dòng)的只怎,此時(shí)打開一個(gè)網(wǎng)頁怜俐,輸入ip地址8080訪問tomcat
192.168.125.138:8080
可以看到已經(jīng)出現(xiàn) Hello Docker Tomcat(我加了3個(gè)嘻嘻)
使用 Dockerfile 定制鏡像
從剛才的 docker commit 的學(xué)習(xí)中,我們可以了解到拍鲤,鏡像的定制實(shí)際上就是定制每一層所添加的配置、文件擅这。如果我們可以把每一層修改景鼠、安裝、構(gòu)建铛漓、操作的命令都寫入一個(gè)腳本,用這個(gè)腳本來構(gòu)建浓恶、定制鏡像,那么之前提及的無法重復(fù)的問題湿镀、鏡像構(gòu)建透明性的問題伐憾、體積的問題就都會(huì)解決。這個(gè)腳本就是 Dockerfile塞耕。
Dockerfile 是一個(gè)文本文件,其內(nèi)包含了一條條的指令(Instruction)莉钙,每一條指令構(gòu)建一層,因此每一條指令的內(nèi)容磁玉,就是描述該層應(yīng)當(dāng)如何構(gòu)建。
還以之前定制 tomcat 鏡像為例席赂,這次我們使用 Dockerfile 來定制时迫。
在一個(gè)空白目錄中颅停,建立一個(gè)文本文件掠拳,并命名為 Dockerfile:
cd /usr/local/
ll
mkdir docker
ll
cd docker/
mkdir tomcat
ll
cd tomcat/
vi Dockerfile
FROM tomcat
RUN echo "Hello Docker" > /usr/local/tomcat/webapps/index.html
所有的dockerfile腳本里第一句必須是 FROM,也就是說你在使用dockerfile定制鏡像的時(shí)候必須要有一個(gè)基礎(chǔ)鏡像
2. 構(gòu)建鏡像
好了喊熟,讓我們再回到之前定制的 tomcat鏡像的 Dockerfile 來〗愕螅現(xiàn)在我們明白了這個(gè) Dockerfile 的內(nèi)容,那么讓我們來構(gòu)建這個(gè)鏡像吧聂使。
在 Dockerfile 文件所在目錄執(zhí)行:
docker build -t myshop .
docker images
docker run -it myshop bash
ls -al
cd webapps/
ls -al
cd ROOT/
ls -al
cd webapps/
cat index.html
(最新的tomcat鏡像運(yùn)行起來柏靶,webapps下面居然沒有ROOT,所以可以看到我上面的操作宿礁,只是再webapps下加了一個(gè)index.html文件蔬芥,并且在里面追加了“Helllo Docker
的內(nèi)容”)