【运维管理】使用 Dockerfile 建构静态网页镜像
使用 Docker 镜像档案提高了部署的可携性,方便交付,或是转移可 HTTP 访问的静态文件到不同主机上
新建一个 Dockerfile
其实 Dockerfile 就是一个文字档案,主要描述镜像需要具备的服务。我们这里使用 nginx 来做网页伺服器,让 HTTP 协议能够访问镜像中的静态文件。
首先撰写一个 Dockerfile 如下:
# 使用 nginx 来提供静态文件内容
FROM nginx:alpine
# 切换静态文件所在的目录位置
WORKDIR /usr/share/nginx/html
# 移除原来默认的静态文件
RUN rm -rf ./*
# 复制新的静态文件至当下目录位置
COPY /dist .
# 开启端口 80
EXPOSE 80
# 执行 nginx
ENTRYPOINT ["nginx", "-g", "daemon off;"]
构筑镜像档案
有了预先撰写好的 Dockerfile 之后,并且准备好静态文件放到 dist 目录之下。执行 docker build 来构筑镜像档案。
docker build -t webserver .
显示镜像档案
透过 docker image ls 来检视创建好的镜像档案,REPOSITORY 就是构筑时的命名,例如:webserver。
docker image ls
封装镜像档案
透过 docker -save -o 可以将镜像档案封装起来。方便在不同的系统平台上载入境像。
docker save -o webserver.tar webserver
载入镜像档案
在封装好的镜像档位置,透过 docker load -i 可以载入镜像档案。
docker load -i webserver.tar
启动镜像档案
命令 docker container run 可以启动载入 docker 的镜像档。-d 指的是 detached 模式,让容器在背景中执行。-p 则是端口的对应,将容器中的 80 端口对应到目前执行系统中的 8080 端口。
docker container run -d -p 8080:80 webserver
访问容器的内容
如果一切无误的话,现在已经可以使用 curl 访问静态文件的内容。
curl http://localhost:8080
显示启动中的容器
另外,执行 docker ps 可以显示目前执行中的容器,还有容器的 ID。
docker ps
停止启动中的容器
停止容器的方式,则是执行 docker stop 指令后缀加上容器的 ID。
docker stop 27a2337c3c16
删除镜像档案
删除镜像档案的方式也很容易,docker image rm webserver。这里的 webserver 就是 repository 的名称。
docker image rm webserver
如果要一口气删掉 docker 中所有的镜像档案,可以执行命令如下:
docker image rm $(docker image ls -a -q)
不过记得小心慎用啊,各位~😅