Dockerfile的基本使用

87 阅读2分钟

Dockerfile的使用

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明
Dockerfile中的指令:
    FROM:指定最基础镜像,Dockerfile顶端必须要有
    RUN:在容器中执行命令的指令(run执行的命令必须FROM指定的最基础容器中能够运行的指令),执行的结果保存在容器中
    ADD:添加文件到镜像,添加的文件可以自动解压但是只支持tar解压,且支持在线下载文件,但下载文件不支持解压
    COPY:复制文件到镜像
    EXPOSE:暴露端口
    WORKDIR:指定工作的目录
    CMD:容器启动时执行的命令
    ARG:docker中定义变量的指令
    ONBUILD:创建镜像时不执行,但是以此作为基础镜像时执行
    VOLUME: 定义数据卷也就是映射主机目录
    
    
构建镜像的命令:docker build -t [镜像名称:tag名] [镜像文件路径]
​
镜像文件名字都是Dockerfile,在生成镜像时会将Dockerfile所在文件夹下的所有文件全部拉进新生成的镜像中。
​
例:
FROM python:3.6
ADD linux.tar.gz /opt
RUN pip install django
WORKDIR /opt/linux
EXPOSE 8000
CMD python manage.py runserver 0.0.0.0:8000

案例:自定义镜像构建nginx+django

[root@localhost ~]# mkdir python
[root@localhost ~]# vim python/Dockerfile
FROM python:3.6
ADD linux.tar.gz /opt
RUN pip install django
WORKDIR /opt/linux
EXPOSE 8000
CMD python manage.py runserver 0.0.0.0:8000
​
[root@localhost python]# docker build -t django:v1 .   # 使用自定Dockerfile生成镜像
[root@localhost python]# docker run -d --name django --network lulu django:v1 [root@localhost ~]# mkdir nginx
[root@localhost ~]# vim /nginx/default.conf
server {
    server_name _;
    listen 80;
    location / {
        proxy_pass http://django;
    }
}
[root@localhost ~]# vim nginx/Dockerfile
FROM nginx
ADD default.conf /etc/nginx/conf.d/
EXPOSE 80
CMD nginx -g 'daemon off;'[root@localhost nginx]# docker build -t nginx:v1 .
[root@localhost nginx]# docker -d --name nginxv1 --network lulu -P nginx:v1

容器数据卷

将运用与运行的环境打包形成容器运行, Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来, 那么当容器删除后,数据自然也就没有了。 为了能保存数据在Docker中我们使用卷。|
卷就是目录或文件,通过挂载目录或文件一样可以使的容器之间实现数据共享。
​
# 使用容器数据卷方式一:
docker run中的-v参数
​