建置一個可輸入參數的docker image,只需要有dockerfile和另一隻shell,就能決定在container執行前,輸入你所要的參數。
Dockerfile:
以下dockerfile透過ubuntu/ping的image,將ping.sh複製到container裡面,並且提供執行的權限,最後再經由ENTRYPOINT
,決定執行container要呼叫的shell。
1 | FROM ubuntu/ping |
ping.sh:
如果有參數才執行ping
,否則將返回一個提示文字。
1 |
|
Build a image
透過docker build
就能建置一個image,最主要功用是將配置好的image,再透過dockerfile來加工成新的image。
1 | docker build --no-cache -t sparrow/run-ping . |
Run image
執行剛建置好的docker image。
1 | docker run -it sparrow/run-ping www.google.com.tw |
如果你不想透過剛剛的ENTRYPOINT,那你可以在執行docker run
的時候,加入--entrypoint
去指定。
1 | docker run -it --entrypoint /bin/sh sparrow/run-ping |
Push docker hub
只要在docker hub建立好repository,接著就可以執行docker push
,然後在你的repository就可以看到。
1 | docker push sparrow/run-ping |
Mac OSX
如果你剛好開啟一個port要對外,此時你又是透過osx的系統,使用virutalbox來開啟docker,這時你就必須使用docker-machine ip default
來取得真實的ip,例如拿到192.168.99.100,然後你的開啟4000port,真實port和ip就會是192.168.99.100:4000。
1 | docker-machine ip default |