docker容器操作
Docker运行容器需要一个命令
sudo docker run
注:运行容器分为两种,一种是新建一个容器运行,另一种是运行已经终止了的容器
最简单的docker应用
sudo docker run ubuntu:14.04 /bin/echo 'Hello world'
这里指定一个镜像:ubuntu 14.04。这是我们容器中运行的来源。docker称这个为镜像
当你指定一个镜像,docker会查看这个镜像是否有一次加载到你的docker主机上,如果没有发现,docker就会在镜像仓库Docker Hub下载公共镜像
只要"hello word"被输出,容器就会停止
注意:如果出现找不到index.docker.io或者registry-1.docker.io等,可以ping一下,然后把得到的IP加入hosts中,有点奇怪
运行一个交互式的容器
sudo docker run -t -i ubuntu:14.04 /bin/bash
创建一个容器,让它以守护进程的模式运行
sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
-d 标识告诉docker运行容器在后台模式运行
没有看到输出的 hello world ,而是输出了一个很长的字符串,
这个长的字符串叫做容器ID。它是容器的唯一标识,所以我们可以使用它。
查看docker正在运行的容器
sudo docker ps
这里的CONTAINER ID和NAMES则是自动分配的短ID和名称,这个短ID和上面的长ID作用是一样的
docker会在容器启动的时候自动给容器命名,当然也可以自己给容器指定名称
那么hello world 的输出到哪儿了?
sudo docker logs tender_mclean
停止正在运行的后台容器
sudo docker stop tender_mclean
之前的一些例子都没什么实际的作用,运行一个web容器
sudo docker run -d -P training/webapp python app.py
-P 标示通知Docker所需的网络端口映射从主机映射到我们的容器内
我们指定了training/web
镜像。这个预先建立好的镜像被我们创建后就已经包含了简单的python应用程序环境
看已经停止的容器请 -a
标示
在这种情况下,docker开放了5000端口(默认Phtyon端口)映射到主机端口49155上
Docker可以配置绑定网络端口。在最后一个例子中-P
标示,是-p 5000
的快捷方式,-p 5000
可以使端口5000映射到外部的端口(49000到49900端口)。我们也可以指定 -p
标示来指定端口
sudo docker run -d -p 5000:5000 training/webapp python app.py
测试(用浏览器打开或者CURL)
使用docker port
可以指定容器ID或者名字映射到主机端的端口号
sudo docker port kickass_mayer 5000
在这种情况下,我们看到端口5000映射到容器外的主机端口
查看web应用容器日志
sudo docker logs -f kickass_mayer
-f 即 tail -f 的意思,查看容器的标准输出
查看容器进程
sudo docker top kickass_mayer
Docker的底层信息。它会返回一个JSON文件记录docker容器的配置和状态信息
sudo docker inspect kickass_mayer
对我们想要的信息缩小显示,例如,返回容器的IP地址
sudo docker inspect -f '{{ .NetworkSettings.IPAddress }}' kickass_mayer
停止容器
sudo docker stop kickass_mayer
重启容器
sudo docker start kickass_mayer
删除容器
sudo docker rm kickass_mayer
注意:不能删除正在运行的容器,这样会保护意外删除可能需要的运行中容器
进入容器
如果一个容器后台运行了,但是想进入
sudo docker attach container_name
导出容器
sudo docker export 7691a814370e > ubuntu.tar
导入容器
cat ubuntu.tar | sudo docker import - test/buntu:v1.0
也可以通过URL
sudo docker import http://example.com/exampleimage.tgz example/imagerepo