Docker导出镜像与Dockerfile的简单应用及网络参数设置

前边将在Docker容器中完成了JDK的安装,但是在将该容器导出为镜像并重新进入时发现该环境变量无法生效,需要每次手工执行一下 source /etc/profile 来刷取一下环境才可以。

针对这种情况经调查可以在创建镜像时通过编辑dockerfile文件来进行配置,这样在每次加载容器的时候都可以自动设置环境变量

另因为想用创建的多个docker容器做一个分布式的环境,所以需要考虑指定固定的IP。因此又需要设置相应的IP信息,在这里也一并做以记录

首先记录为docker启动容器增加参数
在合适的目录下创建Dockerfile描述文件,我的路径是/home/docker/java18 这样比较好区分,以后可能还得要增加别的容器的启动描述文件

我的文件中填入的内容如下
#base on image 本次创建容器所基于的镜像版本
FROM mas-centos7-env-net:latest

#maintainer infomation 镜像维护人信息
MAINTAINER [email protected]

下边是环境变量,这里需要注意一下。因为看起来和profile下的写法差不多,粗心的同学容易直接拷过来后把等号去掉就完了。要注意把export替换成ENV
ENV JAVA_HOME /etc/jdk1.8.0_241
ENV CLASSPATH .:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
ENV PATH $PATH:${JAVA_HOME}/bin

默认开放22和80端口,这个不是一定要写
EXPOSE 22 80

写好后针对要导出的镜像进行导出命令编写
docker build -t mas-centos7-env-demo:v1.0 .

这里-t是要导出的镜像的名字,mas-centos7-env-demo:v1.0 会被拆分成REPOSITORY和TAG 来进行
另外注意命令最后有一个 . ,这个点不显眼,但表示的是当前build所用的dockerfile的路径, . 表示dockfile就在当前执行命令的目录下。个人也可以修改为相应的目录

创建成功后运行其这个新导出的image

此时就可以看到环境变量已经默认加载成功了

另外也需要为新起的container指定固定的ip,那么先把当前已启动的container先行关闭。

先用docker ps 确定一下当前container的id

首先进行容器的停止 docker stop c5a964549d10

然后执行容器的删除 docker rm c5a964549d10

然后自行创建一个网络模式

docker network create --driver bridge --subnet=172.3.3.0/16 --gateway=172.3.3.1 masnet

这里的masnet 是新建的网络模式的名称 --subnet=172.3.3.0/16 表示新建网络的IP范围 ,gateway=172.3.3.1 是网关定义

执行完成后 docker network ls,如果正常成功是可以看到自己新建的网络模式的

然后在启动容器时指定使用相关的IP
docker run -di --name mas-ip --net masnet --ip 172.3.3.10 mas-centos-env-demo:v1.0 启动测试镜像

docker run -di --name mas-ip --net masnet --ip 172.3.3.10 mas-centos-env-demo:v1.0 中

--name mas-ip 表示启动的容器的名称
--net masnet 应用的网络模式,就是刚刚创建的那个网络模式
--ip 172.3.3.10 指定所用的IP

原文地址:https://blog.51cto.com/4890631/2484903

时间: 2024-11-13 08:01:48

Docker导出镜像与Dockerfile的简单应用及网络参数设置的相关文章

docker 应用-2(Dockerfile 编写以及镜像保存提交)

我们可以从docker hub上pull别人的镜像,也可以将容器进行修改,然后commit镜像,并把镜像push到docker hub上被被人使用.但是,直接pull或者push镜像的方式太过笨重,尤其在镜像体积很大的时候. Dockerfile就可以让我们用写脚本的方式自动化构建镜像,避免对容器修改+提交的方式构建镜像,也可以让我们不用每次都耗时耗力的pull一个远程镜像. Dockerfile的编写 直接看官方文档吧:https://docs.docker.com/engine/refere

Docker容器学习梳理-Dockerfile构建镜像

在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其中,然后让docker读取并分析.执行,那么重复构建.更新将变得很方便,所以Dockerfile就此诞生了.Docker提供了Dockerfile作为构建Docker镜像脚本,避免人们一行一行的输入,真是善莫大焉.Dockerfile脚本可以做到随时维护修改,即可以分享,更有利于在模板化,更不用说传

【Docker自定制镜像之Dockerfile】

镜像的定制,就是定制每一层所添加的配置.文件,如果可以把每一层修改.安装.构建.操作的命令都写入到一个脚本中,用脚本来构建.定制镜像,这个脚本就是Dockerfile Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容就是没每一层应当如何构建的. Dockerfile ---------?? FROM 指定基于哪个镜像文件来构建新的镜像,尽量使用官方的bash image 示例: FROM 镜像名/镜像ID[:tag]

【Docker自定制镜像之Dockerfile】--2019-08-06 15:20:55

原创链接: http://106.13.73.98/__/105/ 镜像的定制,就是定制每一层所添加的配置.文件,如果可以把每一层修改.安装.构建.操作的命令都写入到一个脚本中,用脚本来构建.定制镜像,这个脚本就是Dockerfile Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容就是没每一层应当如何构建的. Dockerfile ---------?? FROM 指定基于哪个镜像文件来构建新的镜像,尽量使用官方的b

docker导入导出镜像

docker导入导出镜像 导出镜像的命令如下: docker save -o ubuntu_14.04.tar ubuntu:14.04 导入镜像的命令如下: docker load < ubuntu_14.04.tar 注意参数导出镜像时参数-o 原文地址:https://www.cnblogs.com/mrnx2004/p/11691031.html

Docker的镜像和容器

Docker image详细介绍 在之前的介绍中,我们知道docker images 是docker的三大组件之一. docker把下载的 images 存储到docker主机上,如果一个 image 不在主机上,docker会从一个镜像仓库下载,默认的仓库是  DOCKER HUB  公共仓库. 接下来将介绍更多关于docker images 的内容,包括: 使用和管理本地主机上的 images 创建一个基础的 images 上传 images 到docker hub (公共 images 仓

Docker的镜像、容器和仓库

Docker本身的镜像是构建在其本身的文件系统之上的,Docker有很多种类的文件系统,Docker所支持的文件系统有以下几种:Aufs.devicemapper.btrfs和VFS,其中前三种是联合文件系统,可以支持分层,可以快速迭代,可以回滚.VFS 不支持.平时用的最多的是aufs 和devicemapper.Aufs(advanced multilayered unification filesystem), 直译过来就是高级分层联合文件系统,做为一种Union FS ,它支持将不同的目

Docker大行其道—镜像

导读 作为Docker三大核心概念之一,Docker镜像(Docker Image)是一个面向Docker引擎的只读模板,包含文件系统.实际上每个Docker镜像包含一个独立的运行环境,如一个镜像包含centos操作系统环境,我们称之为一个centos镜像. Docker运行一个容器实例之前,可以以一个镜像为基础环境,如以一个包含centos操作系统的Docker镜像为模板.建立容器之前,Docker会检查本地是否存在对应的镜像,如果镜像不存在本地,Docker会尝试从默认的镜像仓库(Repos

Docker 使用指南 (五)—— Dockerfile 详解

版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/97 来源:腾云阁 https://www.qcloud.com/community 制作Docker image 有两种方式:一是使用 Docker container,直接构建容器,再导出成 image 使用:二是使用 Dockerfile,将所有动作卸载文件中,再 build 成 image.Dockerfile 的方式非常灵活,推荐使用. 本次