DockerFile中的命令详解
ENV命令用来指定环境变量
ex:
ENV TZ“Asia / ShangHai”用来指定镜像的时区
ENV TREM xterm用来指定Linux的虚拟终端类型
ADD和COPY指令
需要说明的是在DockerFile中,ADD和COPY指令都用来复制文件,区别在于ADD可以自动将文件解压后拷贝,而COPY指令只能将解压后的文件进行拷贝。
一般ADD命令用来添加一些镜像源或者拷贝一些配置文件,例如在Centos7中:
ex:
- ADD aliyun-mirror.repo /etc/yum.repos.d/CentOS-Base.repo
- ADD aliyun-epel.repo /etc/yum.repos.d/epel.repo
VOLUME指令
通过宿主机映射contina中的文件夹
ONBUILD指令
ONBUILD RUN指令用来当构建这个镜像时,指定的命令不会去执行通过当前镜像作为基础镜像,构建下一个镜像时,启动生效。
RUN指令
RUN指令后一般会书写可被执行的SHELL命令
例如:
yum install lzzrz(安装文件上传下载服务)
bash -c'touch /app.jar'(拷贝编译后的jar到容器中)
EXPOSE指令
在DockFile中用EXPOSE:端口号可以选择将指定的端口号暴露给宿主机
ENTRYPOINT指令
ENTRYPOINT指令用来指定容器(Continer)每次启动的时候执行的命令
例如: ENTRYPOINT [“/ usr / bin / supervisord”,“ - n”,“ - c”,“/ etc / supervisord.conf”]这个命令就是用来在容器启动的时候,启动进程管理器Supervisord并指定配置文件
Docker命令相关
Docker Build
例如: Docker build -t repository_url / namespace / continer_name / centos-lastest。
-t代表指定镜像的名称不写-t参数则需指定/路径DockFile文件所在的位置。默认DockFile在当前目录下
Docker Run
例如:docker运行- d -p 2222:22 -name dbserver
-d 在后端启动,返回docker的learid
-it 以交互模式启动
-p 映射端口,不管连续是否重启映射端口不会发生变化
-P(大写)宿主机会随机选择端口映射22,重新启动之后会发生变化
Docker PS
docker ps查看所有正在运行的容器。
docker ps -a查看所有已经构建成功的容器。
**
遇到的一些问题及解决方案
**
-
在写Docker中的启动脚本时要在SHELL脚本的开始加上set -e set-e的作用是当脚本执行发生错误时,立即停止执行,避免造成更大的影响。
-
在windows中执行Shell脚本的时候,会因为windows和unix的换行符和其他隐藏字符导致脚本无法继续执行,此时要通过:set ff查看当前文档的格式是unix还是windows,如果是windows需要更改为unix,保存之后,继续执行就不会发生错误了。