Day 27 上传自己的 Image 到 Dockerhub

藉着 Day 14 建一个 Node.js 容器 所建立的基底,来制作一个 Image 并上传到 Docker Hub 吧。

由 dockerfile 生成映像档和容器

  1. 撰写 Dockerfile
FROM node:12.19
WORKDIR /app
COPY ./time.js .
  1. 执行 docker build . 建立映像
    build 後方的 "空一格 + ." 请别忘记了
#Step 1/3 : FROM node:12.19
# ---> 82c222f66a6c
#Step 2/3 : WORKDIR /app
# ---> Running in f480ee3e2d7f
#Removing intermediate container f480ee3e2d7f
# ---> 417bc3df1095
#Step 3/3 : COPY ./time.js .
# ---> 1295ab42cf68
# 获得映像档 ID Successfully built 1295ab42cf68
  1. 从映像档产生新容器
    docker run -ti 1295ab42cf68 /bin/bash
  2. 进入容器,执行 node time.js ,你就会看见时间每秒不停的印出
Mon Sep 13 2021 03:47:45 GMT+0000 (Coordinated Universal Time)
Mon Sep 13 2021 03:47:46 GMT+0000 (Coordinated Universal Time)

上传到 Docker Hub

  1. 先上 Docker Hub 官网注册一个帐号,并完成 Email 验证
    docker-repo1
  2. 接着如同 Github 一般,建立一个 Repository
    docker-repo2
    docker-repo3
  3. 输入 docker images 检查你的映像档清单
    你会发觉你新建立的映像档其 Repository 名称为 "none",这需要修改成跟你方才建立的 Repo 一样。例如 andy/nodejs12-custom
    指令为:
# before
REPOSITORY                        TAG           IMAGE ID       CREATED          SIZE
<none>                            <none>        1295ab42cf68   33 minutes ago   918MB

# after
REPOSITORY                        TAG           IMAGE ID       CREATED          SIZE
andy/nodejs12-custom              <none>        1295ab42cf68   33 minutes ago   918MB
  1. 使用 docker login 完成登入
  2. 将你的 Repo 推上 docker hub。指令为:docker push <远端 docker repo 名称>
    docker-repo4

注意事项

1. Access to outside of context in Dockerfile

预设情况下,Dockerfile 是不允许存取 dockerfile 外层的资料夹内容。这里的外层,是指 dockerfile 的档案所在当作相对路径起算点。换言之,dockerfile 放在专案的根目录下,方能确保存取到全部内容

2. 产生的容器内,未含文本工具,如何检查档案内容?

可以自行安装文本工具即可,这边提供简化版的 vim 工具 - vi 的安装方式:

# 进入容器
docker exec -it <container ID> bash 
# 获取套件清单
apt-get update
# 开始安装
apt-get install vim-tiny

3. 推到远端 Repo 时出现 denied: requested access to the resource is denied

很高机会是你的登入状态有问题(或是完全没有登入),所以请执行 docker login 後,直到看见 Login Succeeded 字样出现在命令列上

Reference

  1. Dockerfile 中的 COPY 与 ADD 命令
  2. Access to outside of context in Dockerfile
  3. 【Docker】在容器中安装使用Vim及Vim常用技巧
  4. 《Docker —— 从入门到实践­》正体中文版 - 映像档建立

<<:  Day 28 -资料库应用小程序 会员新增删除(内涵程序码)

>>:  # Day27--我是谁?我在哪?终於离开Vim了

Day-27 游戏主机全员到齐、一同聚集於客厅

到昨天为止、已将序文中的列表包含全部主机的项目都写完一轮了、今天要来做的、就是来把主机全部接到电视上...

JavaScript Day26 - Async、Await

ES7:Async、Await async:async 写在函式前面,表示函式是非同步的,回传值是 ...

用React刻自己的投资Dashboard Day20 - 首页功能切板

tags: 2021铁人赛 React 先从mobile版型的页面来看,可以分为几个部份,如下图: ...

Vue 如何在 LocalHost 开发环境时使用 HTTPS

如果你有 Localhost 开发环境需要以 HTTPS 浏览时,可以参考以下方法: 方法一:vue...

DAY8 MongoDB 批次操作(bulk wirte) 与 Operators

DAY8 MongoDB 批次操作(bulk wirte) 与 Operators bulk wri...