登录后台

页面导航

本文编写于 369 天前,最后修改于 369 天前,其中某些信息可能已经过时。

Dockerfile介绍

dockerfile是一系列命令和参数组成的YML文件,这些参数可以给予Docker镜像创建一个新的Docker镜像

Dockerfile基本语法

  • FROM:基础镜像
  • RUN:执行Bash命令
  • ADD:将文件或者目录复制到镜像中(压缩包,会自动解压)
  • COPY:将文件或者目录复制到镜像中(压缩包,不会自动解压)
  • WORKDIR:切换目录,类似CD命令
  • EXPOSE:对外暴露端口是什么(往往用docker -p就行)
  • ENV:设定环境变量
  • ENTRYPOINT:容器启动后执行的命令(必须执行)
  • CMD:设定容器默认启动的命令(例如:docker run centos /usr/sbin/sshd -D中最后的/usr/sbin/sshd -D可以直接写到dockerfile中)

Dockerfile案例一:构建一个可道云

创建dockerfile

cd /docker/kedaoyun
vim dockerfile  #创建可道云dockerfile
FROM centos:7
RUN yum install wget -y && \
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && \
yum install httpd php -y
ADD kodbox.1.09.tar.gz /var/www/html/ #ADD不支持自动解压ZIP压缩包,必须手动压缩成tar包,ADD可自动解压tar包
WORKDIR /var/www/html
RUN chmod -R 777 ./
ADD init.sh /init.sh
EXPOSE 80
CMD ["/bin/bash","/init.sh"]

创建脚本,启动httpd服务器,并且让容器进程不中断

vim init.sh
#!/usr/bin/bash
/usr/sbin/httpd #启动httpd
tail -f /dev/null #让容器进程不中断

创建镜像,并启动容器

docker build -t kedaoyun:v1 .
docker run -d -P kedaoyun:v1
[root@localhost kedaoyun]# docker ps
CONTAINER ID        IMAGE                 COMMAND                CREATED             STATUS              PORTS                    NAMES
09832b98a4c0        kedaoyun:v1           "/bin/bash /init.sh"   9 minutes ago       Up 9 minutes        0.0.0.0:32774->80/tcp    musing_jang
此时通过访问:宿主机ip:32774 即可访问可道云