目錄
1、什麼是容器
容器鏡像是一個軟件的輕量級獨立可執行軟件包,包含運行它所需的一切:代碼,運行時,系統工具,系統庫,設置。不管環境如何,集裝箱化軟件都可以運行相同的Linux和Windows應用程序。容器將軟件與其周圍環境隔離開來,例如開發環境和生產環境之間的差異,並有助於減少在同一基礎架構上運行不同軟件的團隊之間的衝突。
1.輕量級
在一臺機器上運行的Docker容器共享該機器的操作系統內核; 他們立即開始並使用更少的計算和內存。圖像由文件系統層構建並共享公用文件。這最大限度地減少了磁盤使用量,圖像下載速度更快。
2.標準
Docker容器基於開放標準,可在所有主要Linux發行版,Microsoft Windows以及任何基礎架構(包括虛擬機,裸機和雲中)上運行。
3.安全
Docker容器將應用程序彼此隔離並從底層基礎架構中分離出來。Docker提供了最強大的默認隔離功能,可以將應用程序問題限制在一個容器中,而不是整個機器上。
2,演示前提
有鏡像才能創建容器,這個是根本要求(下載centos鏡像來演示)
docker pull centos
3,創建並啓動容器
3.1語法
docker run [options] images [command][args]
3.2options說明
有些是一個減號,有些是兩個減號
--name="容器新名字": 爲容器指定一個名稱;
-d: 後臺運行容器,並返回容器ID,也即啓動守護式容器;
-i:以交互模式運行容器,通常與 -t 同時使用;
-t:爲容器重新分配一個僞輸入終端,通常與 -i 同時使用;
-P: 隨機端口映射;
-p: 指定端口映射,有以下四種格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
3.3交互式運行
#使用鏡像centos:latest以交互模式啓動一個容器,在容器內執行/bin/bash命令。
docker run -it centos /bin/bash
4,列出當前所有正在運行的容器
4.1語法
docker ps [options]
4.2 options語法說明
-a :列出當前所有正在運行的容器+歷史上運行過的
-l :顯示最近創建的容器。
-n:顯示最近n個創建的容器。
-q :靜默模式,只顯示容器編號。
--no-trunc :不截斷輸出。
5,退出容器
1,exit:停止容器並退出
2,ctrl+P+Q 容器不停止退出(僅僅是退出終端,但還在運行着)
6,啓動容器
docker start 容器ID或容器名稱
7,重啓容器
docker restart 容器ID或容器名稱
8,停止容器
docker stop 容器ID或容器名稱
9,強制停止容器
docker kill 容器ID或容器名稱
10,刪除已停止的容器
#單個刪除
docker rm 容器ID
#多個刪除
docker rm -f $(docker ps -aq)
docker ps -aq xargs docker rm
11,其它重點內容
1,啓用守護式容器
#使用鏡像centos:latest以後臺模式啓動一個容器
docker run -d centos
問題:docker ps -a 進行查看, 會發現容器已經退出
很重要的要說明的一點: Docker容器後臺運行,就必須有一個前臺進程.
容器運行的命令如果不是那些一直掛起的命令(比如運行top,tail),就是會自動退出的。
這個是docker的機制問題,比如你的web容器,我們以nginx爲例,正常情況下,我們配置啓動服務只需要啓動是應的service即可。例如 service nginx start
但是,這樣做,nginx爲後臺進程模式運行,就導致docker前臺沒有運行的應用,
這樣的容器後臺啓動後,會立即自殺因爲他覺得他沒事可做了.
所以,最佳的解決方案是,將你要運行的程序以前臺進程的形式運行
2,查看容器日誌
如果是後臺運行的程序,那麼如何查看運行的日誌呢?
1,先運行一個程序 在後臺被隔兩秒輸出[hello laolei]
docker run -d centos /bin/sh -c "while true;do echo hello laolei;sleep 2;done"
2,查看日誌
docker logs -tf --tail 10 容器ID
* -t 是加入時間戳
* -f 跟隨最新的日誌打印
* --tail 數字 顯示最後多少條
3,查看容器運行進程
docker top 容器ID
4,查詢容器內部細節
docker inspect 容器ID
5,進入正在進行的容器並以命令行交互
#方式1
docker exec -it 容器ID /bin/bash
#方式2
docker attach 容器ID
#兩種方式的區別
exec 在容器中打開新的終端(就跟在windows的運行tomcat中的startup.sh一樣) 並且可以啓動新的進程
attch 直接進行容器終端(就跟在windows的cmd運行tomcat一樣),不會啓動新的進程
6,進入容器內拷貝文件到主機
docker cp 容器ID:容器內的路徑 主機目錄