製作自定義鏡像: 基於centos鏡像使用commit創建新的鏡像文件 基於centos鏡像使用Dockerfile文件創建一個新的鏡像文件

1.2 步驟

實現此案例需要按照如下步驟進行。

步驟一:使用鏡像啓動容器

1)在該容器基礎上修改yum源

[root@docker1 docker_images]# docker run -it docker.io/centos
[root@8d07ecd7e345 /]# rm -rf /etc/yum.repos.d/*  
[root@8d07ecd7e345 /]# vi /etc/yum.repos.d/dvd.repo
[dvd]
name=dvd
baseurl=ftp://192.168.1.254/system
enabled=1
gpgcheck=0
[root@8d07ecd7e345 /]# yum clean all
[root@8d07ecd7e345 /]# yum repolist

2)安裝測試軟件

[root@8d07ecd7e345 /]# yum -y install net-tools iproute psmisc vim-enhanced

3)ifconfig查看

[root@8d07ecd7e345 /]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.3  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:acff:fe11:3  prefixlen 64  scopeid 0x20<link>
        ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)
        RX packets 2488  bytes 28317945 (27.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1858  bytes 130264 (127.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@8d07ecd7e345 /]# exit
exit

步驟二:另存爲另外一個鏡像

1)創建新建鏡像

[root@docker1 docker_images]# docker start 8d07ecd7e345        
//可以簡寫爲8d,要保證唯一性
8d07ecd7e345
[root@docker1 docker_images]# docker commit 8d07ecd7e345 docker.io/myos:latest 
sha256:ac3f9c2e8c7e13db183636821783f997890029d687b694f5ce590a473ad82c5f

2)查看新建的鏡像

[root@docker1 ~]# docker images 
REPOSITORY           TAG             IMAGE ID          CREATED              SIZE
docker.io/myos     latest       87feda116c17         6 weeks ago         321.6 MB
docker.io/busybox  latest       d8233ab899d4         7 weeks ago         1.199 MB
docker.io/nginx    latest       f09fe80eb0e7         9 weeks ago         109.2 MB
docker.io/redis    latest       82629e941a38        11 weeks ago        94.98 MB
docker.io/ubuntu   latest       20bb25d32758        11 weeks ago        87.47 MB
docker.io/registry latest       116995fd6624        11 weeks ago        25.76 MB
docker.io/centos   latest       1e1148e4cc2c        4 months ago        201.8 MB

3)驗證新建鏡像

[root@docker1 docker_images]# docker run -it docker.io/myos:latest
[root@497c7b4664bf /]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.6  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:acff:fe11:6  prefixlen 64  scopeid 0x20<link>
        ether 02:42:ac:11:00:06  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7  bytes 578 (578.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

步驟三:使用Dockerfile文件創建一個新的鏡像文件

Dockerfile語法格式:

– FROM:基礎鏡像

– MAINTAINER:鏡像創建者信息(說明)

– EXPOSE:開放的端口

– ENV:設置環境變量

– ADD:複製文件到鏡像

– RUN:製作鏡像時執行的命令,可以有多個

– WORKDIR:定義容器默認工作目錄

– CMD:容器啓動時執行的命令,僅可以有一條CMD

1)創建一個Apache的鏡像文件

[root@docker1 ~]# mkdir bulid
[root@docker1 ~]# cd bulid
[root@docker1 bulid]# touch Dockerfile    //Dockerfile文件第一個字母要大寫
[root@docker1 bulid]# cp /etc/yum.repos.d/local.repo  ./
[root@docker1 bulid]# vi Dockerfile
FROM  docker.io/myos:latest
RUN yum -y install httpd
ENV EnvironmentFile=/etc/sysconfig/httpd
WORKDIR /var/www/html/            //定義容器默認工作目錄
ADD index.html index.html
EXPOSE 80                //設置開放端口號
EXPOST 443
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
[root@docker1 bulid]# docker build -t docker.io/myos:http .
[root@docker1 bulid]# docker run -d  docker.io/myos:http 
d9a5402709b26b42cd304c77be442559a5329dc784ec4f6c90e4abac1c88e206
[root@docker1 bulid]# docker inspect d9
[root@docker1 bulid]# curl 172.17.0.7
test
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章