ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Dockerdocker容器化之dockerfile

2022-08-10 18:34:07  阅读:190  来源: 互联网

标签:容器 Dockerdocker 文件夹 world 镜像 docker 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)

标签:容器,Dockerdocker,文件夹,world,镜像,docker,dockerfile
来源: https://www.cnblogs.com/wrwangrong/p/16573485.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有