Docker 一:入門
阿新 • • 發佈:2018-11-16
Docker 可以用來打包應用、依賴以及環境到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上。
docker 兩個關鍵的部分為容器和映象,這兩者的關係可以理解為 OOP 中類和物件的關係,容器作為物件,映象作為類。Docker 映象是用於建立 Docker 容器的模板,容器可以獨立執行一個或一組應用。
參考 這裡
常用命令
從映象倉庫(類似於程式碼倉庫)拉取已有映象:
docker pull training/webapp
當執行容器(建立映象例項)時,使用的映象如果在本地中不存在,docker 就會自動從 docker 映象倉庫中下載,預設是從 Docker Hub 公共映象源下載。
不確定映象是否存在時可使用 docker search imageName
執行示例 web 應用:
docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
瀏覽器訪問 http://localhost:5000/ 可見輸出 :“Hello world” 字樣。
- -d: 讓容器在後臺執行
- -p: 將容器內部使用的網路埠對映到我們使用的主機上
- -P: 容器內部埠隨機對映到主機的高階口。
training/webapp
為映象名python app.py
為容器啟動後執行的命令
docker run -d training/webapp cat app.py
建立容器然後執行 cat app.py
import os from flask import Flask app = Flask(__name__) @app.route('/') def hello(): provider = str(os.environ.get('PROVIDER', 'world')) return 'Hello '+provider+'!' if __name__ == '__main__': # Bind to PORT if defined, otherwise default to 5000. port = int(os.environ.get('PORT', 5000)) app.run(host='0.0.0.0', port=port)
列出映象列表:
docker images
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
frolvlad/alpine-oraclejdk8 slim b56494ff6c5c 2 months ago 162MB
training/webapp latest 6fae60ef3446 3 years ago 349MB
檢視正在執行的容器:
docker ps
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5efd960f44ee training/webapp "python app.py" 10 minutes ago Up 10 minutes 0.0.0.0:5000->5000/tcp loving_jackson
docker port 5efd960f44ee
可快捷檢視指定 id 容器的埠對映情況
$ docker port 5efd960f44ee
5000/tcp -> 0.0.0.0:5000
檢視 WEB 應用程式日誌
docker logs 5efd960f44ee
$ docker logs 5efd960f44ee
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
172.17.0.1 - - [14/Nov/2018 07:14:03] "GET / HTTP/1.1" 200 -
172.17.0.1 - - [14/Nov/2018 07:14:03] "GET /favicon.ico HTTP/1.1" 404 -
檢視容器中的程序
docker top 5efd960f44ee
$ docker top 5efd960f44ee
PID USER TIME COMMAND
10269 root 0:00 python app.py
檢視容器資訊
返回容器當前資訊的 json 格式資料
$ docker inspect 5efd960f44ee
停止/重啟 容器
docker stop 5efd960f44ee
docker start 5efd960f44ee
刪除容器
docker rm 5efd960f44ee3
移除前需要先將容器停止。
構建映象
構建映象需要藉助 DockerFile 檔案:
FROM frolvlad/alpine-oraclejdk8:slim
COPY test.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
建立後 DockerFile 後就可以建立映象了:
docker build -t test-service:0.0.1 .
- -t :指定要建立的目標映象名
- . :Dockerfile 檔案所在目錄,可以指定Dockerfile 的絕對路徑