Dockerdocker容器化之dockerfile

Docker容器化

1、镜像的导入导出

镜像导入导出的场景:

异地的办公模式,开发把应用程序打包成镜像,然后发送给测试;

测试运行镜像(镜像导入中docker中),镜像运行成功等于环境部署成功,可以测试。

开发操作步骤:

一、写代码;

二、把写的代码打包成镜像:

A.执行代码的依赖环境(比如写的代码需要在Linux上执行,那么就需要Linux的环境);

B.执行代码本身的环境(比如java的环境需要jdk);

三、把镜像导出

docker image save 需要导出镜像名称 -o 被导出镜像在本地储存的位置/定义的镜像名称;

四、发送给测试。

测试操作步骤:

一、接收开发发送的镜像;

二、导入镜像到docker中;

三、运行镜像;

四、开始测试。

(1)导出镜像命令 docker image save hello-world:latest(被导出的镜像:镜像版本) -o 被导出的镜像在本地储存的位置/定义镜像的储存时的名称。

如:导出hello-world将其储存在桌面上,并将其命名为hello-world.taz

命令如下:docker image save hello-world:latest -o D:\Users\29660\Desktop\hello-world.taz

image-20220810093045625

(2)导入镜像命令 docker image load -i 被导入的镜像储存位置/镜像名称。

如:导入储存在桌面中的hello-world镜像 具体命令如下:docker load -i D:\Users\29660\Desktop\hello-world.taz

image-20220810094421966

注意:在运行镜像中,后面需要带一些指令的信息,这些指令的信息具体汇总为如下:

-d:后台运行
-it:交互式命令(bash)
--rm:容器挂掉后自动被删除
--name:给容器起一个名字
-p:端口映射
-P:指定任意的端口

运行centos镜像并重命名镜像名称实现退出后删除运行记录

image-20220810100441036

2、容器信息的查看

(1)linux:docker ps -a | grep 容器ID

(2)windows:docker ps -a | findstr 容器ID

(3)查看容器的详细的信息:docker container inspect 容器ID

如:查看centos镜像的实时日志

image-20220810104408825

Linux环境中查看日志的前20行docker logs 容器ID | head -20

image-20220810104650755

Linux环境中查看日志的后20行docker logs 容器ID | tail -20

image-20220810104903150

保存之前容器中的环境和文件

image-20220810142649670

根据容器ID对容器的启用和停用

image-20220810142751608

docker容器化之dockerfile

1、Dockerfile概述

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

Dockerfile使用

(2)创建镜像方法

在docker中创建镜像可以分为两个方法,这两个方法具体可以总结为如下:

A.手动修改容器内容,然后docker commit提交容器为新的镜像文件;

B.通过在dockerfile中定义一系列的命令和参数构成的脚本,然后这些命令应用于基础镜像,依次添加层,最终生成一个新的镜像,这样就极大的简化了部署的工作。

(3)Dockerfile组成部分

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

A.基础镜像信息;

B.制作镜像操作指令 RUM;

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

2、Dockerfile基本指令

dockerfile的指令主要可以汇总为如下,使用dockerfile的前提是学习会这些指令的基本使用,具体如下:

(1)FROM #指令基础镜像;

(2)MAINTAINER #指定维护者信息,也可以没有;

(3)RUN #具体执行的操作,在命令前面加上RUN即可;

(4)ADD #COPY文件,会自动进行解压;

(5)WORKDIR #设置当前工作目录;

(6)VOLUME #设置卷,挂载主机目录;

(7)EXPOSE #指定对外的端口;

(8)MD #指定容器启动后需要干的事情;

(9)COPY #复制文件;

(10)ENV #环境变量;

(11) ENIRYPOINT #容器启动后执行的命令。

3、如何创建dockerfile文件(通过dockerfile构建centos镜像的过程)

(1)新建一个文件夹,在文件夹中新建一个文件,文件内输入:

FROM centos:7.8.2003 (指定基础镜像)

MAINTAINER XX (创建人)

ENV name Docker (定义一个变量,变量的值是Docker)

ENTRYPOINT echo "Hello $name" (运行程序,输出变量的值,输出的值是 Hello Docker)

如:创建一个 learndocke文件夹,在文件夹中创建一个dockerfile的文件。

image-20220810172642196

2)打开控制台,进入创建的文件夹dockerfile中

命令如下:

cd D:\Users\29660\Desktop\dockerfile

d:

image-20220810173002901

(3)输入docker scan 后,再输入y

image-20220810173558244

4)登录到docker hub的账户

命令如下:

docker login

然后输入docker hub的账户和密码

image-20220810174048382

(5)再次开始构建镜像 docker build -t centos_name -f dockerfile .

docker build 构建镜像;

-t:指定文件名(自定义);

-d:指定Dockerfile文件夹。

image-20220810174808228

(6)运行镜像 docker run -it --rm centos_name

image-20220810174854483

nginx部署

 

(1)新建一个文件夹,在文件夹中新建一个文件,文件内输入:

FROM nginx (指定基础镜像)

MAINTAINER XX (创建人)

RUN echo "Hi, This Is A Docker Continer WebSite" > /usr/share/nginx/html/index.html (运行在html中输出Hi, This Is A Docker Continer WebSite)

EXPOSE 80(80端口)

如:创建一个 dockerfile文件夹,在文件夹中创建一个dockerfile的文件。

image-20220810175354261

2)打开控制台,进入创建的文件夹dockerfile中

命令如下:

cd D:\Users\29660\Desktop\dockerfile

d:

image-20220810173002901

(3)再次开始构建镜像docker build -t website .

docker build 构建镜像;

-t:指定文件名(自定义);

-d:指定Dockerfile文件夹。

image-20220810180424660

(4)运行镜像 docker run -it --rm centos_name

image-20220810180608673

在网页中输入https://localhost:80回车,出现下图则上传成功

image-20220810180725472

如果端口被占用,可参考该网址解决

win7.win10进程pid4占用80端口的解决办法 - 电脑教程 (geren-jianli.org)

posted @ 2022-08-10 18:13  LaraCroft  阅读(733)  评论(0编辑  收藏  举报