Docker 笔记

160 阅读2分钟
检查已有镜像和容器

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项目集成antdhls.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 的编写如下: volumeUsage.png

# 设置第一步骤产生的镜像,并命名为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", "."]