Docker之實際應用 - 運行輸出HelloWorld

Docker Hello World

Docker 允許你在容器內運行應用程序, 使用 docker run 命令來在容器內運行一個應用程序。

輸出Hello world

docker run ubuntu:15.10 /bin/echo "Hello World"

在這裏插入圖片描述
可以看到這裏如果沒有對應的ubuntu:15.10會自己進行pull
執行參數解釋

  • docker: Docker 的二進制執行文件。
  • run: 與前面的 docker 組合來運行一個容器。
  • ubuntu:15.10指定要運行的鏡像,Docker 首先從本地主機上查找鏡像是否存在,如果不存在,Docker 就會從鏡像倉庫 Docker Hub下載公共鏡像。
  • /bin/echo “Hello world”: 在啓動的容器裏執行的命令

以上命令完整的意思可以解釋爲:Docker 以 ubuntu15.10 鏡像創建一個新容器,然後在容器裏執行 bin/echo “Hello world”,然後輸出結果。

運行交互式的容器

我們通過 docker 的兩個參數 -i -t,讓 docker 運行的容器實現"對話"的能力:

 docker run -i -t ubuntu:15.10 /bin/bash
 root@fb9f4539680e:/#

各個參數解析

  • -t:在新容器內指定一個僞終端或終端。
  • -i: 允許你對容器內的標準輸入 (STDIN) 進行交互。

注意第二行 root@fb9f4539680e:/#,此時我們已進入一個 ubuntu15.10 系統的容器
我們嘗試在容器中運行命令 cat /proc/version和ls分別查看當前系統的版本信息和當前目錄下的文件列表

root@fb9f4539680e:/# cat /proc/version
Linux version 3.10.0-957.5.1.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Fri Feb 1 14:54:57 UTC 2019
root@fb9f4539680e:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

我們可以通過運行 exit 命令或者使用 CTRL+D 來退出容器。

root@869f1490b50e:/# exit
exit
root@ecs-ffef-0006:~# 

注意第三行中 root@ecs-ffef-0006:~# 表明我們已經退出了當期的容器,返回到當前的主機中。

啓動容器(後臺模式)

使用以下命令創建一個以進程方式運行的容器

[root@ecs-ffef-0006 ~]# docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
03921ac43af4edc9cc2a94d16e75383a979de9dc156aeabeaaa46a93c6b9fc06

-c:是執行命令
-d:是後臺運行

在輸出中,我們沒有看到期望的 “hello world”,而是一串長字符
03921ac43af4edc9cc2a94d16e75383a979de9dc156aeabeaaa46a93c6b9fc06

這個長字符串叫做容器 ID,對每個容器來說都是唯一的,我們可以通過容器 ID 來查看對應的容器發生了什麼。
首先,我們需要確認容器有在運行,可以通過 docker ps 來查看:

[root@ecs-ffef-0006 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
03921ac43af4        ubuntu:15.10        "/bin/sh -c 'while t…"   6 seconds ago       Up 5 seconds                            priceless_swartz

輸出詳情介紹
CONTAINER ID: 容器 ID。
IMAGE: 使用的鏡像。
COMMAND: 啓動容器時運行的命令。
CREATED: 容器的創建時間。
STATUS: 容器狀態。
狀態有7種:
created(已創建)
restarting(重啓中)
running(運行中)
removing(遷移中)
paused(暫停)
exited(停止)
dead(死亡)
PORTS: 容器的端口信息和使用的連接類型(tcp\udp)。
NAMES: 自動分配的容器名稱。
在容器內使用 docker logs 命令,查看容器內的標準輸出:
runoob@ecs-ffef-0006:~$ docker logs 2b1b7a428627

[root@ecs-ffef-0006 ~]# docker logs 03921ac43af4
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world

runoob@ecs-ffef-0006:~$ docker logs amazing_cori

runoob@ecs-ffef-0006:~$ docker logs priceless_swartz
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world

停止執行的容器

我們使用 docker stop 命令來停止容器:

[root@ecs-ffef-0006 ~]# docker stop magical_swartz

在這裏插入圖片描述
通過 docker ps 查看,容器已經停止工作:

docker ps

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章