what什么是docker
Docker是一个开源的软件容器平台,可以让开发人员将应用程序与其所需的环境(如操作系统和依赖项)打包在一起,并将它们部署到任何地方。
why为什么要用docker
部署软件的时候有个很重要的东西就是搭建环境,程序所依赖的东西都要安装好,而docker能很好的解决这个痛点。
用docker就是为了给运维省事了,开发出来的程序,封为docker之后,部署运行就很方便。
how怎么使用docker
接下来我将以我自己一个简单的服务器封装为docker容器并运行的列子,给各位看一下。
dockerfile
# centos镜像名 latest版本号
FROM centos:7
# 工作目录 /
ADD tts_server.tar.gz /root
WORKDIR /root/tts_server/src
# RUN 加载依赖包 && 再加一条命令 \ 连接符 最后一条不加
RUN yum -y install curl
# ENTRYPOINT 程序卡死 前台程序 ["exe", "param"]
#ENTRYPOINT ["./tts-server","../config/"]
# 开放的端口号
EXPOSE 8080
CMD ["./tts-server","../config/"]
ENV LANG zh_CN.UTF-8
#执行程序,配置文件目录
工作目录这里有细节,ADD这行命令,tts_server.tar.gz将这个压缩包添加到/root中去,并且会自动解压这个压缩包,而这个压缩包也要和dockerfile这个文件在同一级目录下,这样在docker build XXX .(命令的最后一行有个点)的时候能找的要ADD的文件。WORKDIR这行命令也是压缩包解压后的要执行CMD那一级的目录,比如说我的目录是这样的
tts-server在src里,那我的路径就得到/src不能只是/root/tts_server。
RUN到这里,操作系统已经规定好了,需要安装程序需要的环境。
CMD ["./tts-server","../config/"],./tts-server就是要执行的程序,../config
是我程序需要输入这个配置路径,我把它放在了镜像外面,等到启动镜像的时候直接把路径给它映射一下。这里就是说,一般程序还是需要更改一些config的,所以需要将一些文件放在镜像外面。因为你要更改配置文件的话,如果都封装在镜像里,那么还要重新生成镜像,不如放在外面映射更方便使用。
docker命令
构建镜像:
docker build -t tts_http_server:1.2.0 -f /home/http__server/Dockerfile .
启动镜像:
docker run -itd -p 8080:8080 -v /home/http__server/config/:/root/tts_server/config/ -v /home/http__server/log/:/root/tts_server/log 377e985cb855
-d为后台启动,会在后台一直保持运行状态。
-p是映射端口,-v是映射路径,格式-v<宿主机目录>:<容器目录>。最后加上镜像id就成功启动辣。