因為工作的關係, 在將公司的一些服務Docker化.

今天做的是校時用的NTP Server.

首先是上去Docker Hub找有關NTPImage.

https://hub.docker.com/search?q=ntp&type=image

這邊看到的是下載率高, 又有在更新的Cturra/ntp

第一次試著run後發現他時區是用UTC, 但這個Image底層不是用弱弱常用的Ubuntu 或 CentOS.

# cat /etc/issue
Welcome to Alpine Linux 3.12
Kernel \r on an \m (\l)

查了一輪後才知道它安裝軟體是用apk.

第一時間覺得是Android的副檔名(誤)

這樣下來就可以準備Build Image啦.

首先先寫一個dockerfile檔案

dockerfile

FROM cturra/ntp
RUN apk add tzdata
RUN cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime
RUN echo "Asia/Taipei" /etc/timezone
RUN date

寫好之後, 就可以下指令建立自己的image

docker image build -t test/ntp .

沒意外的話他應該會跳出下方資訊:

Sending build context to Docker daemon  2.048kB
Step 1/5 : FROM cturra/ntp
 ---> a13d83a9a5bc
Step 2/5 : RUN apk add tzdata
 ---> Running in a7cb1c788118
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
(1/1) Installing tzdata (2020a-r0)
Executing busybox-1.31.1-r16.trigger
OK: 9 MiB in 17 packages
Removing intermediate container a7cb1c788118
 ---> 41b70cd1c899
Step 3/5 : RUN cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime
 ---> Running in 8ba5745bc1ee
Removing intermediate container 8ba5745bc1ee
 ---> a580d0fc6988
Step 4/5 : RUN echo "Asia/Taipei" /etc/timezone
 ---> Running in ae2cd648703d
Asia/Taipei /etc/timezone
Removing intermediate container ae2cd648703d
 ---> 795470f0f0bd
Step 5/5 : RUN date
 ---> Running in 36fa66c812d0
Sun Sep  6 00:43:41 CST 2020
Removing intermediate container 36fa66c812d0
 ---> 14043710bfed
Successfully built 14043710bfed
Successfully tagged test/ntp:latest

這樣就表示做好了, 接著我們要自己開起來測試看看~

docker run --name ntp --cap-add=SYS_TIME -d -p 123:123/udp test/ntp

然後用docker ps去看狀態

docker ps                                                                                       wei@weizhongweide-MacBook-Air
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                  NAMES
dd7b264245f1        test/ntp            "/bin/sh /opt/startu…"   32 seconds ago      Up 31 seconds (healthy)   0.0.0.0:123->123/udp   ntpd

目前看起來是有在跑的, 最後我們就可以去看一下ntp的時間正不正確.

docker exec -it dd7b date
Sun Sep  6 00:49:28 CST 2020

到這邊就算做好自己專屬的image

後面看是要用docker-compose還是放上K8s都可以~

弱弱這邊有做好一份docker-compose的範例在git hub上, 大家可以參考.

傳送門