---
# System prepended metadata

title: Docker
tags: ['2021', Docker]

---

###### tags: `Docker`,`2021`
# Docker

Docker 是一個開放原始碼的應用容器引擎，Client/Server(C/S)架構。可以將應用程式、執行環境、設定進行包裝，方便部署，只要以映像檔為範本，建立容器即可。
![](https://i.imgur.com/osyWYlB.png)


## 基本指令

![Command](https://i.imgur.com/ryiYiAe.png)


1. 取得映像檔 Image

$ docker pull [Image]:[Image版本]

如果沒有指定版本，將會取得latest
```
$ docker pull ubuntu
$ docker pull ubuntu:14.04
```

2. 顯示Images清單

```
$ docker images
```

顯示Images歷史資訊
```
$ docker image history ubuntu
```

3. 透過Image執行並產生一個新的container

$ docker run [option] [Image]:[Image版本] [執行指令]
 
```
$ docker run hello-world
$ docker run ubuntu /bin/echo "example 1 - ubuntu"
```

[OPTIONS]:
* -i 開啟容器的標準輸入
* -t, --tty         配置一個命令列虛擬終端，為互動式容器
* -d, --detach      背景執行,為後台型容器
* --name 指定容器名稱
* -u, --user= 建立使用者


4. 檢視容器並搜尋

$docker ps

```
$docker ps -a -f name=hello-world
$docker ps -a --before=hello-world
$docker ps -a --since=ubuntu
```

[OPTIONS]:
* -a 可以顯示不在執行的容器，**列出系統所有容器**
* -f 指定搜尋條件 field=value, field可表示name、image、statu等欄位
* --before 某個容器建立**之前**建立的容器
* --since  某個容器建立**之後**建立的容器

6. 啟動容器

```
$docker start [name]
$docker restart [name]
$docker run
```

7. 停止容器

```
$docker stop [container]
$docker stop -t 10 [container]
$docker kill [container]
```
[OPTIONS]:
* -t 指定再強制停止容器前等待的秒數。超過等待時間，容器還未正常停止，系統會強制停止該容器。

kill 指令會立即終止執行。避免使用，防止資料遺失


9. 移除映像檔

docker image rm 可以讓我們從docker主機移除Image.可以一次移除一個或多個
多個可以帶入映像檔的：
* short ID
* long ID
* digest
* Image名稱和標記.如果標記沒有指定，預設就是latest


## Volume 提供永久資料儲存

1. 建立一個名為datavolTest 的volume
```
$ docker volumne create datavolTest
datavolTest
```

2. ls指令列出剛剛建立的volume
```
$ docker volume ls
DRIVER    VOLUME NAME
local     datavolTest
```
3. container run 啟動交談式容器，用-v 參數把剛剛建立的volume掛載在容器上

```
$ docker container run -it --rm -v datavolTest:/data alpine /#
```
