docker 数据卷、自定义镜像操作演示分享(第二期)
数据卷
1.1、背景
前面有个docker go web demo应用示例,每次为了部署go_web_demo工程, 需要将使用到的cp的命令将宿主主机内的go_web_demo目录下的代码文件(一般是编译后的二进制执行文件)复制到容器内部。 数据卷:将宿主主机的一个目录映射到容器的一个目录中。 可以在宿主主机中操作目录中的内容,那么容器内部映射的文件,也会跟着一起改变。 |
1.2、操作
创建数据卷
# 创建数据卷 docker volume create 数据卷名称 # 创建数据卷之后,默认回存放在一个目录下 /var/lib/docker/volumes/数据卷名称/_data |
查看数据卷详细信息
docker volume inspect 数据卷名称 |
查看全部数据卷
docker volume ls |
删除数据卷
docker volume rm 数据卷名称 |
1.3、应用
# 当你映射数据卷时,如果数据卷不存在,docker会自动创建。会将容器内部自带的文件,存储在默认的存放路径中 docker run -v 数据卷名称:容器内部的路径 镜像ID docker run -d -p 8080:8080 -v volume_tomcat:/usr/local/tomcat/webapps ef6a7c98d192 # 直接指定一个路径作为数据卷的存放位置。这个路径下是空的 docker run -v 路径:容器内部的路径 镜像ID docker run -d -p 8080:8080 -v /opt/volume:/usr/local/tomcat/webapps ef6a7c98d192 |
docker 自定义镜像
2.1、背景
中央仓库上的镜像,也是Docker的用户自己上传上去的 |
2.2、Dockerfile 文件介绍
#Dockerfile文件常用的内容 from:指定当前自定义镜像依赖的环境 copy:将相对路径下的内容复制到自定义镜像中 workdir:声明镜像的默认工作目录 cmd:需要执行的命令(在workdir下执行,cmd可以写多个,只以最后一个为准) |
2.3、自定义镜像示例:docker go_web_demo 镜像
项目工程代码:go_web_demo
Dockerfile文件:
FROM golang:alpine AS builder # 为我们的镜像设置必要的环境变量 ENV GO111MODULE=on \ CGO_ENABLED=0 \ GOOS=linux \ GOARCH=amd64 # 移动到工作目录:/build WORKDIR /build # 将代码复制到容器中 COPY . . # 将我们的代码编译成二进制可执行文件 app RUN go build -o app . ################### # 接下来创建一个小镜像 ################### FROM scratch # 从builder镜像中把/dist/app 拷贝到当前目录 COPY --from=builder /build/app / # 需要运行的命令 ENTRYPOINT ["/app"] |
制作镜像
1、在项目目录下,执行下面的命令创建镜像,并指定镜像名称为go_web_app
docker build -t 镜像名称:[tag] . docker build -t go_web_app . |
2、运行镜像
docker run -d -p 8088:8088 镜像ID |