Jennifer的Docker筆記本
  • Introduction
  • Docker
    • Docker簡介
    • Docker原理
    • Docker指令大全
  • Docker Image
    • 搜尋公開的映像檔
    • 學習撰寫Dockerfile
    • 映像檔分層概念
  • Docker Container
    • 用指令建立容器
    • 用Compose建立容器
    • 與執行中的容器互動
    • 利用互動後的容器建立映像檔
  • DOCKER REGISTRY
    • 上傳到公有倉庫
    • 上傳到私有倉庫
  • Docker Volume
    • 同步容器資料
  • Docker Network
    • 容器的網路設定
  • Docker Installation
    • 安裝Docker/Portainer on Ubuntu
    • 安裝Nginx on Docker
  • DOCKER UNDERLYING TECHNOLOGY
    • Linux Namespaces
    • Linux CGroup (Control Group)
  • Let's Docker
    • Docker實作營
  • Docker Resources
    • Docker官方網站
    • Docker Doc.
    • Docker Hub
    • Play with Docker
    • peihsinsu的Docker學習筆記
    • 珍妮佛的學習筆記#docker
Powered by GitBook
On this page

Was this helpful?

  1. Docker Container

用指令建立容器

Previous映像檔分層概念Next用Compose建立容器

Last updated 4 years ago

Was this helpful?

取得合適的映像檔(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

官方文件