赞
踩
对于Java
语言,我们需要编写java
源代码,然后用编译器对源代码文件进行编译得到class
文件,最后虚拟机再对class
文件进行解释执行
在Docker
中,我们该如何生成自己的镜像,然后把镜像放到镜像库中呢?这就需要用到DockerFile
在Redis
中,我们想把数据持久化到硬盘上,我们采用AOF
或者RDB
的方式,但对于Docker
容器如何实现数据在宿主机和容器间进行共享持久化呢?这就需要用到数据卷。
Docker
容器产生的数据,如果我们不通过docker commit
命令来生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除后,数据自然就没有了。为了能保存数据在Docker
中,我们使用卷。
Docker
不会在容器删除时删除其挂载的数据卷方式一:在容器内添加
方式二:DockerFile
添加
命令:docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
执行以下命令:
docker run -it -v /myDataVolume:/dataVolumeContain centos
docker inspect 镜像ID
容器停止退出后,主机修改后数据是否可以同步到容器?答案:可以
命令:docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名(容器内readonly,只读,不可写)
执行以下命令:
docker run -it -v /myDataVolume:/dataVolumeContain:ro centos
查看数据卷是否起作用:
docker inspect 镜像ID
此方式,容器中数据卷只读
DockerFile
为镜像模板的描述文件DockerFile
是用来构建Docker
镜像的构建文件,是由一系列命令和参数构成的脚本DockerFile
文件说明:
#
表示注释Docker
执行DockerFile
的大致流程:
docker
从基础镜像运行一个容器docker commit
的操作提交一个新的镜像层docker
再基于刚提交的镜像运行一个新容器dockerfile
中的下一条指令直到所有指令都执行完成编写DockerFile
文件
docker build
docker build -f /mydocker/Dockerfile -t scorpios/centos .
docker run
参数 | 说明 |
---|---|
FROM | 基础镜像,当前新镜像是基于哪个镜像的 |
MAINTAINER | 镜像维护者的姓名和邮箱地址 |
RUN | 容器构建时需要运行的命令 |
EXPOSE | 当前容器对外暴露的端口 |
WORKDIR | 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点 |
ENV | 用来在构建镜像过程中设置环境变量 |
ADD | 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包 |
COPY | 类似ADD,拷贝文件和目录到镜像中。将从构建上下文<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置 |
VOLUME | 容器数据卷,用于数据保存和持久化工作 |
CMD | |
ENTRYPOINT | |
ONBUILD |
当使用DockerFile
中的VOLUME
属性添加数据卷时:
使原始的centos7
镜像,具备以下功能:vim+ifconfig+jdk8
Jdk8
镜像下载地址:https://www.oracle.com/java/technologies/downloads/#java8
把下载好的Jdk8
包上传到服务器上
Dockerfile文件的第一个字母必须为大写:D
FROM centos MAINTAINER scorpios<scorpios@163.com> ENV MYPATH /usr/local WORKDIR $MYPATH #安装vim编辑器 RUN yum -y install vim #安装ifconfig命令查看网络IP RUN yum -y install net-tools #安装java8及lib库 RUN yum -y install glibc.i686 RUN mkdir /usr/local/java #ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置 ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/ #配置java环境变量 ENV JAVA_HOME /usr/local/java/jdk1.8.0_171 ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH ENV PATH $JAVA_HOME/bin:$PATH EXPOSE 80 CMD echo $MYPATH CMD echo "success--------------ok" CMD /bin/bash
docker build -t 新镜像名字:TAG .
docker build -t mycentos7:1.2.1 .
上面TAG后面有个空格,有个点
查看镜像并运行镜像:
docker run -it 新镜像名字:TAG
eg:docker run -it mycentos7:1.2.1
<none>
的镜像,俗称dangling image
docker image ls -f dangling=true
docker image prune
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。