制作自己的Docker镜像
制作自己的Docker镜像有两种方式
- 将容器变成镜像
- 通过Buildfile语法制作镜像
将容器变成镜像
首先我们先从docker镜像仓库拉取一个tomcat镜像,切换到root账号
1 | # docker search tomcat |
这里会列出镜像仓库 中一堆的tomcat相关的镜像资源,下面我们拉取一个到本地。
1 | # docker pull dordoka/tomcat |
启动容器
1 | # docker run -it -p 8080:8080 dordoka/tomcat |
在宿主机上通过浏览器访问 http://localhost:8080 就能看到我们对于容器的修改。
将我们修改好的容器制作成镜像
通过docker commit
1 | # docker commit 9a987406fc9e marspie/tomcat:1.0 |
将容器制作成镜像的做法:
优点 | 缺点 |
---|---|
最方便,最快速 | 不规范,无法自动化 |
Buildfile 制作镜像
下面我们通过Buildfile文件来制作一个jdk1.8-tomcat8的镜像。
首先我们从Oracle官网下载: jdk-8u144-linux-x64.tar.gz
下载Tomcat8 Apache官网下载:apache-tomcat-8.5.16.tar.gz
Buildfile 文件内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30# VERSION 0.0.1
# ubuntu server
FROM ubuntu
# 签名
MAINTAINER MARSPIE "marspie@126.com"
# 把java与tomcat添加到容器中
ADD jdk-8u144-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.16.tar.gz /usr/local/
# 配置java与tomcat环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_144
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV TOMCAT_HOME /usr/local/apache-tomcat-8.5.16
ENV PATH $PATH:$JAVA_HOME/bin:$TOMCAT_HOME/lib:$TOMCAT_HOME/bin
# 容器运行时监听的端口
EXPOSE 8080
ENTRYPOINT ["/usr/local/apache-tomcat-8.5.16/bin/catalina.sh", "run"]
#CMD /usr/local/apache-tomcat-8.5.16/bin/catalina.sh run
```
4. 将如上准备的3个文件至于同一目录下
``` bash
[root@bogon docker]# ls -l
total 190372
-rwxrw-rw-. 1 alex alex 9417469 Jul 30 18:28 apache-tomcat-8.5.16.tar.gz
-rw-------. 1 alex alex 654 Jul 30 19:09 Dockerfile
-rwxrw-rw-. 1 alex alex 185515842 Jul 30 18:34 jdk-8u144-linux-x64.tar.gz使用如下命令制作镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33[root@bogon docker]# docker build -t marspie/ubuntu-tomcat8:0.0.2 .
Sending build context to Docker daemon 194.9 MB
Step 1/10 : FROM ubuntu
---> 14f60031763d
Step 2/10 : MAINTAINER MARSPIE "marspie@126.com"
---> Using cache
---> 9e2681f280b5
Step 3/10 : ADD jdk-8u144-linux-x64.tar.gz /usr/local/
---> Using cache
---> e69764710ed4
Step 4/10 : ADD apache-tomcat-8.5.16.tar.gz /usr/local/
---> Using cache
---> 9cef7a3e804b
Step 5/10 : ENV JAVA_HOME /usr/local/jdk1.8.0_144
---> Using cache
---> 54b3e6339868
Step 6/10 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
---> Using cache
---> 463ccbe97778
Step 7/10 : ENV TOMCAT_HOME /usr/local/apache-tomcat-8.5.16
---> Using cache
---> 9455c2777e34
Step 8/10 : ENV PATH $PATH:$JAVA_HOME/bin:$TOMCAT_HOME/lib:$TOMCAT_HOME/bin
---> Using cache
---> 5fc99c79cfe5
Step 9/10 : EXPOSE 8080
---> Using cache
---> 63aa2690221f
Step 10/10 : ENTRYPOINT /usr/local/apache-tomcat-8.5.16/bin/catalina.sh run
---> Running in ef7da9894470
---> 55eebdf6b21d
Removing intermediate container ef7da9894470
Successfully built 55eebdf6b21d运行下我们制作的tomcat镜像
1
# docker run -it -p 8080:8080 55eebdf6b21d
测试,通过宿主机浏览器访问:http://localhost:8080 看到tomcat的欢迎页面,好了通过Dockerfile制作镜像成功了。
Docker 镜像的导入导出
将镜像导出为文件
1 | # docker save -o marspie-ubuntu-tomcat8.0.02.tar marspie/ubuntu-tomcat8:0.0.2 |
完成后通过 ls 命令即可看到文件
将我们打包导出的镜像包上传至另一台虚机
镜像导入
1 | # docker load -i marspie-ubuntu-tomcat8.0.02.tar |
这样我们又可以在这台虚机愉快的玩耍了O(∩_∩)O~