Dockerdocker容器化之dockerfile
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
(2)导入镜像命令 docker image load -i 被导入的镜像储存位置/镜像名称。
如:导入储存在桌面中的hello-world镜像 具体命令如下:docker load -i D:\Users\29660\Desktop\hello-world.taz
注意:在运行镜像中,后面需要带一些指令的信息,这些指令的信息具体汇总为如下:
• -d:后台运行
• -it:交互式命令(bash)
• --rm:容器挂掉后自动被删除
•
• -p:端口映射
-P:指定任意的端口
运行centos镜像并重命名镜像名称实现退出后删除运行记录
2、容器信息的查看
(1)linux:docker ps -a | grep 容器ID
(2)windows:docker ps -a | findstr 容器ID
(3)查看容器的详细的信息:docker container inspect 容器ID
如:查看centos镜像的实时日志
Linux环境中查看日志的前20行docker logs 容器ID | head -20
Linux环境中查看日志的后20行docker logs 容器ID | tail -20
保存之前容器中的环境和文件
根据容器ID对容器的启用和停用
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的文件。
2)打开控制台,进入创建的文件夹dockerfile中
命令如下:
cd D:\Users\29660\Desktop\dockerfile
d:
(3)输入docker scan 后,再输入y
4)登录到docker hub的账户
命令如下:
docker login
然后输入docker hub的账户和密码
(5)再次开始构建镜像 docker build -t centos_name -f dockerfile .
docker build 构建镜像;
-t:指定文件名(自定义);
-d:指定Dockerfile文件夹。
(6)运行镜像 docker run -it --rm centos_name
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的文件。
2)打开控制台,进入创建的文件夹dockerfile中
命令如下:
cd D:\Users\29660\Desktop\dockerfile
d:
(3)再次开始构建镜像docker build -t website .
docker build 构建镜像;
-t:指定文件名(自定义);
-d:指定Dockerfile文件夹。
(4)运行镜像 docker run -it --rm centos_name
在网页中输入https://localhost:80回车,出现下图则上传成功
如果端口被占用,可参考该网址解决