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

解决.

posted @ 2017-08-14 10:05  Python_ZEN  阅读(333)  评论(0编辑  收藏  举报