基本命令
[TOC]
FROM
指定基础镜像,必须为第一条指令
FROM <\image>
RUN
运行指定的命令
1)RUN < \command >
2)RUN ["executable","param1", "param2" ]
两种写法输出hello 对比
RUN /bin/bash -c 'source $HOME/.bashrc; echo $HOME'
RUN ["/bin/bash", "-c", "echo hello"]
CMD
1)CMD ["executable","param1","param2"]
2)CMD ["param1","param2"]
3)CMD command param1 param2
CMD [ "sh", "-c", "echo $HOME" ]
CMD [ "echo", "$HOME" ]
CMD echo $HOME
必须为 " " 而不是单引号,因为解析的是一个JSON格式
RUN是在容器构建过程中的命令
CMD是在容器启动时执行的命令
LABEL
指定镜像标签
LABEL <key>=<value> <key>=<value> <key>=<value> ...
MAINTAINER
指定作者
MAINTANER <name>
EXPOSE
暴露容器运行时的监听端口给外部
ENV
设定环境变量
1)ENV <key> <value> #只能设置一个
2)ENV <key>=<value>... #可以设置多个
ADD
把文件复制到镜像中
ADD <src> <dest>
src为文件或者url
dest 为路径(绝对路径或者相对路径)
ADD test django\
ADD http://example.com/
COPY
把文件复制到镜像中
但是只能复制本地文件
ENTRYPOINT
启动时的默认命令
只能写一条,容器启动时运行
1)ENTRYPOINT ["executable", "param1", "param2"]
2)ENTRYPOINT command param1 param2
VOLUME
可以进行挂载,将本地文件夹或者其他容器中的文件挂到容器中
VOLUME ["/data"]
USER
设置启动容器的用户
1)USER daemo #用户
2)USER UID #UID
WORKDIR
工作目录 相当于cd
WORKDIR /PATH/TO/WORKDIR
指定目录如果不存在,则会创建
如
WORKDIR /a
WORKDIR b
WORKDIR c
pwd执行的结果是/a/b/c
ARG
ONBUILD
STOPSIGNAL
HEALTHCHECK
项目编写需要注意一些东西
一共有两种方法去部署django项目
1.使用nginx+uwsgi+django+docker+Supervisord 其中Supervisord 进程控制管理器
原因 因为Docker部署需要遵守一个规则,就是一个容器中只能有一个进程,比如这里我们使用uwsgi+nginx 就会有双线程运作
这样就会部署不成功。因此我们要使用SuperVisord 进程控制管理,将uwsgi和nginx的进程放在这个里面 用它来管理,这样就只有一个进程了。 小项目部署
2.分离部署。为了遵守运行的规则,因此我们可以将uwsgi部署在一个容器中,nginx部署在另一个容器中。并且使用--link来进行连接。