一、Dockerfile是什么?
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
二、构建镜像
构建镜像有两种方法:
使用docker commit命令
使用docker build 命令和Dockerfile文件
方法2的构建步骤:
1)将需要构建的文件的压缩包或者文件本身,放在一个空文件夹下。
2)设置Dockerfile文件
- 在步骤1中的文件夹下创建Dockerfile文件
- 编辑Dockerfile文件
- 在文件中添加内容
#指定基础镜像,基础镜像只能指定一个
FROM ******
#MAINTAINER:提供镜像作者联系方式等信息
#RUN :每条RUN指令都会创建一个新的镜像层,如果指令执行成功,就会将镜像层提交,之后继续执行Dockerfile中的下一个指令
#EXPOSE:指定容器的要使用的端口
#ENTRYPOINT: 表示运行指令,如果不在Dockerfile中写的话,在命令框中写入。
备注:Dockerfile文件名一般默认写成Dockerfile,但并不要求一定得为Dockerfile,也不一定必须在需要构建的压缩文件下,例如接下来会讲的,使用-f指定dockerfile的位置以及名字:-f ../Dockerfile.php
3)执行构建
1.cd 进入步骤1中的文件夹,使用该文件夹中的Dockerfile文件进行构建。
2.sudo docker build –t **** ./ (其中****为新构建的镜像的命名)
例如:
$ sudo docker build -t test/bert-step:v1 ./
仓库名:版本号。仓库名经常以两段式出现(路径形式)
若Dockerfile的名字不为Dockerfile以及不在该目录文件下,则使用-f 指定要使用的Dockerfile路径和名称,如果就在dockerfile所在的文件夹则无需指定-f。
$ sudo docker build -f ../Dockerfile.php -t test/bert-step:v1 ./
build后:
这样,就表示构建成功,否则构建失败。
4)查看构建结果
docker images
docker history ****
docker inspect ****
5)启动容器
docker run –d name cat1 –p 8080:8080 ****
docker ps –a
docker logs cat1
我通常使用的运行命令:
sudo docker run -it --rm -v $(pwd):/workspace --test/nlp:v1.0.0
有些时候需要确保构建过程不会使用缓存。可以使用docker build 的 --no-cache标志。