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目录下尽量不要包含无关文件
具体例子
- 创建dockerfile
echo "FROM alpine:latest">>test/Dockerfile
- 生成image
docker build --force-rm -f test/Dockerfile -t myimage:v0.0.1 ./
- 查看image
docker image list
- 生成并运行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
- 查看container
docker container list -a
- 停止container
docker container stop [container ID]
- 删除container
docker container rm [container ID]
- 删除image
docker image rm myimage:v0.0.1
发表回复