| 2015年1月20日
在ubuntu13.10上体验docker
首先要检测以下你的内核版本
sudo uname -a
Linux helight-Xu 3.11.0-26-generic #45-Ubuntu SMP Tue Jul 15 04:02:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
第一次添加Docker的repository到你的本地秘钥库
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
将Docker添加到你的apt软件安装源中,然后update和install lxc-docker,期间会遇到一个警告,说这个包不可靠,你只需要回复yes然后继续安装就可以了!
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\
>/etc/apt/sources.list.d/docker.list"
sudo apt-get update
sudo apt-get install lxc-docker
现在你就可以下载安装ubuntu的镜像封装到一个沙箱中了,这里下载的是一个基本镜像,你可以基于这个基础镜像再制作其它的镜像。
sudo docker pull ubuntu #pull命令需要到国外的镜像仓库,拉取镜像
helight:examples$ sudo docker pull ubuntu
ubuntu:latest: The image you are pulling has been verified
53f858aaaf03: Downloading [=========> ] 36.34 MB/197.2 MB 2m41s
837339b91538: Download complete
615c102e2290: Download complete
b39b81afc8ca: Download complete
511136ea3c5a: Already exists
运行hello world,这是一次性运行,运行完成之后docker既可以退出。
helight:examples$ sudo docker run ubuntu /bin/echo hello world
[sudo] password for helight:
hello world
helight:examples$
直接启动成为一个系统
sudo docker run -i -t ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
ubuntu:latest: The image you are pulling has been verified
511136ea3c5a: Pull complete
3b363fd9d7da: Pull complete
607c5d1cca71: Pull complete
f62feddc05dc: Pull complete
8eaa4ff06b53: Pull complete
Status: Downloaded newer image for ubuntu:latest
root@117bf19ae970:/#
root@117bf19ae970:/# ls
docker常用命令
5.1、docker三种命令运行模式 docker有三种命令运行的方式:短暂方式、交互方式、daemon方式。
a、短暂方式:就是刚刚的那个”hello world”,命令执行完后,container就终止了,不过并没有消失,可以用 sudo docker ps -a 看一下所有的container,第一个就是刚刚执行过的container,可以再次执行一遍:
helight:examples$ sudo docker start container_id
不过这次看不到”hello world”了,只能看到ID,用logs命令才能看得到:
helight:examples$ sudo docker logs container_id
可以看到两个”hello world”,因为这个container运行了两次。
b、交互方式
helight:examples$ sudo docker run -i -t image_name /bin/bash #image_name为docker镜像名称
c、daemon方式 即让软件作为长时间服务运行,这就是SAAS啊! 例如,一个无限循环打印的脚本(替换为memcached、apache等,操作方法仍然不变!):
helight:examples$ CONTAINER_ID=$(sudo docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done")
在container外面查看它的输出
helight:examples$ sudo docker logs $CONTAINER_ID
或者连接上容器实时查看
helight:examples$ sudo docker attach $CONTAINER_ID
终止容器
helight:examples$ sudo docker stop $CONTAINER_ID
helight:examples$ sudo docker ps #看一下,已经没了
## docker ps命令
helight:examples$ sudo docker ps #列出当前所有正在运行的container
helight:examples$ sudo docker ps -l #列出最近一次启动的,且正在运行的container
helight:examples$ sudo docker ps -a #列出所有的container
注意: a、其他用法请参考 sudo docker ps -h b、还有一种方式可以让程序在daemon模式下运行,就是在Dockerfile里设置USER为daemon
helight:examples$ sudo docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa27430aeb92 8eaa4ff06b53 "/bin/echo hello wor 9 minutes ago Exited (0) 2 minutes ago sharp_hopper
helight:examples$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa27430aeb92 8eaa4ff06b53 "/bin/echo hello wor 9 minutes ago Exited (0) 2 minutes ago sharp_hopper
117bf19ae970 8eaa4ff06b53 "/bin/bash" 3 days ago Exited (1) 10 minutes ago ecstatic_rosalind
helight:examples$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
helight:examples$
docker export命令
helight:examples$ </code>container_id=`docker run -d <image_name> ls`
helight:examples$</code> docker export $container_id > image.tgz
docker import命令
helight:examples$</code> cat image.tgz | sudo docker import - simple_dev #simple_dev为自定义的镜像名称
docker port命令
helight:examples$</code> docker run -p 80:8080 <image> <cmd> #映射容器的8080端口到宿主机的80端口
删除容器
删除所有容器
helight:examples$ </code>sudo docker rm `sudo docker ps -a -q`
删除具体某个容器
helight:examples$ sudo docker rm $CONTAINER_ID
docker命令快速参考
helight:examples$</code> sudo docker images #查看本地镜像
helight:examples$</code> sudo docker attach $CONTAINER_ID #启动一个已存在的docker实例
helight:examples$</code> sudo docker stop $CONTAINER_ID #停止docker实例
helight:examples$</code> sudo docker logs $CONTAINER_ID #查看docker实例运行日志,确保正常运行
helight:examples$</code> sudo docker inspect $CONTAINER_ID #查看container的实例属性,比如ip等等
通过docker run命令的-v/–volume参数 和主机
假设我们需要将本机的/data 目录分享到Docker的/mnt 目录下, 我们可以通过这样的命令:
$ docker run -v /data:/mnt -i -t ubuntu bash
root@b1ddd72e7f9f:/# ls /mnt
21.rar doc lost+found sysbak zhwen0.png
eclipse_code netpool tcode zookeeper
root@b1ddd72e7f9f:/# </code>
我想使用Debian容器,就要使用代码:
docker run -i -t debian /bin/bash
如果你想有某个发行版,那么就要使用这个命令:
docker run -i -t ubuntu:12.04 /bin/bash
它会创建ubuntu12.04容器。
关注「黑光技术」,关注大数据+微服务