---
description: '"Build, Ship, and Run Any App, Anywhere." -Docker'
---

# 向世界說聲嗨

**恭喜你！走到這裡！你應該學會了：**

* **容器與虛擬機器的差異**
* **什麼是容器**\


如果看到這裡你還沒把你的docker刪除，那我們可以從最簡單的例子開始你的第一個docker run&#x20;

### 從Hello,World開始 <a href="#from_helloworld" id="from_helloworld"></a>

```
$docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.
...
```

如果順利運行應該會顯示這些訊息\
\
雖然這只是簡單一行指令，可以幫助你了解docker run背後到底docker到底跑了多久做了些什麼\
\
我畫了一張圖來作為demo

![](https://3799988419-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LHpJ36dV3jbyNsfbeuh%2F-LIKCXSrGpLnhKjk_rNL%2F-LIKCxKmj86CwrgQ1tC9%2Fdemo.jpg?alt=media\&token=e73a362f-eac6-4427-8987-112a51dc678e)

\
事情是這樣子的：\


1. **首先呢，你在docker client透過終端機與docker daemon溝通，docker daemon是一個做事的人**\

2. **你輸入指令請求docker使用一個叫做hello-world的image**\

3. **docker daemon聽到後發現在你的本機端並沒有找到叫做hello-world的image，於是他就跑去docker hub拉了一個最新的（註1）**\

4. **並且透過拉下來的image去產生出container。也就是你的hello-world運行的地方**\

5. **最後才送回docker client端，顯示在你的terminal上**\


酷吧，你已經使用docker來印出hello world了。（而且這串訊息背後是用Ｃ寫的）



### 你還可以做的： <a href="#more" id="more"></a>



```
$docker images #show the current images
```

```
$docker ps #show the running containers, note: "ps" stands for process status
```



啊哈！如果你正在想說為什麼docker ps 沒有東西，是因為你必須指名所有的container\


```
$docker ps --all #show the all containers, note: "ps" stands for process status
```



\
\


> 註1:若沒有特別使用tag標註，會自動拉最新(latest)的image。e.g. docker run ubuntu:14.04\
>

\
