`docker run` :創建一個新的容器并運行一個命令
語法
```
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
```
OPTIONS說明:
- -a stdin: 指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項;
- -d: 后臺運行容器,并返回容器ID;
- -i: 以交互模式運行容器,通常與 -t 同時使用;
- -P: 隨機端口映射,容器內部端口隨機映射到主機的高端口
- -p: 指定端口映射,格式為:主機(宿主)端口:容器端口
- -t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
- --name="nginx-lb": 為容器指定一個名稱;
- --dns 8.8.8.8: 指定容器使用的DNS服務器,默認和宿主一致;
- --dns-search example.com: 指定容器DNS搜索域名,默認和宿主一致;
- -h "mars": 指定容器的hostname;
- -e username="ritchie": 設置環境變量;
- --env-file=[]: 從指定文件讀入環境變量;
- --cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行;
- -m :設置容器使用內存最大值;
- --net="bridge": 指定容器的網絡連接類型,支持 bridge/host/none/container: 四種類型;
- --link=[]: 添加鏈接到另一個容器;
- --expose=[]: 開放一個端口或一組端口;
- --volume , -v: 綁定一個卷
## 實例
使用docker鏡像nginx:latest以后臺模式啟動一個容器,并將容器命名為mynginx。
```
docker run --name mynginx -d nginx:latest
```
使用鏡像nginx:latest以后臺模式啟動一個容器,并將容器的80端口映射到主機隨機端口。
```
docker run -P -d nginx:latest
```
使用鏡像 nginx:latest,以后臺模式啟動一個容器,將容器的 80 端口映射到主機的 80 端口,主機的目錄 /data 映射到容器的 /data。
```
docker run -p 80:80 -v /data:/data -d nginx:latest
```
綁定容器的 8080 端口,并將其映射到本地主機 127.0.0.1 的 80 端口上。
```
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
```
## 交互模式
使用鏡像`ubuntu:16.04`以交互模式啟動一個容器,在容器內執行`bash`命令。
```
docker run -it --rm ubuntu:16.04 bash
root@b8573233d675:/#
```
docker run 就是運行容器的命令,我們這里簡要的說明一下上面用到的參數。
- -it:這是兩個參數,一個是 -i:交互式操作,一個是 -t 終端。我們這里打算進入 bash 執行一些命令并查看返回結果,因此我們需要交互式終端。
- --rm:這個參數是說容器退出后隨之將其刪除。默認情況下,為了排障需求,退出的容器并不會立即刪除,除非手動 docker rm。我們這里只是隨便執行個命令,看看結果,不需要排障和保留結果,因此使用 --rm 可以避免浪費空間。
ubuntu:16.04:這是指用 ubuntu:16.04 鏡像為基礎來啟動容器。
- bash:放在鏡像名后的是命令,這里我們希望有個交互式 Shell,因此用的是 bash。
進入容器后,我們可以在 Shell 下操作,執行任何所需的命令。這里,我們執行了 `cat /etc/os-release`,這是 Linux 常用的查看當前系統版本的命令,從返回的結果可以看到容器內是 `Ubuntu 16.04.4 LTS` 系統。
## 列出容器
`docker ps` : 列出容器
### 語法
```
docker ps [OPTIONS]
```
OPTIONS說明:
- -a :顯示所有的容器,包括未運行的。
- -f :根據條件過濾顯示的內容。
- --format :指定返回值的模板文件。
- -l :顯示最近創建的容器。
- -n :列出最近創建的n個容器。
- --no-trunc :不截斷輸出。
- -q :靜默模式,只顯示容器編號。
- -s :顯示總的文件大小。
如:
列出最近創建的5個容器信息。
```
docker ps -n 5
```
## 刪除容器
`docker rm` :刪除一個或多少容器
語法
```
# 刪除 [OPTIONS] 一個或多個容器id或啟動時的容器名稱
docker rm [OPTIONS] CONTAINER_ID|NAME [CONTAINER_ID|NAME...]
```
OPTIONS說明:
- -f :通過SIGKILL信號強制刪除一個運行中的容器
- -l :移除容器間的網絡連接,而非容器本身
- -v :-v 刪除與容器關聯的卷
實例
強制刪除容器db01、db02
```
docker rm -f db01 db02
```
移除容器nginx01對容器db01的連接,連接名db
```
docker rm -l db
```
刪除容器nginx01,并刪除容器掛載的數據卷
```
docker rm -v nginx01
```
## 進入容器
`docker exec -it [OPTIONS] /bin/sh` :進入一個啟動中的容器
- 開發環境準備
- 基本開發手冊
- 項目目錄結構
- 權限管理
- 通用分頁表格
- Swagger文檔
- undertow容器
- 對xss攻擊的防御
- 分布式鎖
- 統一的系統日志
- 統一驗證
- 統一異常處理
- 文件上傳下載
- 一對多、多對多分頁
- 認證與授權
- 從授權開始看源碼
- 自己寫個授權的方法-開源版
- 商城表設計
- 商品信息
- 商品分組
- 購物車
- 訂單
- 地區管理
- 運費模板
- 接口設計
- 必讀
- 購物車的設計
- 訂單設計-確認訂單
- 訂單設計-提交訂單
- 訂單設計-支付
- 生產環境
- nginx安裝與跨域配置
- 安裝mysql
- 安裝redis
- 傳統方式部署項目
- docker
- 使用docker部署商城
- centos jdk安裝
- docker centos 安裝
- Docker Compose 安裝與卸載
- docker 鏡像的基本操作
- docker 容器的基本操作
- 通過yum安裝maven
- 常見問題