【Docker】容器操做(轉)

來自:http://www.javashuo.com/article/p-zatpntfi-hw.htmlhtml

列出主機上的容器web

列出正在運行的容器:            docker psdocker

列出全部容器:               docker ps -a shell

列出最近使用的容器,包括沒有運行的:    docker ps -l數據庫

僅列出容器的ID,不包括沒有運行的:        docker ps qcentos

 

建立容器bash

參數:服務器

--name  指定容器的名字app

--rm      容器運行完畢會自動刪除post

-i -t       建立一個提供交互式shell的容器。

-d         在後臺運行容器,而且打印出容器的ID。

建立交互式容器

[root@wls12c ~]$ docker run --name  weblogic -i -t centos /bin/bash
[root@35e3b0fa9dea /]# exit
exit

對於交互式容器,當退出shell後,容器會關閉。 後面能夠經過命令從新啓動容器。

 

建立守護式容器

這種容器指容器能夠長期一直運行,沒有交互式會話,很是適合容器中運行後臺應用程序和服務(如數據庫服務、web服務器等)。

[root@wls12c ~]$ docker run -d centos /bin/bash -c  "while true;do echo hello docker;sleep 1;done" 
af2e15753ec8e27f5a7daad6881cd23c9e098330e9be66920e78e07e8844ac8c

 

啓動和中止容器

docker start/stop/restart continer id/name

docker -t 能夠指定時間中止容器,默認是10s

強制中止容器

docker kill continer id/name

 

附着到一個容器上

docker attach continer id/name

當從新啓動容器時,會沿用建立容器(docker run)命令時指定的參數來運行,可能須要按回車才進入。

這時就已經至關於在容器內部了的shell操做了。若是操做過程當中,退出了shell。容器也會隨之中止。

複製代碼
[root@wls12c ~]$ docker run -i -t centos /bin/bash
[root@cf9b70252ba5 /]# exit
exit
[root@wls12c ~]$ docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
cf9b70252ba5        centos              "/bin/bash"         22 seconds ago      Exited (0) 11 seconds ago                       happy_bohr          
[root@wls12c ~]$ docker start cf9
cf9
[root@wls12c ~]$ docker attach cf9
[root@cf9b70252ba5 /]# 
複製代碼

 

在運行的容器中執行命令

複製代碼
[root@wls12c ~]$ docker exec -t -i af2 /bin/bash
[root@af2e15753ec8 /]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 03:27 ?        00:00:00 /bin/bash -c while true;do echo hello docker;sleep
root        33     0  0 03:28 ?        00:00:00 /bin/bash
root        54    33 10 03:28 ?        00:00:00 ps -ef
root        55     1  0 03:28 ?        00:00:00 sleep 1
複製代碼

能夠經過docker exec命令在容器內部額外啓動新進程,退出容器,並不會中止容器。

 

查看容器的詳細信息

查看容器的運行時後臺輸出信息

docker logs continer id/name

 

複製代碼
[root@wls12c ~]$ docker logs cf9
[root@cf9b70252ba5 /]# exit
exit
[root@cf9b70252ba5 /]# exit
exit
[root@cf9b70252ba5 /]# 
[root@cf9b70252ba5 /]# exit
exit
[root@wls12c ~]$ docker logs af2
hello docker
hello docker
hello docker
複製代碼

 

利用docker inspect 命令能夠查看容器更多的信息。 如ip地址等,這對守護容器仍是頗有意義的。

  View Code

 

刪除已經中止運行的容器

[root@wls12c ~]$ docker  stop af2
af2
[root@wls12c ~]$ docker rm af2
af2

一次刪除全部中止的容器

[root@wls12c ~]$ docker rm $(docker ps -a -q)

 

查看容器內的改變信息

建立一個容器,會在容器的對應的鏡像上增長一個可寫層,鏡像部分是隻讀的。經過 diff命令能夠看出改變的信息。如:

 

複製代碼
[root@wls12c ~]$ docker run -i -t centos /bin/bash
[root@224de7986c5f /]# touch demo.ext
[root@224de7986c5f /]# echo hello docker >demo.ext 
[root@224de7986c5f /]# rm -rf anaconda-post.log 
[root@224de7986c5f /]# exit
exit
[root@wls12c ~]$ docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
224de7986c5f        centos              "/bin/bash"         40 seconds ago      Exited (0) 3 seconds ago                       desperate_curie     
[root@wls12c ~]$ docker diff 224d
D /anaconda-post.log
A /demo.ext
C /root
A /root/.bash_history
複製代碼

 

說明:每行表明一個變更的文件或目錄。其中 A 表示新增、C表示被修改、D表示被刪除

 

 

主機和容器之間的文件拷貝

容器--->主機

複製代碼
[root@wls12c ~]$ docker exec  -t -i 9f bin/bash
[root@9f49397623ad /]# cat demo.txt 
hello
[root@9f49397623ad /]# exit
exit
[root@wls12c ~]$ docker cp 9f:/demo.txt /test [root@wls12c ~]$ cat /test/demo.txt hello
複製代碼

主機-->容器

[root@wls12c ~]$  cp ~/1.txt  /var/lib/docker/aufs/mnt/9f49397623ade7dfd2beb4d84454cbdb9878a4b22a2bab2e8b5db72bcffe60a0/test

[root@wls12c ~]$ docker exec   -t -i 9f   /bin/bash
[root@9f49397623ad /]# ls /test
1.txt

 

重命名容器

[root@wls12c ~]$ docker rename stoic_meitner demo
相關文章
相關標籤/搜索