docker笔记

Author Avatar
Aryb1n 5月 16, 2017

起一个shell

haibin$: sudo docker run -ti ubuntu:stack1  /bin/sh

查看镜像

haibin$: sudo docker images

查看容器

haibin$: sudo docker ps -a

contianerimages是有很大不同的哦 (http://blog.csdn.net/chszs/article/details/48252799)
-a会显示所有的容器,不加-a只显示正在跑的
看起来好像是额,镜像是不可写的,相当于一块光盘镜像?然后容器可以更改?每次运行后的更改会写入容器的文件系统里
md虽然我还是不太懂,好忧伤啊

从docker container里拷贝libc文件出来

haibin$: sudo docker cp <containerId>:/lib32/libc.so.6 /host/path/target

检查特定容器

docker inspect contianerid

一般的run一个容器

haibin$: sudo docker run --name stack1 -it -d -P ubuntu:stack1
-d 后台运行容器并返回容器ID
-it 交互式shell(那他这个-d之后再用-it有事吗意义吗)[查了下说`sudo docker attach contianerid` 可以重新起shell]
--name 起一个名字
-P 相当于端口映射,docker会在host中随机从49153 和65535之间查找一个未被占用的端口绑定到container

另外可以用-p IP:host_port:container_port指定端口映射规则(http://udn.yyuap.com/doc/docker_practice/advanced_network/port_mapping.html)
然后发现个问题,我想做一些操作,把他attach出来,搞完后,我想把他退出去,然后我就Ctrl+d或者exit对吧
然后md,他就就退出去了,我的天哪
刚还发现:

如果以单次执行方式运行容器,当命令执行完毕后容器就会自动停止。而使用交互的方式运行容器,则直到交互程序退出容器才会停止。
所以为了让他一直跑着,所以要-it,但不想看着他所以要丢到后台-d对吗
诶好像不是,这个-d是守护进程,

查了下,可以酱紫

  1. 在交互式容器中,先按再按,即可将容器切换到后台。这样子就能切回去了
  2. 还可以用docker exec来跑一个新的服务,或者起一个shell,用完把这个shell关掉就可以了

docker exec

与docker run极为相似,也可以使用-i、-t和-d等参数
作用是为运行中的容器启动新进程
那就是说要先run一个,再有监控之类的需求的时候再exec一个进程

镜像迁移

备份

haibin$: docker save busybox-1 > /home/save.tar

恢复

haibin$: docker load < /home/save.tar

有一次ctf的时候有道题目就是提供了一个docker镜像还是什么来着。自己直接没做

构建镜像

haibin$: docker build -t <镜像名> <Dockerfile路径>

参考

http://blog.csdn.net/sch0120/article/category/6519600
这个挺不错的,可以供参考的
http://blog.csdn.net/chszs/article/details/48252799
这个还没细看
http://blog.csdn.net/wsscy2004/article/details/25878363
简单快速实用