前言
用过 docker 的人应该都知道,docker run 会运行本地镜像或者拉取远程镜像并运行。那么如何将自己的镜像发布到远程仓库呢?
构建
首先要做的就是将本地你自己的项目构建成一个 docker 镜像,那么构建镜像的前提就需要有一个配置文件:Dockerfile。这里以一个 svelte 项目为例:
FROM node:14.17.0 AS builder
WORKDIR /opt/web
ENV PATH="./node_modules/.bin:$PATH"
COPY . .
RUN yarn install
RUN yarn build
EXPOSE 3000
ENV HOST=0.0.0.0
CMD ["yarn", "start"]
本质上,svelte 项目就是一个 node 的项目,因此,这个 Dockerfile 的模版和后端 node 服务基本一致。
然后就是运行打包命令:
docker build -t demo(这里是项目的名称,自己设置) . -f Dockerfile
然后需要给自己的应用打上一个 tag
docker tag zhaojun username(你在 docker 上的用户名)/demo(你在 docker 上创建的新的仓库名):tag(自己设置)
登陆
使用 docker login 命令,输入自己的账号和密码
发布
将自己的镜像发布到自己的 docker 仓库
//相关信息与第一步打 tag 时保持一致
docker push username/demo:tag
完成
此时,属于你自己的 docker 镜像就已经发布到 docker hub 上,可以让自己或者别人来下载啦!
踩过的坑
- 错误:
standard_init_linux.go:228: exec user process caused: exec format error
- 解决方法:
在本地打包环境,将 docker 的
experimental属性设置为true,然后在打包时,将命令改成:docker buildx build --platform linux/amd64 -t demo(应用名称) . -f Dockerfile