通过buildfile创建image

docker build指令

一般采用docker build指令,配合dockerfile来生成一个container。

docker build基本语句格式为:

docker build -t [tag名称] -f [dockerfile文件] [context路径]
  • tag设置了docker的名称和tag,采用name:tag格式,比如-t shykes/myapp:1.0.2。这里采用1.0.2版本号作为tag。如果不指定tag, 则默认为latest。可以采用任意的字符串作为tag。而且可以使用多个-t参数,指定多个tag, 比如:
    >docker build -t shykes/myapp:1.0.2 -t shykes/myapp:latest .
  • dockerfile路径就是Dockerfile所在的位置
  • context路径就是docker的工作路径。docker是C/S模式,需要先把context目录下的所有文件先发送给server端,再执行dockerfile里面的指令。因此context目录下尽量不要包含无关文件

具体例子

  1. 创建dockerfile
echo "FROM alpine:latest">>test/Dockerfile
  1. 生成image
docker build --force-rm  -f  test/Dockerfile -t myimage:v0.0.1 ./
  1. 查看image
docker image list
  1. 生成并运行container

image会先生成一个container, 然后再运行它。一共有几种方式

  • 方式一:分步骤执行
1. 手动生成container

docker container create --name mycontainer myimage:v0.0.1

2. 启动container

docker container start mycontainer

方式一的好处是步骤清晰,但缺点是如果你container里面啥都没有,container就直接退出了,不适合测试

  • 方式二:前台执行
docker run --name mycontainer -it myimage:v0.0.1

这种方式启动container后,会让用户在命令行直接和container的shell交互。进入了container的操作系统环境。非常适合开发调试

由于docker run会每次生成一个新的container,为避免浪费,我们下次可以直接启动已经生成的container

docker container start -ai mycontainer
  • 方式三:后台执行
docker run --name mycontainer -dt myimage:v0.0.1

这里-d参数指定后台运行。-t参数分配tty。这是container不立即退出的关键。

如果想运行后台container的shell程序,运行指令:

docker exec -it mycontainer sh
  1. 查看container
docker container list -a
  1. 停止container
docker container stop [container ID]
  1. 删除container
docker container rm [container ID]
  1. 删除image
docker image rm myimage:v0.0.1


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About Me

一位程序员,会弹吉他,喜欢读诗。
有一颗感恩的心,一位美丽的妻子,两个可爱的女儿
mail: geraldlee0825@gmail.com
github: https://github.com/lisuxiaoqi
medium: https://medium.com/@geraldlee0825