#### **docker run** **//** **新建并啟動容器**
語法:docker run \[選項參數\] 鏡像名稱或鏡像ID \[COMMAND\] \[ARG…\]
參數說明:
- --name=”容器新名字”:為容器指定一個名稱
- -d:后臺運行容器,并返回容器ID,也即啟動守護式容器
- -i:以交互模式運行容器,通常與-t同時使用
- -t:為容器重新分配一個偽輸入終端(類似與Linux中的shell窗口,或者Windows下的CMD窗口),通常與-i同時使用;
- -P:隨機端口映射
- -p:指定端口映射,有以下四種格式
1. ip:hostPort:containerPort
2. ip::containerPort
3. hostPort:containerPort
4. containerPort
需求:使用鏡像centos:latest以交互模式啟動一個容器,在容器內執行/bin/bash命令。

#### **docker ps** **//** **列出當前所有正在運行的容器**
語法:docker ps \[可選參數\]

CONTAINER ID:容器ID
IMAGE:鏡像ID,如果以鏡像名run,則這里會是鏡像名稱
COMMAND:啟動容器時運行的命令,這里的意思是以“/bin/bash”的方式登錄到這個容器
CREATED:容器的創建時間
STATUS:容器狀態
PORTS: 容器的端口信息和使用的連接類型
NAMES:鏡像自動為容器創建的名字
常用參數說明:
- -a:列出當前所有**正在運行的容器**+**歷史上運行過的**
- -l:顯示最近(上一個)創建的容器
- -n 次數:顯示最近n個創建的容器,如:-n 10(顯示上面10次創建的容器信息)
- -q:靜默模式,只顯示容器編號
- --no-trunc:不截斷輸出
#### 退出容器
語法:
- 容器停止退出:exit
- 容器不停止退出:ctrl+p+q
#### docker stop // 停止容器
語法:docker stop 容器ID或容器名
#### **docker start** **// 啟動容器**
語法:docker start 容器ID或容器名
#### **docker restart** **// 重啟容器**
語法:docker restart 容器ID或容器名
#### **docker kill** **// 強制停止容器**
語法:docker kill 容器ID或容器名
docker ps發現有一個容器正在運行

此時,可以通過docker kill centos-test-01來強制停止該容器

此時再查看docker ps發現該容器已停止

#### **docker rm** **// 刪除已停止的容器**
語法:docker rm \[可選參數\] 容器ID或容器名
參數說明:
- -f:表示強制刪除

需求:刪除容器名稱為centos-test-03的容器

此時再通過docker ps -a查看,發現該容器已刪除

##### 一次性刪除多個容器
語法:docker rm -f $(docker ps -qa)
docker ps -a查看已有的容器列表

一次性將容器列表的容器全部刪除,強制執行

此時再查看容器列表,發現為空,表示已經刪除

#### **docker run -d** **// 啟動守護式容器**
語法:docker run -d 鏡像名或鏡像ID

為了避免后臺進程的自動掛起而引起的進程自動退出,docker容器在后臺運行,就必須有一個前臺進程。容器運行的命令如果不是那些一直掛起的命令,比如:top,tail,就會在程序執行完成后,自動退出。解決方案是,將要運行的程序以前臺進程的形式運行。所以正確的操作是:
docker run -d centos /bin/bash -c "while true;do echo hello 金刀;sleep 2;done"

#### **docker logs** **// 查看容器日志**
語法:docker logs -f -t –tail 容器ID或容器名稱
參數說明:
- -t:加入時間戳
- -f:跟隨最新的日志打印
- --tail 數字:顯示最后多少條記錄

#### **docker top** **// 查看容器內運行的進程**
語法:docker top 容器ID或容器名稱

#### **docker inspect** **// 查看容器內部細節**
語法:docker inspect 容器ID或容器名稱
因回顯信息過多,只截取了部分內容

#### 進入正在運行的容器并以命令行交互
語法:
- docker exec -it 容器ID或容器名稱 bashShell
- docker attach 容器ID或容器名稱
二者區別:
- attach:直接進入容器啟動命令的終端,不會啟動新的進程
- exec:在容器中打開新的終端,并且可以啟動新的進程


#### **docker cp** **// 從容器內拷貝文件到主機**
語法:docker cp 容器ID或容器名稱:容器內路徑 目的主機路徑

需求:將centos容器中的/root/hello文件,拷貝到宿主機上

可以看到,在我宿主機上面的/root目錄下,并沒叫hello的文件。我將從docker的centos容器中,將/root下的hello文件拷貝到宿主機系統的/root目錄下

此時從容器到宿主機的文件拷貝就完成了
- 什么是Docker
- 為什么會有Docker
- 虛擬技術的發展
- Docker的優勢
- Docker的應用場景(能干什么)
- 獲取Docker及文檔資源
- Docker架構
- Docker工作原理
- 為什么Docker比虛擬機快?
- Docker的安裝
- 前提條件
- 安裝Docker Engine(Docker引擎)
- 程序員的入門經典之HelloWorld
- 卸載Docker引擎
- 配置鏡像加速
- 解決方案:重新加載daemon.json文件后,重啟服務出錯
- Docker常用命令
- 幫助命令
- 鏡像命令
- 常用容器命令
- Docker鏡像
- 鏡像是什么
- 鏡像的特點
- docker commit????// 鏡像提交
- 運行一個Tomcat容器
- Docker容器數據卷
- 什么是容器數據卷
- 數據卷可以干嘛?
- 數據卷的掛載
- 數據卷容器
- Dockerfile
- 什么是Dockerfile
- Dockerfile構建鏡像的流程
- Dockerfile的Demo(CentOS6.8)
- Dockerfile構建過程解析
- Dockerfile體系結構
- Dockerfile案例