Docker-docker制作鏡像


一、下載鏡像

a、以daocloud為mirror下載Nginx鏡像

配置daocloud為mirror,下載Nginx鏡像:(daocloud官網登陸后,發現鏡像里找到Nginx鏡像

下載Nginx鏡像:

[root@localhost Desktop]# docker pull daocloud.io/library/nginx:1.13.0-alpine
1.13.0-alpine: Pulling from library/nginx
b2388ca7fa65: Pull complete
7947be538089: Pull complete
d16f692df913: Pull complete
0dbd6ee41762: Pull complete
Digest: sha256:5c36f962c506c379bd63884976489c9c5e700c1496a6e8ea13dc404b1d258f76
Status: Downloaded newer image for daocloud.io/library/nginx:1.13.0-alpine
[root@localhost Desktop]#

b、查看所有已下載的鏡像

[root@localhost Desktop]# docker images
REPOSITORY                             TAG                      IMAGE ID              CREATED          SIZE
daocloud.io/library/nginx       1.13.0-alpine           f00ab1b3ac6d         6 months ago      15.5MB
[root@localhost Desktop]#

c、下載的docker在本地的位置:/var/lib/docker/

d、docker啟動nginx:

[root@localhost docker]# docker run --name webserver -d -p 80:80 nginx:1.13.0-alpine
92d1de9fb008b7efc7d73390fa8b62ef1a1e45a2564e93b481dfb3ff5d68b7b8
[root@localhost docker]#

驗證啟動結果:

  

查看container(啟動鏡像(容器)):

[root@localhost docker]# docker ps
CONTAINER ID         IMAGE                            COMMAND                  CREATED              STATUS                    PORTS                                NAMES
92d1de9fb008      nginx:1.13.0-alpine      "nginx -g 'daemon ..."        2 minutes ago          Up 2 minutes          0.0.0.0:80->80/tcp                webserver
[root@localhost docker]#

e、如果要更改容器啟動的Nginx歡迎頁,可以執行docker exec 命令進入容器,修改其內容。

 [root@localhost docker]# docker exec -it webserver bash

oci runtime error: exec failed: container_linux.go:265: starting container process caused "exec: \"bash\": executable file not found in $PATH"

[root@localhost docker]#

報錯了,原因是bash找不到,bash路徑是在/bin/sh下,所以我們加上bash的路徑:

[root@localhost /]# docker exec -it webserver /bin/sh
/ # echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
/ # exit
[root@localhost /]#

刷新頁面:

二、基於鏡像定制自己的鏡像

a、使用 Dockerfile 定制鏡像(參考地址

Dockerfile 是一個文本文件,其內包含了一條條的指令(Instruction),每一條指令構建一層,因此每一條指令的內容,就是描述該層應當如何構建。

還以之前定制 nginx 鏡像為例,這次我們使用 Dockerfile 來定制。

在一個空白目錄中,建立一個文本文件,並命名為 Dockerfile:(Dockerfile 全路徑 /usr/local/mynginx/Dockerfile)

[root@localhost local]# mkdir mynginx
[root@localhost local]# cd mynginx/
[root@localhost mynginx]# touch Dockerfile
[root@localhost mynginx]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 28 10:14 Dockerfile
[root@localhost mynginx]# vi Dockerfile

Dockerfile編輯內容:

FROM nginx:1.13.0-alpine
RUN echo '<h1>Hello, Docker! dockerfile</h1>' > /usr/share/nginx/html/index.html

FROM: FROM 就是指定基礎鏡像,因此一個 Dockerfile 中 FROM 是必備的指令,並且必須是第一條指令。

RUN:指令是用來執行命令行命令的。

b、構建鏡像

[root@localhost mynginx]# docker build -t nginx:v12036 .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM nginx:1.13.0-alpine
---> f00ab1b3ac6d
Step 2/2 : RUN echo '<h1>Hello, Docker! dockerfile</h1>' > /usr/share/nginx/html/index.html
---> Running in 6249d27a5db9
---> bc1dc66316f7
Removing intermediate container 6249d27a5db9
Successfully built bc1dc66316f7
Successfully tagged nginx:v12036
[root@localhost mynginx]#

c、查看鏡像

[root@localhost mynginx]# docker images
REPOSITORY                              TAG                  IMAGE ID               CREATED              SIZE
       nginx                                   v12036              bc1dc66316f7        44 seconds ago      15.5MB
daocloud.io/library/nginx         1.13.0-alpine        f00ab1b3ac6d         6 months ago        15.5MB
       nginx                                1.13.0-alpine        f00ab1b3ac6d         6 months ago        15.5MB
[root@localhost mynginx]#

TAG為v12036 的是基於nginx  1.13.0-alpine 構建的自定義的鏡像

e、驗證自定義的鏡像

[root@localhost mynginx]# docker run --name nginxv12306 -d -p 8081:80 nginx:v12036
docker: Error response from daemon: Conflict. The container name "/nginxv12306" is already in use by container "917dbc7d5110bb63d4dbdc5855996c24cc92ec950f88d4f799ac647f2f213b3e". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
[root@localhost mynginx]#

容器(nginxv12306)已經在啟動,此時換個容器名或刪除此容器:

[root@localhost mynginx]# docker rm -f nginxv12306
nginxv12306
[root@localhost mynginx]#

d、啟動docker,綁定8081端口:

[root@localhost mynginx]# docker run --name nginxv12036 -d -p 8081:80 nginx:v12036
cda0e3bd719315da07466e79df076ee486b23a4ef7849918739c5e06ed7fa287
[root@localhost mynginx]#

e、訪問地址:http://192.168.118.128:8081

 

三、參考

鏡像構建上下文:Context 

git repo構建


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM