docker學習3:Docker Hello World

tonykorn97發表於2018-05-01
Docker Hello World
Docker 允許你在容器內執行應用程式, 使用 docker run 命令來在容器內執行一個應用程式。
輸出Hello world




[root@huixuan ~]# docker run ubuntu:15.10 /bin/echo "Hello World"
Unable to find image 'ubuntu:15.10' locally
Trying to pull repository docker.io/library/ubuntu ... 
15.10: Pulling from docker.io/library/ubuntu
7dcf5a444392: Pull complete 
759aa75f3cee: Pull complete 
3fa871dc8a2b: Pull complete 
224c42ae46e7: Pull complete 
Digest: sha256:02521a2d079595241c6793b2044f02eecf294034f31d6e235ac4b2b54ffc41f3
Status: Downloaded newer image for docker.io/ubuntu:15.10
Hello World
[root@huixuan ~]# 


各個引數解析:
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執行的容器實現"對話"的能力
[root@huixuan ~]# docker run -i -t ubuntu:15.10 /bin/bash
root@9eb6867b6b7a:/# 


各個引數解析:
-t:在新容器內指定一個偽終端或終端。
-i:允許你對容器內的標準輸入 (STDIN) 進行互動。
此時我們已進入一個 ubuntu15.10系統的容器
我們嘗試在容器中執行命令 cat /proc/version和ls分別檢視當前系統的版本資訊和當前目錄下的檔案列表
root@9eb6867b6b7a:/# cat /proc/version
Linux version 3.10.0-514.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Nov 22 16:42:41 UTC 2016
root@9eb6867b6b7a:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@9eb6867b6b7a:/# 


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








啟動容器(後臺模式)
使用以下命令建立一個以程式方式執行的容器
[root@huixuan ~]# docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
bf9a047d6e66312523cf21d36e737d706076d9e7549c9677010006f882045741
[root@huixuan ~]# 


在輸出中,我們沒有看到期望的"hello world",而是一串長字元
bf9a047d6e66312523cf21d36e737d706076d9e7549c9677010006f882045741
這個長字串叫做容器ID,對每個容器來說都是唯一的,我們可以透過容器ID來檢視對應的容器發生了什麼。
首先,我們需要確認容器有在執行,可以透過 docker ps 來檢視
[root@huixuan ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
bf9a047d6e66        ubuntu:15.10        "/bin/sh -c 'while..."   48 seconds ago      Up 47 seconds                           elastic_einstein
[root@huixuan ~]# 




CONTAINER ID:容器ID
NAMES:自動分配的容器名稱
在容器內使用docker logs命令,檢視容器內的標準輸出
[root@huixuan ~]# docker logs bf9a047d6e66
hello world
hello world
hello world
hello world
hello world
hello world


[root@huixuan ~]# docker  logs elastic_einstein
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world


停止容器
我們使用 docker stop 命令來停止容器:
[root@huixuan ~]# docker stop bf9a047d6e66
bf9a047d6e66
[root@huixuan ~]# 




透過docker ps檢視,容器已經停止工作:
[root@huixuan ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@huixuan ~]# 


也可以用下面的命令來停止:
[root@huixuan ~]# docker stop elastic_einstein

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-2153583/,如需轉載,請註明出處,否則將追究法律責任。

相關文章