用指令建立容器

取得合適的映像檔(Image)之後,下一步就是建立容器,指令就是docker run

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

建立者要考慮使用情況,來調整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