用指令建立容器
取得合適的映像檔(Image)之後,下一步就是建立容器,指令就是docker run
建立者要考慮使用情況,來調整docker run
指令,以下列出常用選項:
--env, -e
用來傳入環境變數,例如 docker run -e "pyfile=main2.py" Python:2.7
-v
設定data volume,可先建立docker volume,再設定docker volume與容器資料夾的對應,例如 docker run -v volume_nfs:/nfs my_app
。也可以直接設定主機資料夾與容器資料夾的對應,例如 docker run -v /host/nfs:/nfs my_app
-d
讓容器在背景執行
--net=[Mode]
設定容器網路,例如 docker run --net=host nginx
,常用的Mode包括host, none, bridge,不指定的話預設是bridge
--name
設定容器名稱,例如 docker run --name my_python python:2.7
--restart=[policy]
設定重啟機制,例如 docker run --restart=on-failure:10 cassandra
可允許在錯誤的情況下重啟容器,最多重啟5次。例如 docker run --restart=always redis
則只要容器一被停止,就立即嘗試重啟,適合服務不可中斷的容器。若沒指定,則預設是--restart=none
,也就是若容器停止,則需人為手動啟動。
-p
(小寫p) 代表port mapping,設定 主機port 對應到 容器的哪個port,例如 docker run -p 8080:80 python_app
,代表container port 80 = host port 8080
-P
(大寫P) 代表隨機取得一個本機未使用的port,來對應容器的port,前提是在Dockerfile要寫expose port
更多docker run
的選項可參考官方文件
在建立容器時,根據使用情境,可加入多個選項,例如 docker run -d -p 8080:80 -v volume_nfs:/nfs -v /etc/localtime:/etc/localtime:ro --name my_redis redis
分析一下這行指令,-d
表示這個容器要在背景執行,-p 8080:80
表示本機的8080 port對應到容器的80 port,-v volume_nfs:/nfs
表示有一個volume_nfs與容器內的/nfs資料夾對應,-v /etc/localtime:/etc/localtime:ro
表示本機的/etc/localtime對應到容器內的(這裡還多加了 :ro
代表容器內的唯讀),--name my_redis
代表容器名稱,最後用來建立容器映像檔是redis
Last updated