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到你的本地秘钥库
1 2 |
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 |
将Docker添加到你的apt软件安装源中,然后update和install lxc-docker,期间会遇到一个警告,说这个包不可靠,你只需要回复yes然后继续安装就可以了!
1 2 3 4 5 6 7 8 |
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的镜像封装到一个沙箱中了,这里下载的是一个基本镜像,你可以基于这个基础镜像再制作其它的镜像。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
sudo docker pull ubuntu #pull命令需要到国外的镜像仓库,拉取镜像 </code>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$ |
1 |
直接启动成为一个系统 |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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 #看一下,已经没了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<strong>docker ps命令</strong> 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命令
1 |
helight:examples$ </code>container_id=`docker run -d <image_name> ls` |
1 |
helight:examples$</code> docker export $container_id > image.tgz |
docker import命令
1 |
helight:examples$</code> cat image.tgz | sudo docker import - simple_dev #simple_dev为自定义的镜像名称 |
docker port命令
1 |
helight:examples$</code> docker run -p 80:8080 <image> <cmd> #映射容器的8080端口到宿主机的80端口 |
删除容器
删除所有容器
1 |
helight:examples$ </code>sudo docker rm `sudo docker ps -a -q` |
删除具体某个容器
helight:examples$ sudo docker rm $CONTAINER_ID
docker命令快速参考
1 |
helight:examples$</code> sudo docker images #查看本地镜像 |
1 |
helight:examples$</code> sudo docker attach $CONTAINER_ID #启动一个已存在的docker实例 |
1 |
helight:examples$</code> sudo docker stop $CONTAINER_ID #停止docker实例 |
1 |
helight:examples$</code> sudo docker logs $CONTAINER_ID #查看docker实例运行日志,确保正常运行 |
1 |
helight:examples$</code> sudo docker inspect $CONTAINER_ID #查看container的实例属性,比如ip等等 |
通过docker run命令的-v/–volume参数 和主机
假设我们需要将本机的/data 目录分享到Docker的/mnt 目录下, 我们可以通过这样的命令:
1 2 3 4 5 |
$ 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 |
1 |
root@b1ddd72e7f9f:/# |
1 |
我想使用Debian容器,就要使用代码:
- docker run -i -t debian /bin/bash
如果你想有某个发行版,那么就要使用这个命令:
- docker run -i -t ubuntu:12.04 /bin/bash
它会创建ubuntu12.04容器。
1 |
