GVKun编程网logo

制作 dockerfile, 天眼查的镜像、并运行(天眼查 接口)

22

在这篇文章中,我们将带领您了解制作dockerfile,天眼查的镜像、并运行的全貌,包括天眼查接口的相关情况。同时,我们还将为您介绍有关Docker0x05:Dockerfile制作镜像、docker

在这篇文章中,我们将带领您了解制作 dockerfile, 天眼查的镜像、并运行的全貌,包括天眼查 接口的相关情况。同时,我们还将为您介绍有关Docker 0x05: Dockerfile制作镜像、docker Dockerfile文件制作自己的镜像的方法、Docker 使用 Dockerfile 制作 Tomcat 镜像、Docker 使用 Dockerfile 构建自己的镜像的知识,以帮助您更好地理解这个主题。

本文目录一览:

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

Docker 0x05: Dockerfile制作镜像

目录

  • Dockerfile制作镜像
    • 一句话什么是dockerfile
    • dockerfile脚本指令
    • 小结

Dockerfile制作镜像

dockerfile 可以是制作自己镜像的脚本文件,按照这个脚本文件执行,就能制作出镜像了

一句话什么是dockerfile

Dockerfile : automate the steps of creating a Docker image

dockerfile脚本指令

  1. FROM base-image 指定基础镜像,作为构建新镜像的底层
  2. MAINTAINER zhangjiaqi77777@outlook.com 指定镜像的构建者
  3. RUN 命令 后面的命令就像类似shell脚本的命令一样。每一个RUN就是一层镜像。
  4. CMD 指令 用于指定启动容器默认的主进程命令。因为容器其实就是进程,它不像虚拟机那样启动后不运行任何东西也能静默运行。容器需要有一个主进程一直持续,然后就会退出。可以想象,容器就是一个包着一个主进程在那里跑,主进程就是容器的灵魂,灵魂没了,容器也会消失。注意命令:如果是shell 格式 sh -c "执行行命令" 那么这是通过shell作为主程序运行,当shell执行完子进程,shell就执行完成,主进程也就退出,那么容器也就退出了。所以我们尽量使用直接二进制文件执行的方式,不用shell -c 执行。而是CMD ["", "", ""] 将命令空格拆分到列表中。这样只要主进程一致运行,那么容器也就不会退出。
  5. ENTRYPOINT 后面跟上 ["", "", ""] 命令 An ENTRYPOINT allows you to configure a container that will run as an executable 这样容器在启动时,如docker run ,容器像是一个可执行程序一样,执行ENTRYPOINT 指定的可执行程序,并将CMD 主进程的命令列表,作为参数传递给ENTRYPOINT。 有什么作用,可以作为启动容器主进程前的预处理程序。如检查设置相关。。。(dockerfile只能有一个)
  6. copY 指令 从外界(URL)复制文件到容器的文件系统中
  7. ADD 指令 类似copY,除了URL外还支持一个归档文件,并在copy到目的路径后解包。
  8. ENV 设置容器中的环境变量
  9. ARG 定义build时的上下文变量,这里的变量定义可以设置默认值,如果在docker build --build-arg 传入了对应名字的变量时,这个变量值将使用传入的值。类似于python脚本的通过argv接受参数功能。ARG定义的变量取值方式和EVN一样,前面加$,关于ARG与ENV名称冲突,已ENV优先。
  10. LABEL 设置一些元信息,LABEL设定的在镜像间时可继承的。
  11. workdir /home/test 指定工作路径,像RUN,CMD, ENTRYPOINT, copY, ADD 的工作目录。可以多个workdir 指定,来切换路径,并且可以相对路径。
  12. VOLUME指令 由于容器运行时产生的数据需要持久化,那么就需要给容器创建挂载点,挂载点就是VOLUME指令指定的,这样就容器就可以将宿主机或者其它容器的卷挂在到这个点上。
  13. ONBUILD 是在作为基础镜像时,在下游使用本镜像时,出发这个操作在下游build上下文环境中。
  14. USER 为运行之命令进程的用户或用户组。
  15. EXPOSE 和VOLUME类似,如果容器要提供网络服务,那么传输层的端口可以通过EXPOSE先指定。但是不一定马上就要使用。

小结

  1. 区分CMD ENTRYPOINT的功能
  2. 理解VOLUME EXPOSE 这两个对外接口
  3. ARG 与 ENV 冲突的话,优先级
  4. USER 指定进程用户用户组相关
  5. RUN 是基础镜像中执行的命令

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

编写 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>

今天关于制作 dockerfile, 天眼查的镜像、并运行天眼查 接口的讲解已经结束,谢谢您的阅读,如果想了解更多关于Docker 0x05: Dockerfile制作镜像、docker Dockerfile文件制作自己的镜像的方法、Docker 使用 Dockerfile 制作 Tomcat 镜像、Docker 使用 Dockerfile 构建自己的镜像的相关知识,请在本站搜索。

本文标签: