计算机系统应用教程网站

网站首页 > 技术文章 正文

dockerfile介绍 dockersfile

btikc 2024-09-27 01:13:26 技术文章 6 ℃ 0 评论

一 什么是dockerfile

在我们构建镜像的时候, 我们即可以手工的去构建对象, 也可以通过dockerfile来进行构建镜像, 而很多应用开发的过程中, 我们可能都需要通过dockerfile来制作我们的镜像, 就需要通过dockefile来帮我们构建镜像, 可以帮助我们省去很多人工的操作, 下面, 我们就来熟悉一下dockerfile的语法吧

Dockerfile 是记录了镜像是如何被构建出来的配置文件, 可以被 docker 直接执行以创建一个镜像.

示例:

FROM ubuntu:14.04
MAINTAINER YS.Zou <>

ADD run /root/run
ADD sources.list /etc/apt/sources.list
ADD id_rsa.pub /tmp/pubkey
ADD requirements /root/requirements

RUN mkdir -p /root/.ssh && \
  cat /tmp/pubkey >> /root/.ssh/authorized_keys && \
  rm -rf /tmp/pubkey
...

CMD ["bash", "/root/run"]

关键字介绍:

FROM:基础镜像,当前新的镜像是基于哪个已经存在的镜像的
MAINTAINER:镜像作者及其邮箱
RUN:容器构建时需要执行的命令
EXPOSE:暴露镜像的端口号
WORKDIR:指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
ENV:用来在构建镜像过程中设置环境变量
ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY:跟ADD类似,拷贝文件和目录到镜像中
VOLUME:容器数据卷,用于数据保存和持久化工作
CMD:指定一个容器启动时要执行的命令,dockefile可以有多个cmd指令,但只有最后一个生效,cmd会被docker run之后的参数替换
ENTRYPOINT:指定一个容器启动时要执行的命令,和CMD的目的一样,都是在指定容器启动程序及参数
ONBUILD:当构建一个被继承的dockefile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

二 dockerfile应用举例

3.1 构建tomcat镜像

1 新建/mydockerfile/tomcat目录

2 将jdk和tocmat包放到该目录下面

3 创建dockerfile文件

FROM         centos:7
MAINTAINER    zzyy<zzyybs@126.com>
#把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下
COPY c.txt /usr/local/cincontainer.txt
#把java与tomcat添加到容器中
ADD jdk-8u144-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-7.0.63.tar.gz /usr/local/
#安装vim编辑器
RUN yum -y install vim
#设置工作访问时候的WORKDIR路径,登录落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置java与tomcat环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_144
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-7.0.63
ENV CATALINA_BASE /usr/local/apache-tomcat-7.0.63
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口
EXPOSE  8080
#启动时运行tomcat
# ENTRYPOINT ["/usr/local/apache-tomcat-9.0.8/bin/startup.sh" ]
# CMD ["/usr/local/apache-tomcat-9.0.8/bin/catalina.sh","run"]
CMD /usr/local/apache-tomcat-7.0.63/bin/startup.sh && tail -F /usr/local/apache-tomcat-7.0.63/bin/logs/catalina.out

4 构建镜像
docker build -t hnftomcat .
查看是否成功

[root@bogon tomcat]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hnftomcat           latest  

5 启动容器

docker run -d -p 9080:8080 --name myt9 -v /mydockerfile/tomcat/test:/usr/local/apache-tomcat-7.0.63/webapps/test -v /mydockerfile/tomcat/tomcatlogs/:/usr/local/apache-tomcat-7.0.63/logs --privileged=true hnftomcat

查看是否启动成功
[root@bogon tomcat]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
d7e0201305d8        hnftomcat           "/bin/sh -c '/usr/lo…"   11 minutes ago      Up 11 minutes       0.0.0.0:9080->8080/tcp   myt9

6 访问容器端口为9080

3.2 构建mysql容器

1 下载镜像

docker pull mysql:5.6

2 启动容器

docker run -p 3306:3306 --name mysql -v /mydockerfile/mysql/conf:/etc/mysql/conf.d -v /mydockerfile/mysql/logs:/logs -v /mydockerfile/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

命令说明

-p 12345:3306:将主机的12345端口映射到docker容器的3306端口。
--name mysql:运行服务名字
-v /zzyyuse/mysql/conf:/etc/mysql/conf.d :将主机/zzyyuse/mysql录下的conf/my.cnf 挂载到容器的 /etc/mysql/conf.d
-v /zzyyuse/mysql/logs:/logs:将主机/zzyyuse/mysql目录下的 logs 目录挂载到容器的 /logs。
-v /zzyyuse/mysql/data:/var/lib/mysql :将主机/zzyyuse/mysql目录下的data目录挂载到容器的 /var/lib/mysql 
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
-d mysql:5.6 : 后台程序运行mysql5.6

3 登录进去
先进去容器,然后登录mysql,也可以直接用


docker exec -it 51fb6b3d85a9 mysql -uroot -p123456 这个登录数据库

今天先介绍到这里,谢谢。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表