第一个问题什么是dockerfile?
pycorrector是一个文本纠错的包,它的dockerfile是这么写的
FROM centos:7
MAINTAINER XuMing "xuming624@qq.com"
RUN yum -y install python36
RUN yum -y install git boost-devel boost-test boost zlib bzip2 xz cmake make
RUN yum -y install gcc-c++
RUN yum -y install python36-devel
# install kenlm
RUN pip3 install https://github.com/kpu/kenlm/archive/master.zip
# clone repo
#RUN git clone --depth=1 https://github.com/shibing624/pycorrector.git
#WORKDIR /home/work/pycorrector
# install requirements.txt
RUN pip3 install jieba pypinyin numpy six -i https://pypi.tuna.tsinghua.edu.cn/simple
# install pycorrector by pip3
RUN pip3 install pycorrector -i https://pypi.tuna.tsinghua.edu.cn/simple
# support chinese with utf-8
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV LC_ALL zh_CN.UTF-8
CMD /bin/bash
这里我们具体讲一下这里的命令,FROM
说明我们构建的镜像的基础镜像是哪种环境,这里我们的基础镜像是centos:7。RUN
用于执行后面跟着的命令行命令,每执行一次命令就会在docker上新建一层。ENV
设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。CMD
类似于 RUN
指令,用于运行程序,但二者运行的时间点不同:CMD
在docker run
时运行,RUN
是在 docker build
时运行。**注意:**如果 Dockerfile 中如果存在多个CMD
指令,仅最后一个生效。
第二个问题我们该如何构建一个镜像?
我们cd到dockerfile的同级目录下,我们执行docker build -t second:v1.0 .
,注意那个.
不要忘记,这里second为镜像名字,v1.0为版本号。好了一个镜像我们就构建完成了。
第三个问题我们该如何创建一个容器?
以pycorrector为例,docker run -it -v ~/.pycorrector:/root/.pycorrector shibing624/pycorrector:0.0.2
,这里我们详细的介绍一下docker run
的用法:
docker run -i
以交互的方式运行docker容器,通常与-t
同时使用
docker run -t
为容器重新分配一个伪输入终端,通常与-i
同时使用
docker run -v
磁盘挂载,docker run -v ~/.pycorrector:/root/.pycorrector
,将宿主机的~/.pycorrector
挂载到容器的/root/.pycorrector
上,shibing624/pycorrector:0.0.2
是镜像名称,如果本地上没有这个镜像,会从docker-hub上拉取一个镜像创建该容器。因为dockerfile
有一句命令CMD /bin/bash
,我们会使用/bin/bash
执行交互式界面。
执行完命令,我们就进入到容器之中。
我们可以使用exit
命令退出该容器。
如果该容器仍然在运行中,我们该怎么进入呢?运行docker ps -a
我们找到容器的ID,运行docker exec -it 62481c087e0f bash
,我们就进入到容器之中了。
第四个问题我们该如何使用容器?
以pycorrector为例,我们如何使用镜像