对于想了解docker在已有的tomcat镜像上打新的镜像的Dockerfile编写说明的读者,本文将提供新的信息,我们将详细介绍docker使用镜像,并且为您提供关于dockerDockerfile
对于想了解docker 在已有的 tomcat 镜像上打新的镜像的 Dockerfile 编写说明的读者,本文将提供新的信息,我们将详细介绍docker 使用镜像,并且为您提供关于docker Dockerfile文件制作自己的镜像的方法、docker dockerfile构建自己的tomcat镜像、Docker 使用 Dockerfile 制作 Tomcat 镜像、Docker 使用 Dockerfile 构建自己的镜像的有价值信息。
本文目录一览:- docker 在已有的 tomcat 镜像上打新的镜像的 Dockerfile 编写说明(docker 使用镜像)
- docker Dockerfile文件制作自己的镜像的方法
- docker dockerfile构建自己的tomcat镜像
- Docker 使用 Dockerfile 制作 Tomcat 镜像
- Docker 使用 Dockerfile 构建自己的镜像
docker 在已有的 tomcat 镜像上打新的镜像的 Dockerfile 编写说明(docker 使用镜像)
如果需要将某个文件替换或者添加到旧的 tomcatimage 中,形成一个新的 image, 需要在 dockerfile 中做一下操作
FROM old_tomcat
#这里可以使用docker官方的镜像,以下说明都是在此基础上的实例
MAINTAINER ******************
#如果需要替换原有的配置文件或者脚本
ADD web.xml /usr/local/tomcat/webapps/manager/WEB-INF/
ADD tomcat-users.xml /usr/local/tomcat/conf/
ADD server.xml /usr/local/tomcat/conf/
ADD catalina.sh /usr/local/tomcat/bin/
ADD 需要打到image中的war包名.war /usr/local/tomcat/webapps/
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
然后
docker build -t new_tomcat .
这时就形成了一个被修改过的新镜像,启动该新镜像的一个容器时,添加 war 已经早容器中了,不需要映射宿主主机目录到 /usr/local/tomcat/webapps/
docker Dockerfile文件制作自己的镜像的方法
1.创建空目录
$ cd /home/xm6f/dev $ mkdir myapp $ cd myapp/
2.vim Dockerfile,内容如下:
## 一个基础的 python 运行环境 FROM python ## 设置工作目录 WORKDIR /app ## 将当前系统文件夹内容复制到容器的 app 目录 ADD . /app ## 安装必要的依赖包 RUN pip install -r softwares.txt ## 开放端口,供容器外访问 EXPOSE 80 EXPOSE 3088 EXPOSE 8080 EXPOSE 8066 ## 定义环境变量 ENV NAME HELLO ## 运行命令 CMD ["python","app.py"]
3.安装依赖
vim softwares.txt,内容如下:
Flask Redis
4.vim app.py,内容如下:
from flask import Flask from redis import Redis, RedisError import os import socket # Connect to Redis redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2) app = Flask(__name__) @app.route("/") def hello(): try: visits = redis.incr("counter") except RedisError: visits = "<i>cannot connect to Redis, counter disabled</i>" html = "<h3>Hello {name}!</h3>" \ "<b>Hostname:</b> {hostname}<br/>" \ "<b>Visits:</b> {visits}" return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits) if __name__ == "__main__": app.run(host=''0.0.0.0'', port=80)
5.编译
$ docker build -t myfirstapp .
6.查看新生成了一个image
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE myfirstapp latest 01ea1129a831 2 hours ago 699MB
7.启动image
$ docker run -p 4000:80 myfirstapp
也可以放在后台运行:
$ docker run -d -p 4000:80 myfirstapp
8.访问服务
# curl http://localhost:4000 <h3>Hello world!</h3><b>Hostname:</b> a6655d0d7e74<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>
或者浏览器访问服务:http://192.168.1.160:4000
9.查看当前运行的镜像
$ docker ps CONTAINER ID MAGE COMMAND CREATED STATUS PORTS NAMES 2db45cab2bb4 myfirstapp "python app.py" 2 minutes ago Up 2 minutes 0.0.0.0:4000->80/tcp elastic_wilson
10.停止镜像
$ docker stop 2db45cab2bb4
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
- Docker中镜像构建文件Dockerfile与相关命令的详细介绍
- 详解利用Dockerfile构建mysql镜像并实现数据的初始化及权限设置
- Dockerfile制作官方Tomcat镜像及镜像使用详解
- 利用Dockerfile制作java运行环境的镜像的方法步骤
- docker官方镜像下载及使用Dockerfile创建镜像的方法
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- 详解docker中Dockerfile指令创建镜像
- 如何通过vs2017的Dockerfile来生成镜像
- docker使用Dockerfile构建镜像的方法
- Docker教程之使用dockerfile生成镜像
docker dockerfile构建自己的tomcat镜像
文件
1.apache-tomcat-8.5.24.tar.gz, jdk-8u151-linux-x64.tar.gz
Dockerfile文件:
FROM centos
WORKDIR /usr
COPY apache-tomcat-8.5.24.tar.gz /usr
COPY jdk-8u151-linux-x64.tar.gz /usr
RUN mkdir /usr/tomcat && mkdir /usr/jdk
RUN tar -zxvf apache-tomcat-8.5.24.tar.gz -C /usr/tomcat
WORKDIR /usr/tomcat
RUN mv apache-tomcat-8.5.24 tomcat
WORKDIR /usr
RUN tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/jdk
ENV JAVA_HOME /usr/jdk/jdk1.8.0_151
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
EXPOSE 8080
//dokcer运行时执行
ENTRYPOINT /usr/tomcat/tomcat/bin/startup.sh && tail -F /usr/tomcat/tomcat/logs/catalina.out
docker build -t zxf/tomcat .
第二种方法:
VOLUME
VOLUME ["/data"]
说明:
["/data"]可以是一个JsonArray ,也可以是多个值。所以如下几种写法都是正确的
VOLUME ["/var/log/"]
VOLUME /var/log
VOLUME /var/log /var/db
一般的使用场景为需要持久化存储数据时
容器使用的是AUFS,这种文件系统不能持久化数据,当容器关闭后,所有的更改都会丢失。
所以当数据需要持久化时用这个命令。
docker commit 容器名称 新的镜像名称
Docker 使用 Dockerfile 制作 Tomcat 镜像
编写 Dockerfile 文件
vim Dockerfile
# 镜像使用的基础镜像
FROM centos
# 指明镜像的作者
MAINTAINER wu<wuyuanhui@qq.com>
# 添加压缩包,会自动解压,需提前下载放到 Dockerfile 文件所在目录
ADD jdk-8u11-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/
# 类似ADD指令,将文件拷贝到镜像中,需提前编写放到 Dockerfile 文件所在目录
COPY readme.txt /usr/local/readme.txt
# 镜像构建时需要运行的命令
RUN yum -y install vim
RUN yum -y install net-tools
# 构建时设置环境变量
ENV MYPATH /usr/local
# 镜像的工作目录,启动容器后进入的目录
WORKDIR $MYPATH
# 设置 JAVA 环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# 指定对外的暴露端口
EXPOSE 8080
# 匿名挂载数据卷
VOLUME ["volume01","volume02"]
# 容器启动时需要运行的命令,多个CMD命令只有最后一个会生效
# CMD中的命令会被docker run的命令完全替代
CMD echo $MYPATH
CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out
# 构建镜像
# -f 指定使用的Dockerfile文件,-t 指定生成镜像的版本,. 镜像放在当前目录
docker build -t my_tomcat .
# 查看所有镜像
docker images
# 运行容器,默认会去找最新版,所以需要指定版本
docker run -d -p 8080:8080 --name my_tomcat01 \
-v /home/tomcat/test:/usr/local/apache-tomcat-9.0.22/webapps/test \
-v /home/tomcat/logs:/usr/local/apache-tomcat-9.0.22/logs \
my_tomcat
# 进入容器
docker exec -it my_tomcat01 /bin/bash
# 查看镜像构建历史
docker history image_id
# 查看容器详情和数据卷挂载信息
docker inspect my_centos01
Docker 使用 Dockerfile 构建自己的镜像
可以使用Dockerfile的配置文件方式进行构建自己的镜像 下面利用docker构建一个Caddy web服务器
<!--more-->
构建脚本
Dockerfile有自己的命令,下面使用了一些比较常用的命令,更多的Dockerfile命令,可查看以下博文: Dockerfile命令详解(超全版本)
Dockerfile文件内容
# 基础镜像Ubuntu
FROM ubuntu:latest
# 镜像作者信息
MAINTAINER zhoutao "zhoutao825638@vip.qq.com"
#RUN 命令执行脚本
RUN mkdir -p /opt/soft/caddy
RUN mkdir -p /usr/www/html
RUN echo "<h1>Hello,World!</h1>" >> /usr/www/html/index.html
# COPY 执行本地拷贝命令
COPY ./caddy /opt/soft/caddy/
COPY ./Caddyfile /opt/soft/caddy/
# 启动执行命令
CMD ["/opt/soft/caddy/caddy", "-conf","/opt/soft/caddy/Caddyfile"]
# 暴露端口
EXPOSE 80
Caddyfile文件内容
其中Caddyfile
配置文件内容如下:
:80 {
gzip
root /usr/www/html
}
caddy文件可从caddy官方下载
构建命令
首先确认下文件结构
$ tree
.
├── caddy
├── Caddyfile
└── Dockerfile
- caddy 是Caddy的运行文件
- Caddyfile 是caddy的配置文件
- Dockerfile是构建docker的配置文件
然后开始构建image(注意切换到和Dockerfile同级目录)
docker build -t caddy_image:0.1 .
- 构建结果
第一次构建需要拉取ubuntu基础镜像,然后才开始构建
Sending build context to Docker daemon 20.12MB
Step 1/9 : FROM ubuntu:latest
latest: Pulling from library/ubuntu
124c757242f8: Pull complete
9d866f8bde2a: Pull complete
fa3f2f277e67: Pull complete
398d32b153e8: Pull complete
afde35469481: Pull complete
Digest: sha256:de774a3145f7ca4f0bd144c7d4ffb2931e06634f11529653b23eba85aef8e378
Status: Downloaded newer image for ubuntu:latest
---> cd6d8154f1e1
Step 2/9 : MAINTAINER zhoutao "zhoutao825638@vip.qq.com"
---> Running in 976ccb6d9fd0
Removing intermediate container 976ccb6d9fd0
---> c41619ec0682
Step 3/9 : RUN mkdir -p /opt/soft/caddy
---> Running in fea53d5e3b98
Removing intermediate container fea53d5e3b98
---> 2b84b490ac72
Step 4/9 : RUN mkdir -p /usr/www/html
---> Running in 2b6d3ef30fb2
Removing intermediate container 2b6d3ef30fb2
---> eef4e4e0584a
Step 5/9 : RUN echo "<h1>Hello,World!</h1>" >> /usr/www/html/index.html
---> Running in 9784c9f94636
Removing intermediate container 9784c9f94636
---> e2b8568e77c5
Step 6/9 : COPY ./caddy /opt/soft/caddy/
---> 7f5e675846bb
Step 7/9 : COPY ./Caddyfile /opt/soft/caddy/
---> e8fbed1ae131
Step 8/9 : CMD ["/opt/soft/caddy/caddy", "-conf","/opt/soft/caddy/Caddyfile"]
---> Running in a71772181530
Removing intermediate container a71772181530
---> 66b878cddbf6
Step 9/9 : EXPOSE 80
---> Running in 39741df7c755
Removing intermediate container 39741df7c755
---> 51c30425c00e
Successfully built 51c30425c00e
Successfully tagged caddy_image:0.1
运行容器
# docker运行容器
$ docker run -p 9090:80 -d --name caddy_9090 caddy_image:0.1
575c7966b1021de5fe95212cb09723e3256ad1153a8cd04a836ab171d40860ed
# 查看docker所有的容器
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
575c7966b102 caddy_image:0.1 "/opt/soft/caddy/cad…" 5 seconds ago Up 4 seconds 0.0.0.0:9090->80/tcp caddy_9090
访问测试
可以看到,当我访问80端口的时候,他会到/usr/www/html目录下寻找数据,而index.html正是我们在Dockerfile文件中的RUN命令写入的RUN echo "<h1>Hello,World!</h1>" >> /usr/www/html/index.html
$ curl -X GET http://localhost:9090/index.html
<h1>Hello,World!</h1>
我们今天的关于docker 在已有的 tomcat 镜像上打新的镜像的 Dockerfile 编写说明和docker 使用镜像的分享就到这里,谢谢您的阅读,如果想了解更多关于docker Dockerfile文件制作自己的镜像的方法、docker dockerfile构建自己的tomcat镜像、Docker 使用 Dockerfile 制作 Tomcat 镜像、Docker 使用 Dockerfile 构建自己的镜像的相关信息,可以在本站进行搜索。
本文标签: