wangwt123

Docker-Dockerfile

一、Dockerfile简述

使用dockerfile主要是用于构建docker镜像文件信息,相当于一个脚本,通过dockerfile自己的指令,来构建软件依赖,文件依赖,存储等情况。

二、Dockerfile的组成部分

dockerfile的主要组成部分可以汇总为:

基础镜像信息

制作镜像操作指令RUN

容器启动时执行指令CMD["/bin/bash"]

三、Dockerfile基本指令

dockerfile的指令主要可以汇总为如下:

FROM→指令基础镜像

MAINTAINER→指定维护者信息,也可以没有

RUN→具体执行的操作,在命令前面加上RUN即可

ADD→COPY文件,会自动进行解压

WORKDIR→设置当前工作目录

VOLUME→设置卷,挂载主机目录

EXPOSE→指定对外的端口

CMD→指定容器启动后需要干的事情

COPY→复制文件

ENV→环境变量

ENTRYPOINT→容器启动后执行的命令

四、Dockerfile使用

构建Dockerfile的镜像信息命令为:

docker build -t [起的镜像名字] .

如果不起镜像名,命令为:

docker build .

实战1:部署centos服务:期望部署的是启动容器后,可以访问它的地址显示的信息。涉及到的centos的Dockerfile的文件内容在windows里面,新建一个“Dockerfile“文件,输入如下内容:

构建docker镜像的信息,将该镜像命名为”first_docker“:

出现scan的问题,进入,https://hub.docker.com/网址进行注册,注册完成后,输入:docker scan,这里是为了保证我们获取的镜像是没有问题的。

构建镜像成功后,可以查看该镜像信息以及运行该容器,执行的结果就会显示“Hello Docker!”

实战2:未命名的镜像使用Dockerfile

会发现,如果没有定义镜像的名字,系统就会默认为"none"。如果想要重新定义名字,通过tag标签进行重命名即可。

五、Dockerfile实战

1、部署Nginx服务

期望部署的是启动容器后,可以访问它的地址显示的信息。涉及到的nginx的Dockerfile的文件内容在windows里面,新建一个”Dockerfile“文件,输入如下内容:

 

注意:只能有一个”Dockerfile“文件。

然后,构建docker镜像的信息:

当然,如果基础镜像nginx在原docker里,那么在下载的过程中会很快许多。

其次,运行镜像:

输入网址,即可访问:

在刚刚运行镜像的时候,可以查看我们操作过程中的日志信息: 

比如,上图的postman进行了访问,google也进行了访问等日志信息。 

2、部署Python

Django :全栈WEB框架

Flask:轻量级WEB框架

FastAPI:异步WEB框架

Dockerfile文件操作

使用的WEB框架是Flask,然后来实现⼀个网站的部署过程,也就是说写好程序代码好后,开发dockerfile的代码,执行以及生成镜像,其它是基于该镜像,docker run就可以在电脑跑起来对应的应用程序。

step1:期望部署的是启动容器后,可以访问它的地址显示的信息。涉及到的Dockerfile的文件内容在windows里面,新建一个"Dockerfile"文件,输入如下内容:

step2:然后,构建docker镜像的信息并将其命名为:login:docker build -t login . 

step3:运行镜像:docker run --rm -p5000:5000 login

step4:输入网址,即可访问:localhost:5000/login

也可以看到响应状态码:200

3、部署SpringBoot框架下

java里常见的主流框架有:maven、springboot springcloud 、springcloud alibaba等。

maven是springboot的基础,而springboot是springcloud的基础。

同时,maven不依赖springboot,而springboot也不依赖springcloud。

3-1、前期准备:Java语言环境部署和maven环境部署

3-1-1、Java语言环境部署

a、maven把编写好的程序构建成.jar

b、java -jar [以.jar为后缀的文件] 或者 java -jar [以.war为后缀的文件]

先安装Java:docker pull java:8

通过:docker images可以知道Java镜像安装成功!

在SpringBoot中,需要在插件依赖中新增关于Docker的插件,详细的信息具体如下:

3-1-2:首先配置好Maven的环境:

下载并解压apache-maven文件并将bin目录的路径添加到path路径下:

验证Maven环境是否搭建好命令为:mvn -v 

 

3-1-2:Maven的功能

以DBPlus为例:

打开DBPlus文件夹,会有一个"target"文件夹:

a、清理:mvn clean(指的是把构建成功的.war or .jar进行删除) 

此时,通过查看DBPlus文件夹,发现"target"文件夹被清理成功!

b、打包:mvn package(把代码打包构建成.jar .war )

其次,启动:java -jar [以.jar为后缀的文件]:

通过查询源代码,可以知道返回的数据是:

访问网址,可以得到响应。

3-2、部署SpringBoot

3-2-1、Dockerfile文件

step1:下来在docker文件夹里面创建Dockerfile的文件,文件内容具体如下:

注意:.jar包必须和Dockerfile放到同一个目录下。

step2:构建docker镜像的信息并运行镜像

3-2-2、Maven构建

将docker和maven整合起来,一体化,更加的自动化,不需要每次都像之前那么麻烦的去构建。

step1:假设将app.zip文件解压到这里:

step2:下来开始构建,构建的命令具体为:mvn clean package -Dmaven.test.skip=true docker:build

step3:镜像验证 :构建成功后,使用docker images命令

可以查看到app构建成功!

step4:运行镜像文件:运行的命令为:docker run --rm -p8081:8081 [image Id]

通过查询源代码,可以知道返回的数据是:

4、Docker-compose部署

由于安装 docker-compose需要依赖Python,所以先要安装好python并配置好其环境变量。

其次安装 docker-compose:pip install docker-compose

验证成功命令为:docker-compose -v

先将之前的app镜像在控制台里进行删除→依据前面的SpringBoot的项目,在src/main/docker的文件夹下创建docker-compose.yml的文件,在该文件里面定义容器的网络,端口,被启动的镜像信息,文件详细的信息如下:

 

会发现有networks,因此需要创建一个network。

创建网络,目的是为了容器与宿主机是在同⼀个网络的模式下,⼀般我们创建的是Bridge,创建的命令为:

 

通过docker network list,查看目前的网络信息:

下来开始构建,构建的命令具体为:mvn clean package -Dmaven.test.skip=true docker:build

启动镜像:docker-compose up

 

打开编写代码文件夹,查看访问的网址信息:

通过访问网址:http://localhost:8081/index

停止镜像:docker-compose down

posted on 2022-08-10 17:44  DOUBLE快乐  阅读(94)  评论(0编辑  收藏  举报

导航