基本命令
[TOC]
FROM
指定基礎(chǔ)鏡像锚烦,必須為第一條指令
FROM <\image>
RUN
運(yùn)行指定的命令
1)RUN < \command >
2)RUN ["executable","param1", "param2" ]
兩種寫法輸出hello 對(duì)比
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
必須為 " " 而不是單引號(hào)掸犬,因?yàn)榻馕龅氖且粋€(gè)JSON格式
RUN是在容器構(gòu)建過(guò)程中的命令
CMD是在容器啟動(dòng)時(shí)執(zhí)行的命令
LABEL
指定鏡像標(biāo)簽
LABEL <key>=<value> <key>=<value> <key>=<value> ...
MAINTAINER
指定作者
MAINTANER <name>
EXPOSE
暴露容器運(yùn)行時(shí)的監(jiān)聽端口給外部
ENV
設(shè)定環(huán)境變量
1)ENV <key> <value> #只能設(shè)置一個(gè)
2)ENV <key>=<value>... #可以設(shè)置多個(gè)
ADD
把文件復(fù)制到鏡像中
ADD <src> <dest>
src為文件或者url
dest 為路徑(絕對(duì)路徑或者相對(duì)路徑)
ADD test django\
ADD http://example.com/
COPY
把文件復(fù)制到鏡像中
但是只能復(fù)制本地文件
ENTRYPOINT
啟動(dòng)時(shí)的默認(rèn)命令
只能寫一條,容器啟動(dòng)時(shí)運(yùn)行
1)ENTRYPOINT ["executable", "param1", "param2"]
2)ENTRYPOINT command param1 param2
VOLUME
可以進(jìn)行掛載通殃,將本地文件夾或者其他容器中的文件掛到容器中
VOLUME ["/data"]
USER
設(shè)置啟動(dòng)容器的用戶
1)USER daemo #用戶
2)USER UID #UID
WORKDIR
工作目錄 相當(dāng)于cd
WORKDIR /PATH/TO/WORKDIR
指定目錄如果不存在度液,則會(huì)創(chuàng)建
如
WORKDIR /a
WORKDIR b
WORKDIR c
pwd執(zhí)行的結(jié)果是/a/b/c
ARG
ONBUILD
STOPSIGNAL
HEALTHCHECK
項(xiàng)目編寫需要注意一些東西
一共有兩種方法去部署django項(xiàng)目
1.使用nginx+uwsgi+django+docker+Supervisord 其中Supervisord 進(jìn)程控制管理器
原因 因?yàn)镈ocker部署需要遵守一個(gè)規(guī)則,就是一個(gè)容器中只能有一個(gè)進(jìn)程画舌,比如這里我們使用uwsgi+nginx 就會(huì)有雙線程運(yùn)作
這樣就會(huì)部署不成功堕担。因此我們要使用SuperVisord 進(jìn)程控制管理,將uwsgi和nginx的進(jìn)程放在這個(gè)里面 用它來(lái)管理曲聂,這樣就只有一個(gè)進(jìn)程了霹购。 小項(xiàng)目部署
2.分離部署。為了遵守運(yùn)行的規(guī)則朋腋,因此我們可以將uwsgi部署在一個(gè)容器中齐疙,nginx部署在另一個(gè)容器中。并且使用--link來(lái)進(jìn)行連接乍丈。