天天看點

docker入門

運作第一個容器

docker run -i -t ubuntu /bin/bash

-i : 打開容器中的stdin -t:為容器配置設定一個僞終端

2. 使用第一個容器

檢查容器的主機名

root@e300c0373c3d:/# hostname

e300c0373c3d   代表容器id

檢查容器的/etc/hosts檔案

root@e300c0373c3d:/# cat /etc/hosts 

172.17.0.2      e300c0373c3d

127.0.0.1       localhost

::1     localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

檢視系統容器中的清單

[root@localhost ~]# docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES

e300c0373c3d        ubuntu:latest       "/bin/bash"         5 minutes ago       Exited (0) 50 seconds ago                         modest_albattani    

18f37ea17802        ubuntu:latest       "/bin/bash"         41 minutes ago      Exited (127) 12 minutes ago                       nostalgic_wright    

3.容器的命名

docker會為我們建立的每一個容器自動生成一個随機的名字。可以使用--name來實作指定名稱

這裡注意:

容器的名字必須是唯一的。如果發現重名則會建立失敗。可以利用docker rm指令删除已有的同名容器

4.重新開機已經停止的容器

docker start e300c0373c3d 

可以使用docker restart 來重新啟動一個容器

5.附着在容器上

docker attach e300c0373c3d  附着在正在運作的容器會話上。

如果退出容器的shell,容器也會随之停止運作。

這裡可以通過ctrl+d安全退出shell而不關閉容器。本人經過試驗!

6.建立守護式容器

守護式容器:沒有互動式會話,非常适合運作應用程式和服務。

此容器的作用就是一直循環列印hello world,直到容器停止。

[root@localhost ~]# docker run --name daemon -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"     

78983e3833fa68a275be301909352fe95c56607d714e0157af0e424c520da40c

[root@localhost ~]# docker ps

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES

78983e3833fa        ubuntu:latest       "/bin/sh -c 'while t   11 seconds ago      Up 9 seconds                            daemon      

此時用docker run 隻會傳回一個容器id,必須用docker attach才能附着到新的shell會話

附着到容器會話,顯示他一直在列印hello world

[root@localhost ~]# docker attach daemon

hello world

7.檢視容器日志

用docker logs 指令檢視容器的日志

[root@localhost ~]# docker logs daemon

docker logs -f daemon

這裡可以使用-f參數來監控docker日志,與tail -f指令相似

這裡可以使用-t 标志為每條日志項加上時間戳

docker logs -f -t daemon

2015-05-22T01:12:32.208548603Z hello world

2015-05-22T01:12:33.215134985Z hello world

8.檢視容器程序

[root@localhost ~]# docker top daemon

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD

root                47832               45603               0                   21:10               ?                   00:00:00            /bin/sh -c while true; do echo hello world; sleep 1; done

9。在容器内運作程序

我們可以通過docker exec指令在容器内部額外啟動新程序。可以在容器内建立的程序有兩種類型:背景任務和互動式任務

背景任務在容器内運作,且沒有互動需求,互動式任務則保持在前台運作。

 docker exec -d daemon touch /tmp/test

 -d: 表明需要運作一個背景程序。

驗證 

[root@localhost ~]# docker exec -t -i daemon /bin/bash

root@2d39e9e78ae0:/# cd /tmp/

root@2d39e9e78ae0:/tmp# ls

test

10.停止容器

docker stop daemon

11.自動重新開機容器

由于某種錯誤而導緻容器停止運作。我們可以通過--restart标志,來 讓docker自動重新啟動該重新開機。預設的行為是docker

不會重新開機容器。

--restart被設定為always。無論容器的退出碼是什麼都會自動重新開機。除了always,我們還可以将這個标志設定為on-failure

,另外on-failure還可以接受一個可選的重新開機次數參數

例:--restart=on-failure:5

12.删除容器

docker rm daemon

删除所有容器

docker rm ·docker  ps -a  -q·

-a代表所有,-q代表隻顯示容器的id

本文轉自 shouhou2581314 51CTO部落格,原文連結:http://blog.51cto.com/thedream/1654350,如需轉載請自行聯系原作者