docker笔记
起一个shell
haibin$: sudo docker run -ti ubuntu:stack1 /bin/sh
查看镜像
haibin$: sudo docker images
查看容器
haibin$: sudo docker ps -a
contianer
和images
是有很大不同的哦 (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
是守护进程,
查了下,可以酱紫
- 在交互式容器中,先按
再按 ,即可将容器切换到后台。这样子就能切回去了 - 还可以用
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
简单快速实用