Dockerfile
Dockerfile有一行行命令组成,并且支持以#开头的注释行。
一般而言,Dockerfile主体分为四部分:基础镜像信息、维护者信息、镜像操作指令、容器启动指令。
部分指令说明
-
FROM
指定基础镜像。第一条指令必须为FROM。
-
LABEL
为生成的镜像添加元数据信息。
-
EXPOSE
声明镜像内服务监听的端口,只是声明,并不会完成自动映射,可以使用 -p
-
ENV
指定环境变量,可以被RUN命令使用,容器中也会存在。
-
ENTRYPOINT
指定镜像的默认入口命令,该命令会在容器启动时作为根命令执行。
-
VOLUME
创建一个数据卷挂载点。
-
WORKDIR
为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录
-
RUN
每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像层。当命令较长时可以使用\来换行。
-
CMD
CMD指令用来指定启动容器时默认执行的命令。
-
ADD
将本地文件添加到容器中。
-
COPY
COPY与ADD指令功能类似,当使用本地目录为源目录时,推荐使用COPY。
创建镜像
以go语言为例:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello Go")
}
FROM golang:1.9 as builder
RUN mkdir -p /go/src/test
WORKDIR /go/src/test
COPY main.go .
RUN CGO_ENABLED=0 GOOS=linux go build -o app .
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /go/src/test/app .
CMD ["./app"]
docker build -t hello:1 .
docker-compose
相关命令
docker-compose up -d #后台运行
docker-compose down # 关闭
docker-compose top # 列出容器内运行的进程
docker-compose ps # 查看状态
docker-compose restart # 重新启动
# -f 可以指定文件
部分指令
-
build
指定Dockerfile所在文件夹的路径。Compose将会利用它自动构建应用镜像,然后使用这个镜像。
-
container_name
指定容器的名字。
-
depends_on
指定多个服务之间的依赖关系。
-
image
镜像名称
-
ports
暴露端口信息
-
volumes
数据卷挂载设置。
-
restart
指定重启策略:no、always、on-failure
创建
version: "3"
services:
redis:
container_name: "redis"
ports:
- "6379:6379"
image: redis:6.0.8
docker-compose up