Docker镜像构建与跨平台使用(Hexo)

关于Docker Hub事件

小插曲写在前面:最近由于某些原因(有些人犯了点小调皮),导致Docker Hub所有国内镜像全部被监管部门要求停止,玩NAS的小伙伴和一些需要使用相关服务的小伙伴确实有点无辜躺枪了。

不过我们还是要积极响应国家号召,等这段时间过滤掉不良内容后就会继续开放了,目前建议需要国内使用Docker替代源的可以直接去阿里云使用私人镜像服务,通过一些方法可以构建自己的Docker Hub算是临时过渡的一个方案。

点击跳转到阿里云私有仓库

上云就上阿里云!点击这里获取站长专属阿里云优惠!

分享我的第一次构建Docker过程

万物始源,正确的写出Docker构建配置文件,这个根据个人需求,我这里以构建hexo博客为例。我将我的博客配置全部扔到了 Dockerfile 同级目录,此目录为我们构建的根目录。由于我也是刚接触,配置可能写的不是特别标准,本着能跑就行的标准,大佬勿喷。

以下是我的Docker构建配置文件:

Dockerfile

# 从最新的长期支持版Node.js基础镜像开始构建
FROM node:lts

# 设置工作目录
WORKDIR /app

# 安装Hexo
RUN npm install -g hexo-cli

# 将当前目录的所有文件复制到容器的工作目录
COPY . /app

# 安装依赖
RUN npm install

# 暴露4000端口
EXPOSE 4000

# 启动Hexo服务器并在控制台打印服务器运行地址
CMD ["sh", "-c", "hexo server && echo 'Hexo server running at http://localhost:4000'"]

根据配置文件构建镜像:

构建镜像的名字:yejiuluo-blogs

docker build -t yejiuluo-blogs .

构建

然后,运行Docker:

–name 定义了运行的进程名字 start-blogs

-p 运行端口

docker run --name start-blogs --rm -p 4000:4000 -v ${PWD}:/app yejiuluo-blogs:latest

此时根据我们的配置文件以及运行参数,hexo-decker镜像已经成功构建并运行于本地4000端口,如果是服务器可以配合nginx等反代实现域名访问。

运行

封装Docker镜像

首先查看镜像信息

确定要封装的镜像名字

docker images

打包镜像

images.tar 为tar格式的打包压缩后的镜像文件名字

image_name 为源镜像名字

docker save -o images.tar image_name

查看并导出

还原打包镜像

images.tar 同你要还原的镜像名字

docker load -i images.tar

还原镜像

通过以上三步即可将打包的Docker镜像通过网络或者拷贝,带到其他平台使用,不过要注意不同平台的差异化哦,我的这个配置没写太对,从Windows转移到Ubuntu后无法运行,待后期微调。