【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地址等,这对守护容器还是很有意义的。
删除已经停止运行的容器
[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
博客版权: 本文以学习、研究和分享为主,欢迎转载和各类爬虫,但必须在文章页面明显位置给出原文链接。 如果文中有不妥或者错误的地方还望高手的您指出,以免误人子弟。如果您有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。