使用Dockerfile定制镜像

使用Dockerfile将程序打包成镜像,做到一次编译、到处运行。

镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。
类似于Linux的脚本–.shell windows的脚本文件–.bat等等

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

这里我们根据tomcat来定制镜像:
首先使用Docker pull一个tomcat
root@ubuntu:/# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
Digest: sha256:68355b27adee5fc76c23e3d3cb994bd2733f05aa8e2c070a61346e16eed308ac
Status: Image is up to date for tomcat:latest
docker.io/library/tomcat:latest
root@ubuntu:/# 
然后我们查看一下是否pull到了tomcat。
这里用到了两个命令:docker images和docker image ls这两个命令都可以查看,我们看到了下方有
这么一个tomcat				
root@ubuntu:/# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               c6a43cd4801e        9 days ago          123MB
ubuntu              18.04               549b9b86cb8d        9 days ago          64.2MB
tomcat              latest              6fa48e047721        2 weeks ago         507MB
root@ubuntu:/# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               c6a43cd4801e        9 days ago          123MB
ubuntu              18.04               549b9b86cb8d        9 days ago          64.2MB
tomcat              latest              6fa48e047721        2 weeks ago         507MB
root@ubuntu:/# 
创建一个新的容器并运行一个命令 :
docker run -it tomcat bash
查看一下目录这里不能使用ll  要使用ls -al
root@ubuntu:/# docker run -it tomcat bash
root@10ffed32e707:/usr/local/tomcat# ll
bash: ll: command not found
root@10ffed32e707:/usr/local/tomcat# ls -al
total 160
drwxr-sr-x 1 root staff  4096 Dec 13 23:52 .
drwxrwsr-x 1 root staff  4096 Nov 23 16:34 ..
-rw-r--r-- 1 root root  19318 Dec  7 19:23 BUILDING.txt
-rw-r--r-- 1 root root   5408 Dec  7 19:23 CONTRIBUTING.md
-rw-r--r-- 1 root root  57011 Dec  7 19:23 LICENSE
-rw-r--r-- 1 root root   1726 Dec  7 19:23 NOTICE
-rw-r--r-- 1 root root   3255 Dec  7 19:23 README.md
-rw-r--r-- 1 root root   7136 Dec  7 19:23 RELEASE-NOTES
-rw-r--r-- 1 root root  16262 Dec  7 19:23 RUNNING.txt
drwxr-xr-x 2 root root   4096 Dec 13 23:52 bin
drwxr-sr-x 2 root root   4096 Dec  7 19:23 conf
drwxr-sr-x 2 root staff  4096 Dec 13 23:52 include
drwxr-xr-x 2 root root   4096 Dec 13 23:52 lib
drwxrwxrwx 2 root root   4096 Dec  7 19:19 logs
drwxr-sr-x 3 root staff  4096 Dec 13 23:52 native-jni-lib
drwxrwxrwx 2 root root   4096 Dec 13 23:52 temp
drwxr-xr-x 7 root root   4096 Dec  7 19:21 webapps
drwxrwxrwx 2 root root   4096 Dec  7 19:19 work

在一个空白目录中,建立一个文本文件,并命名为 Dockerfile:

这里我们使用tomcat举例,进入到Linux的usr/local/docker目录下新建tomcat目录并在目录中新建Dockerfile文件
root@ubuntu:/usr/local/docker/tomcat# ll
total 12
drwxr-xr-x 2 root root 4096 Jan  3 02:57 ./
drwxr-xr-x 3 root root 4096 Jan  3 02:55 ../
-rw-r--r-- 1 root root   80 Jan  3 02:57 Dockerfile
root@ubuntu:/usr/local/docker/tomcat# 
在这个文件里写入以下代码:
root@ubuntu:/usr/local/docker/tomcat# vi Dockerfile 
FROM tomcat
RUN echo "Hello Docker" > /usr/local/tomcat/webapps/ROOT/index.html

构建镜像

