Docker入門與實(shí)踐-Dockerfile構(gòu)建鏡像

1. Dockerfile文件介紹

  • Dockerfile是一個(gè)Docker鏡像的描述文件蝶押,Dockerfile 由一行行命令語句組成,并且支持以 # 開頭的注釋行鞋诗。
  • Docker程序可以對(duì)Dockerfile中的內(nèi)容進(jìn)行解析筒主,自動(dòng)生成一個(gè)Docker鏡像。
  • Dockerfile類似于Linux中的Makefile文件骑篙,當(dāng)需要定制鏡像文件時(shí)蜕提,可以根據(jù)需要在Dockerfile上添加或者修改指令。之后就可以用這個(gè)Dockerfile重新生成新的自定義的鏡像了靶端。
  • Dockerfile文件通常分為四部分:基礎(chǔ)鏡像信息谎势、維護(hù)者信息、鏡像操作指令和容器啟動(dòng)時(shí)執(zhí)行指令杨名。

Dockerfile文件示例

# This dockerfile uses the ubuntu image
# VERSION 2 - EDITION 1
# Author: docker_user
# Command format: Instruction [arguments / command] ..

# Base image to use, this must be set as the first line
FROM ubuntu

# Maintainer: docker_user <docker_user at email.com> (@docker_user)
MAINTAINER docker_user docker_user@email.com

# Commands to update the image
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

# Commands when creating a new container
CMD /usr/sbin/nginx

命令解釋
FROM : 指定一個(gè)基礎(chǔ)鏡像
MAINTAINER : 用于指定鏡像制作者的信息
RUN : 執(zhí)行命令脏榆,在當(dāng)前image中執(zhí)行任意合法命令并提交執(zhí)行結(jié)果。
CMD : 設(shè)置容器啟動(dòng)時(shí)執(zhí)行的操作

2. 自定義Dockerfile台谍,構(gòu)建nginx1.14.2版本鏡像

如果沒有安裝docker须喂,請(qǐng)先安裝docker

yum install -y docker 
systemctl start docker
systemctl enable docker
systemctl status docker
docker version

設(shè)置加速器

自行設(shè)置,如果使用阿里云主機(jī)趁蕊,可以直接用阿里云的鏡像加速器坞生,速度超快

編寫Dockerfile文件

FROM centos:centos7
MAINTAINER myname <myname@gmail.com>

# 安裝工具包
RUN yum install -y gcc-c++  pcre pcre-devel zlib zlib-devel openssl openssl-devel

# 安裝nginx1.14.2
RUN useradd -M -s /sbin/nologin nginx
COPY ./nginx-1.14.2.tar.gz /opt/
WORKDIR /opt/
RUN tar zxvf nginx-1.14.2.tar.gz
RUN mkdir -p /usr/local/nginx
RUN cd nginx-1.14.2 && ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module  --with-http_sub_module && make && make install

# 設(shè)置啟動(dòng)腳本
RUN mkdir -p /opt/work/bin
COPY ./start.sh /opt/work/bin
WORKDIR /opt/work/bin
RUN chmod -R 755 /opt/work/bin

# 定義要暴露的端口
EXPOSE 80

# 啟動(dòng)nginx腳本
CMD ["./start.sh"]

3. 構(gòu)建鏡像

先下載需要的nginx-1.14.2源碼包

wget http://nginx.org/download/nginx-1.14.2.tar.gz

創(chuàng)建start.sh文件

#!/bin/bash
/usr/local/nginx/sbin/nginx -g "daemon off;"

構(gòu)建鏡像

docker build -t my-nginx-server .

查看鏡像

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
my-nginx-server     latest              acaccfdcf580        8 seconds ago       426 MB
docker.io/centos    centos7             5e35e350aded        4 months ago        203 MB

4. 啟動(dòng)容器

docker run -p 8080:80 --name my_nginx -d my-nginx-server

5. 進(jìn)入容器

docker exec -it  my_nginx  /bin/bash

6. 查看自定義的容器中nginx版本

nginx -v
    nginx version: nginx/1.14.2

7.使用commit命令提交新鏡像

從容器創(chuàng)建一個(gè)新的鏡像。

語法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker commit -a "提交的鏡像作者" -m "提交時(shí)的說明文字" a39ecd72101d  my_nginx:v1.14.2

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
my_nginx            v1.14.2             cca26308e299        8 seconds ago        426 MB

8. 其他命令

停止容器

docker stop
docker kill

殺死所有正在運(yùn)行的容器

docker kill $(docker ps -a -q)

刪除已經(jīng)停止的容器

docker rm $(docker ps -q -f status=exited)

刪除一個(gè)鏡像

docker rmi 容器id

批量刪除鏡像

docker images -q     #列出所有的鏡像ID
docker rmi $(docker images -q)

查看docker容器運(yùn)行日志

docker logs 容器ID
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末掷伙,一起剝皮案震驚了整個(gè)濱河市是己,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌任柜,老刑警劉巖赃泡,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寒波,死亡現(xiàn)場離奇詭異,居然都是意外死亡升熊,警方通過查閱死者的電腦和手機(jī)俄烁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來级野,“玉大人页屠,你說我怎么就攤上這事”腿幔” “怎么了辰企?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長况鸣。 經(jīng)常有香客問我牢贸,道長,這世上最難降的妖魔是什么镐捧? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任潜索,我火速辦了婚禮,結(jié)果婚禮上懂酱,老公的妹妹穿的比我還像新娘竹习。我一直安慰自己,他們只是感情好列牺,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布整陌。 她就那樣靜靜地躺著,像睡著了一般瞎领。 火紅的嫁衣襯著肌膚如雪泌辫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天九默,我揣著相機(jī)與錄音震放,去河邊找鬼。 笑死荤西,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的伍俘。 我是一名探鬼主播邪锌,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼癌瘾!你這毒婦竟也來了觅丰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤妨退,失蹤者是張志新(化名)和其女友劉穎妇萄,沒想到半個(gè)月后蜕企,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冠句,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年轻掩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片懦底。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唇牧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出聚唐,到底是詐尸還是另有隱情丐重,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布杆查,位于F島的核電站扮惦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏亲桦。R本人自食惡果不足惜崖蜜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烙肺。 院中可真熱鬧纳猪,春花似錦、人聲如沸桃笙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搏明。三九已至鼠锈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間星著,已是汗流浹背购笆。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虚循,地道東北人同欠。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像横缔,于是被迫代替她去往敵國和親铺遂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容