Docker 常用命令(二)
4. 查看Docker镜像创建历史:
docker history flaskhello
3. Docker提交镜像
docker build -t flaskhello .
docker run -p 4000:80
flaskhello
docker run -d -p 4000:80
flaskhello
docker tag
flaskhello
john/get-started:part1
docker push xiaofeier312/learning:v0.1flaskhi
2.Docker 容器镜像删除
1.停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q)
如果想要删除所有container的话再加一个指令: docker rm $(docker ps -a -q)
2.查看当前有些什么images docker images
3.删除images,通过image的id来指定删除谁 docker rmi <image id>
想要删除untagged images,也就是那些id为<None>的image的话可以用docker rmi $(docker images | grep "^<none>" | awk "{print $3}") 要删除全部image的话 docker rmi $(docker images -q)
1. 在做练习的时候, 一直无法成功:
导出服务端口
# 将4444端口从容器导出,在容器内部通过nc监听到4444端口(nc是一个简单的监听器,可以接收用户的输入)
$ JOB=$(docker run -d -p 4444 ubuntu:12.10 /bin/nc -l 4444)
# 通过docker port可以查看主机上哪一个端口映射到了容器的 4444端口(docker默认使用nat映射方式)
$ PORT=$(docker port $JOB 4444 | awk -F: '{ print $2 }')
# 向主机的端口,发送hello world
$ echo hello world | nc 127.0.0.1 $PORT
# 确认容器收到了hello world
$ echo "Daemon received: $(docker logs $JOB)"
剖析:
- nc是一个简单的监听指定端口的程序
- -p表示导出容器的指定端口,由于没有指定主机端口,因此是随机分配的
- 外部程序可以通过主机的端口,间接访问容器的4444端口
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
分析发现 Ubuntu的docker镜像 没有很多命令, 先安装nc
apt-get install netcat
之后也一直无法用host连接镜像的端口,
于是在镜像里调试:
>>nc -l 4444&
>>nc 127.0.0.1 4444
发现报错, 根本无法连接
安装netstat,后查看nc的端口监听的不是4444
查看当前版本nc的帮助发现,当前版本,需要用
>>nc -l -p 4444
解决.