此命令是用来构建镜像的,后面的名字是标签名  可以任意取  后面的点`在这里插入代码片`是代表当前目录的意思 因为镜像的构建需要基于Dockerfile文件,这个点的意思就是要告知Dockerfile文件在哪
docker build -t myshop . 
查看一下仓库
root@ubuntu:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myshop              latest              abaff971fdb3        3 hours ago         507MB
tomcat              latest              94e31e5297d1        4 days ago          507MB
ubuntu              latest              549b9b86cb8d        2 weeks ago         64.2MB
以交互的方式进入新建好的myshop
root@ubuntu:~# docker run -it myshop bash
进入到相应的目录可以看我们新建的index.html是存在的并且显示了内容
root@00b45314327c:/usr/local/tomcat# cd webapps
root@00b45314327c:/usr/local/tomcat/webapps# ls -al
total 28
drwxr-xr-x  1 root root  4096 Dec  7 19:21 .
drwxr-sr-x  1 root staff 4096 Dec 29 09:22 ..
drwxr-xr-x  1 root root  4096 Jan  3 03:11 ROOT
drwxr-xr-x 15 root root  4096 Dec 29 09:21 docs
drwxr-xr-x  6 root root  4096 Dec 29 09:21 examples
drwxr-xr-x  5 root root  4096 Dec 29 09:21 host-manager
drwxr-xr-x  5 root root  4096 Dec 29 09:21 manager
root@00b45314327c:/usr/local/tomcat/webapps# cd ROOT
root@00b45314327c:/usr/local/tomcat/webapps/ROOT# ls -al
total 196
drwxr-xr-x 1 root root  4096 Jan  3 03:11 .
drwxr-xr-x 1 root root  4096 Dec  7 19:21 ..
-rw-r--r-- 1 root root  7136 Dec  7 19:23 RELEASE-NOTES.txt
drwxr-xr-x 2 root root  4096 Dec 29 09:21 WEB-INF
-rw-r--r-- 1 root root 27235 Dec  7 19:23 asf-logo-wide.svg
-rw-r--r-- 1 root root   713 Dec  7 19:21 bg-button.png
-rw-r--r-- 1 root root  1918 Dec  7 19:21 bg-middle.png
-rw-r--r-- 1 root root  1401 Dec  7 19:21 bg-nav.png
-rw-r--r-- 1 root root  3103 Dec  7 19:21 bg-upper.png
-rw-r--r-- 1 root root 21630 Dec  7 19:21 favicon.ico
-rw-r--r-- 1 root root    13 Jan  3 03:11 index.html
-rw-r--r-- 1 root root 12219 Dec  7 19:23 index.jsp
-rw-r--r-- 1 root root  2376 Dec  7 19:21 tomcat-power.gif
-rw-r--r-- 1 root root  5581 Dec  7 19:23 tomcat.css
-rw-r--r-- 1 root root  2066 Dec  7 19:21 tomcat.gif
-rw-r--r-- 1 root root  5103 Dec  7 19:21 tomcat.png
-rw-r--r-- 1 root root 67795 Dec  7 19:23 tomcat.svg
root@00b45314327c:/usr/local/tomcat/webapps/ROOT# cat index.html
Hello Docker
假如我们需要删除ROOT目录下面的东西,我们就需要在Dockerfile中新增一下代码
FROM tomcat
这是新加入的代码
WORKDIR  /usr/local/tomcat/webapps/ROOT
RUN rm -rf *
新加入的代码到此结束  
RUN echo "Hello Docker" > /usr/local/tomcat/webapps/ROOT/index.html
继续运行一下代码
docker run -it --rm myshop bash
使用 docker images查看一下  有两个虚悬镜像 将他们删除,docker ps -a 查看运行的镜像,docker rm  加对应的id删除他们
使用 docker image prune就可以删除虚悬镜像
运行命令启动
docker run -p 8080:8080 myshop   
打开服务器输入自己的IP地址加端口号  发现成功访问Hello Docker

以上来源查看自李哥本人纯属小白 ,建议从上述链接查看,此处笔记为了练习用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值