GVKun编程网logo

docker 在已有的 tomcat 镜像上打新的镜像的 Dockerfile 编写说明(docker 使用镜像)

18

对于想了解docker在已有的tomcat镜像上打新的镜像的Dockerfile编写说明的读者,本文将提供新的信息,我们将详细介绍docker使用镜像,并且为您提供关于dockerDockerfile

对于想了解docker 在已有的 tomcat 镜像上打新的镜像的 Dockerfile 编写说明的读者,本文将提供新的信息,我们将详细介绍docker 使用镜像,并且为您提供关于docker Dockerfile文件制作自己的镜像的方法、docker dockerfile构建自己的tomcat镜像、Docker 使用 Dockerfile 制作 Tomcat 镜像、Docker 使用 Dockerfile 构建自己的镜像的有价值信息。

本文目录一览:

docker 在已有的 tomcat 镜像上打新的镜像的 Dockerfile 编写说明(docker 使用镜像)

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文件制作自己的镜像的方法

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镜像

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 镜像

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 构建自己的镜像

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 构建自己的镜像的相关信息,可以在本站进行搜索。

本文标签: