检查已有镜像和容器
docker images
docker container ls
交互式运行centos容器
docker run -it centos
centos 容器中安装vim工具
yum install vim
退出centos交互程序
exit
解决报错
Containers feature is disabled
Enable-WindowsOptionalFeature -Online -FeatureName $("Microsoft-Hyper-V","Containers") -All
React 项目镜像生成
在项目根目录下创建Dockerfile 用如下内容
FROM node as builder
WORKDIR /app
COPY . .
RUN npm run build
FROM node
RUN npm install -g serve
WORKDIR /app
COPY --from=builder /app/build .
CMD ["serve", "-p", "8001", "-s", "."]
运行下面的命令生成镜像
docker image build -t [USERNAME]/[APPNAME] .
通过下面指令运行镜像
docker run -it -p [PROT]:8001 [IMAGENAME]
修改 tag 并 push 到远程库
docker tag hello-app [remote-name]/hello-app
docker push [remote-name]/hello-app:`tag`
- 不填写用户名的话无法将镜像push到dockerhub
- 结尾的
.代表地址
镜像体积优化
通过前面的方法生成的react项目集成antd和hls.js的前端项目镜像体积为921.09mb,查阅文档了解到更换node.js的基础环境可以实现部分体积优化的工作。
基础镜像源的选择
所谓基础镜像源,就是我们在进行构建步骤时,选择的一个基础环境(如上
node:10),通过查看 Dockerhub 上有关 Node.js 的基础环境镜像时,我们会发现有多个版本,虽然都是 Node.js 相关基础镜像,但不同版本,他们除了 Node.js 版本不同外,在内部集成的环境也不一样,例如带有 alpine 的版本,相当于是一个比较精巧的 Linux 系统镜像,在此版本运行的容器中会发现不存在我们常规系统中所附带的工具,比如 bash、curl 等,由此来缩小体积。根据项目实际需要,当我把基础镜像换为 alpine 版本后,再次进行构建,此时镜像体积已大幅度减小,从 1.3GB 直降为 500+MB,体积优化效果明显,所以当你发现自己构建的镜像体积过大时,可以考虑从更换基础镜像源的方式来着手,看看是否使用了过于臃肿的镜像源。
通过将基础镜像替换为alpine 版本后,打包生成的镜像体积成功将为94.62mb 具体dockerfile 的编写如下:
# 设置第一步骤产生的镜像,并命名为builder
FROM node:10-alpine as builder
WORKDIR /app
COPY . .
RUN npm run build
# 进行第二步骤构建
FROM node:10-alpine
RUN npm install -g serve
WORKDIR /app
COPY --from=builder /app/build .
CMD ["serve", "-p", "8001", "-s", "."]