Docker和VM区分开来是不一样的.
在我的理解里VM虚拟机相当于一个操作系统的拷贝,拥有操作系统所拥有的所有资源,因此很占用内存.
而Docker可以理解为便携式的VM,只包含我们需要的程序,而没有其他额外的内容.
Docker主要有三部分:
1. image镜像
2. 容器
3. 仓库
镜像和容器之间关系:
image只包含可读的内容,不可以直接运行,而容器则是运行单位.
两者关系可以对应成这样:
镜像=类
容器=类的实例l
镜像是只读的,而容器是在镜像层上的可写层
容器运行时需要本地存在对应的镜像,如果不存在则会从镜像仓库中下载(默认是 Docker Hub 公共注册服务器中的仓库)
仓库:
仓库分为共有仓库和私有仓库,就是字面意思:仓库是存放了很多镜像的大仓库.
我们可以通过push将镜像上传到共有仓库或者私有仓库,然后在另一台机子上通过pull从仓库中下载到本地.
简单的命令
在ubuntu安装docker服务:
$ sudo apt-get update
$ sudo apt-get install -y docker.io
查看docker版本:
docker version
启动docker服务:
sudo service docker start
如何下载镜像:
sudo docker pull ubuntu:12.04
相当于:
$ sudo docker pull registry.hub.docker.com/ubuntu:12.04 命令,
即从注册服务器 registry.hub.docker.com 中的 ubuntu 仓库来下载标记为 12.04 的镜像。
查看本地已有的镜像:
sudo docker images
创建一个容器并运行:(需要指定调用的镜像)
sudo docker run -t -i ubuntu:12.04 /bin/bash
注意:
同一个镜像可以有多个容器
显示:
root@818a537ecc49:/#
表示已经启动 ubuntu:12.04这个容器的 bash应用
ubuntu代表仓库
12.04代表镜像版本
如果不指定具体的标记,即上面的12.04,则默认使用 latest 标记信息
退出容器:
exit
搜索镜像:
sudo docker search httpd
如何更新镜像?
首先需要创建一个容器:
jjc@jjczn:~$ sudo docker run -t -i ubuntu:12.04 /bin/bash
root@2bf155e4554a:/#
这个时候容器id为2bf155e4554a
经过一些更改以后调用exit命令退出
这是我们经过修改的容器
然后采用命令提交镜像副本
sudo docker commit -m "update" -a="codingcoge" 2bf155e4554a jjc:newubuntu
[sudo] password for jjc:
sha256:f4e8825292550752d91bdc3cc64d107efddcd17960d86ce17864d1f3d1b35337
m指定描述信息
a指定作者
2bf155e4554a代表容器id
jjc:newubuntu是更改后镜像的仓库和标识
成功后返回镜像的id属性
再查看一下镜像:
jjc@jjczn:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jjc newubuntu f4e882529255 6 minutes ago 104MB
hello-world latest fce289e99eb9 4 months ago 1.84kB
ubuntu 12.04 5b117edd0b76 2 years ago 104MB
原先的镜像也在,修改后的镜像也在.
如何把镜像保存到本地呢?
docker save -o codingcoge.tar jjc:newubuntu
本地载入镜像:
sudo docker load --input codingcoge.tar
或者
sudo docker load < codingcoge.tar
移除镜像:
docker rmi jjc:newubuntu
如何创建一个新的镜像?
利用 Dockerfile 创建镜像
这个就没看了直接跳过了
如何推送镜像到仓库?
申请Docker hub 帐号 ,并创建仓库
我也没看直接跳过了
未完待续