# Docker Container 指令
### 主講人:黃夙賢
---
## Docker指令

---
## Docker指令概覽
- docker image
- <font color=red>docker container</font>
- docker volume
- docker network
---
## Docker Container
- Docker容器操作指令
- Docker 大部分的操作皆為容器操作,因此命令常常省略container這個字
- docker run \<映像檔\> \<指令\>

---
## Docker Run
```
docker run -d ubuntu (ubuntu無automated,所以執行完後直接跳開)
docker ps (ubuntu跳開後,找不到執行的容器)
docker ps –a (透過-a查詢歷史容器,的確有執行過但直接跳開)
docker run –d tutum/apache-php (tutum/apache-php為automated
容器,執行後會存在,利用-d方式當作背景程式執行)
docker ps
```

---
## -c 指定CPU比例
- docker run –c
- 指定cpu的使用比例,多個容器時才能感到差異
```
docker run --rm -it -c 1024 progrium/stress --cpu 12 --io 1 --vm 2 --vm-bytes 128M --timeout 10s
(跑一個十秒的壓力程式,監看cpu的狀況)
```
 
---
## - -attach 連接輸出入
- docker run --attach \<STDOUT\> \<image\>
- 執行時接上標準輸出輸入

---
## -e 環境變數
- docker run -e \<環境變數\> \<映像檔\>
- 將環境變數傳入容器中(例如使用者帳號、密碼)
```
docker run --name mydb –e MYSQL_ROOT_PASSWORD=abc1234 –d mysql
(執行一個mysql docker,設定root密碼為abc1234)
docker ps
```

---
```
docker exec -it mydb bash (進入mydb測試密碼是否有設成功)
mysql -p (進入mysql 並驗證密碼)
abc1234 (輸入密碼)
show databases; (成功進入,並且可以執行命令)
exit
exit
```

---
## -it 進入容器
- docker run -it \<image\> \<指令\>
- 執行時直接進入容器,使用螢幕鍵盤觀看並輸入指令
```
docker run –it tutum/apache-php bash
(進入tutum/apache-php的bash介面)
ls
exit
```

---
## -p 指定通訊埠對應
- docker run -p HOSTPORT:CONTAINERPORT \<image\>
- 對應主機與容器的通訊埠
```
docker run -d -p 8888:80 tutum/apache-php
curl localhost:8888 (利用curl查看網頁)
```

---
## 應用題:對應容器port 8888到虛擬機的port 8081



---

---
## Docker rm
- docker rm
- 刪除執行容器
```
docker ps
docker rm –f mydb (刪除name為mydb之容器)
docker ps
docker rm –f 1b
(用container ID方式刪除容器,本範例container id 起頭為1b)
docker ps
```

---
## 應用題:刪除所有執行過的容器
- docker ps -aq (列出所有的執行過的容器)
- $()把上面命令變成參數
```
docker rm -f $(docker ps -aq)
```
---
{"metaMigratedAt":"2023-06-17T18:26:46.751Z","metaMigratedFrom":"YAML","title":"Docker Container 指令","breaks":true,"contributors":"[{\"id\":\"ef0225b9-6c2a-4012-82c9-fa1031d2c4db\",\"add\":2492,\"del\":1}]"}