docker 开始
#0.开始
Docker 有两个程序:
1. 守护进程**:**管理所有的集装箱(containers)
2. 客户进程**:**扮演着远程控制守护进程的角色
在绝大多数的系统中,这两个进程就在同一台主机上。
####version 命令
这个命令可以测试哪个守护进程在运行,而且是否连接。如果获知哪个版本正在运行,那docker就配置好了。
`[sudo] docker version //(docker是以root身份运行的,如果把自己加到docker用户组里就可以省去sudo)`
运行结果
```
$ docker version
Client version: 0.11.1
Client API version: 1.11
Go version (client): go1.2.1
Git commit (client): fb99f99
Server version: 0.11.1
Server API version: 1.11
Git commit (server): fb99f99
Go version (server): go1.2.1
```
####search 命令
最好的开始就是先从别的地方获取一个集装箱的镜像。所有的集装箱的镜像在[DockerIndex](https://index.docker.io/)上都有,这是一个存放镜像的地方。(作为一个纯技术网站,这个地址在拉取镜像的时候被墙了。)
`[sudo] docker search tutorial`
```
$ docker search tutorial
NAME DESCRIPTION STARS OFFICIAL TRUSTED
learn/tutorial 3
namin/io.livecode.ch interactive programming tutorials, powered... 1 [OK]
sfilipov/rails-tutorial 0 [OK]
zqhxuyuan/tutorial 0
mzdaniel/buildbot-tutorial 0
jbarbier/tutorial1
```
####pull 命令
镜像都是以**username/repository**的形式命名的,一些特别的可信的镜像比如ubuntu这个镜像可以直接以名字**repository**的形式命名。
拉取镜像, 执行 `docker pull learn/tutorial` 就能获取该镜像。但是国内被墙了,挂个vpn,或者跳去看后面,从本地导入的方法**import** 和 **load**。
####run 命令
可以把集装箱想象成一个放在盒子里运行的进程,这个盒子包含了所有该进程需要的环境,有完整的文件系统,完整的操作系统库,完整的shell等等,但是默认都是没有运行的。
`docker run learn/tutorial echo "hello world"`
就会在终端中看到hello world
####在集装箱上进行安装
我们需要在集装箱上安装ping,因为镜像是基于ubuntu的,所以可以在集装箱上使用命令`apt-get install -y ping`。虽然集装箱在运行完程序后就会结束,但是在上面做的改变不会被丢弃。
`docker run learn/tutorial apt-get install -y ping`
####保存你的更改
在运行一段命令后,你可能想保存你的修改,那么docker能够从这些更改开始开启集装箱。对于docker来说,所有的进程的保存叫做*committing*,commit 简单地保存新旧镜像的区别。结果产生新的一层。
首先使用`docker ps -l`
会显示执行的改变,然后通过commit 来提交改变
`docker commit 698 name/res` name 和 res 都可以随便命名的。
####运行你自己的镜像
如果你完成了上面的环节,那么你应该拥有了一个包含ping的镜像。现在可以用这个镜像来运行ping了。
`docker run name/res ping google.com`
####检查自己的镜像
`docker ps` 可以列出运行中的集装箱,`docker inspect id`可以获得集装箱的所有信息。
`docker inspect efe` efe是某个集装箱的id
####提交镜像
`docker push name/res` 就可以