[Docker]build ntp server in Docker
因為工作的關係, 在將公司的一些服務Docker
化.
今天做的是校時用的NTP Server
.
首先是上去Docker Hub
找有關NTP
的Image
.
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
上, 大家可以參考.