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 |