在这篇文章中,我们将带领您了解制作dockerfile,天眼查的镜像、并运行的全貌,包括天眼查接口的相关情况。同时,我们还将为您介绍有关Docker0x05:Dockerfile制作镜像、docker
在这篇文章中,我们将带领您了解制作 dockerfile, 天眼查的镜像、并运行的全貌,包括天眼查 接口的相关情况。同时,我们还将为您介绍有关Docker 0x05: Dockerfile制作镜像、docker Dockerfile文件制作自己的镜像的方法、Docker 使用 Dockerfile 制作 Tomcat 镜像、Docker 使用 Dockerfile 构建自己的镜像的知识,以帮助您更好地理解这个主题。
本文目录一览:- 制作 dockerfile, 天眼查的镜像、并运行(天眼查 接口)
- Docker 0x05: Dockerfile制作镜像
- docker Dockerfile文件制作自己的镜像的方法
- Docker 使用 Dockerfile 制作 Tomcat 镜像
- Docker 使用 Dockerfile 构建自己的镜像
制作 dockerfile, 天眼查的镜像、并运行(天眼查 接口)
1、为了打包天眼查、docker 容器、制作了下面的容器、
2、下面的文件有
3、Dockerfile 下面是这样写的
FROM python:3.6
#RUN apt-get update && apt-get install -y --no-install-recommends \
# libsm6 \
# libxext6 \
# libxrender-dev \
# git \
# && \
# apt-get clean && \
# rm -rf /var/lib/apt/lists/*
WORKDIR /crawlTian6.0
COPY requirements.txt .
RUN pip install -r requirements.txt
# RUN pip install pipenv && pipenv install
# RUN git clone https://github.com/jonstewart/afflib.git && cd afflib/pyaff && python setup.py build && python setup.py install
EXPOSE 5001
CMD ["python", "/crawlTian6.0/crawl.py"]
requirements 是这样写的
lxml==4.2.3
connexion==2.0.0
requests==2.19.1
psycopg2==2.7.5
Pillow==5.3.0
fontTools==3.32.0
制作完镜像 、查看镜像
运行程序
root@jia-B85M-D3V-A:/home/jia/crawlTian6.0# docker run -v $(pwd):/crawlTian6.0 ty
Docker 0x05: Dockerfile制作镜像
目录
- Dockerfile制作镜像
- 一句话什么是dockerfile
- dockerfile脚本指令
- 小结
Dockerfile制作镜像
dockerfile 可以是制作自己镜像的脚本文件,按照这个脚本文件执行,就能制作出镜像了
一句话什么是dockerfile
Dockerfile : automate the steps of creating a Docker image
dockerfile脚本指令
- FROM base-image 指定基础镜像,作为构建新镜像的底层
- MAINTAINER zhangjiaqi77777@outlook.com 指定镜像的构建者
- RUN 命令 后面的命令就像类似shell脚本的命令一样。每一个RUN就是一层镜像。
- CMD 指令 用于指定启动容器默认的主进程命令。因为容器其实就是进程,它不像虚拟机那样启动后不运行任何东西也能静默运行。容器需要有一个主进程一直持续,然后就会退出。可以想象,容器就是一个包着一个主进程在那里跑,主进程就是容器的灵魂,灵魂没了,容器也会消失。注意命令:如果是shell 格式 sh -c "执行行命令" 那么这是通过shell作为主程序运行,当shell执行完子进程,shell就执行完成,主进程也就退出,那么容器也就退出了。所以我们尽量使用直接二进制文件执行的方式,不用shell -c 执行。而是CMD ["", "", ""] 将命令空格拆分到列表中。这样只要主进程一致运行,那么容器也就不会退出。
- ENTRYPOINT 后面跟上 ["", "", ""] 命令 An ENTRYPOINT allows you to configure a container that will run as an executable 这样容器在启动时,如docker run ,容器像是一个可执行程序一样,执行ENTRYPOINT 指定的可执行程序,并将CMD 主进程的命令列表,作为参数传递给ENTRYPOINT。 有什么作用,可以作为启动容器主进程前的预处理程序。如检查设置相关。。。(dockerfile只能有一个)
- copY 指令 从外界(URL)复制文件到容器的文件系统中
- ADD 指令 类似copY,除了URL外还支持一个归档文件,并在copy到目的路径后解包。
- ENV 设置容器中的环境变量
- ARG 定义build时的上下文变量,这里的变量定义可以设置默认值,如果在docker build --build-arg 传入了对应名字的变量时,这个变量值将使用传入的值。类似于python脚本的通过argv接受参数功能。ARG定义的变量取值方式和EVN一样,前面加$,关于ARG与ENV名称冲突,已ENV优先。
- LABEL 设置一些元信息,LABEL设定的在镜像间时可继承的。
- workdir /home/test 指定工作路径,像RUN,CMD, ENTRYPOINT, copY, ADD 的工作目录。可以多个workdir 指定,来切换路径,并且可以相对路径。
- VOLUME指令 由于容器运行时产生的数据需要持久化,那么就需要给容器创建挂载点,挂载点就是VOLUME指令指定的,这样就容器就可以将宿主机或者其它容器的卷挂在到这个点上。
- ONBUILD 是在作为基础镜像时,在下游使用本镜像时,出发这个操作在下游build上下文环境中。
- USER 为运行之命令进程的用户或用户组。
- EXPOSE 和VOLUME类似,如果容器要提供网络服务,那么传输层的端口可以通过EXPOSE先指定。但是不一定马上就要使用。
小结
- 区分CMD ENTRYPOINT的功能
- 理解VOLUME EXPOSE 这两个对外接口
- ARG 与 ENV 冲突的话,优先级
- USER 指定进程用户用户组相关
- RUN 是基础镜像中执行的命令
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 镜像
编写 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>
今天关于制作 dockerfile, 天眼查的镜像、并运行和天眼查 接口的讲解已经结束,谢谢您的阅读,如果想了解更多关于Docker 0x05: Dockerfile制作镜像、docker Dockerfile文件制作自己的镜像的方法、Docker 使用 Dockerfile 制作 Tomcat 镜像、Docker 使用 Dockerfile 构建自己的镜像的相关知识,请在本站搜索。
本文标签: