【Docker】容器操作(转)

来自:https://www.cnblogs.com/zydev/p/5803461.html

列出主机上的容器

列出正在运行的容器:            docker ps

列出所有容器:               docker ps -a 

列出最近使用的容器,包括没有运行的:    docker ps -l

仅列出容器的ID,不包括没有运行的:        docker ps q

 

创建容器

参数:

--name  指定容器的名字

--rm      容器运行完毕会自动删除

-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

 

posted @ 2018-11-20 18:15  咸鱼翻身  阅读(366)  评论(0编辑  收藏  举报