Docker
基于go语言、遵从Apache协议、操作系统虚拟化、复用本地主机的操作系统(区别于过往的硬件层面实现)
image镜像
梦中梦
镜像可容纳操作系统(系统里面包括Apache和程序),操作系统又可以安装Docker,无限循环套娃…想起盗梦空间的梦中梦
可以通过查看Docker安装的镜像辨别我是在第几层(id、tag)
查看镜像层数
查看image命令
docker image ls
载入镜像层
ok进入镜像
sudo docker run -t -i ubuntu:12.04 /bin/bash
其中image的id很重要,我理解为唯一标识符
我进入的id是ac565b40b68c
跳出镜像
如何处理呢,难道像盗梦中跳楼才能出来吗?
没错,只要我跳的够快,就能跳出镜像…
命令exit,快捷键ctrl+d
exit
添加评论到相应的镜像id
添加评论成功返回id
sudo docker commit -m "我好像做了个梦" ac565b40b68c ouruser/sinatra:v2
再次进入镜像内的容器(程序)
docker run -t -i
sudo docker run -t -i ouruser/sinatra:v2 /bin/bash
container容器
依赖于镜像环境,是镜像创建运行的实例
容器间相互分离(启动、开始、停止、删除)
类似进程(创建、就绪、运行、阻塞、死亡)
进入容器
查看运行的容器
docker ps
attach命令
进入正在运行的docker的names
docker run -idt ubuntu:12.04
导入导出容器
export导出
先查看运行的容器实例
然后导出对应的容器(使用id)
sudo docker export e379e4c23b8c > yma16.tar
import导入
docker import - repository:tag
cat yma16.tar | docker import - test/ubuntu:v1.0
docker rm删除容器
启动容器
docker run
sudo docker run ubuntu:12.04
docker start可以启动已经终止的容器
守护态运行容器
守护态(Daemonized)
sudo docker run -d
终止容器
docker stop
通过端口终止
sudo docker stop e470f1cd84fa
reposito仓库
主要存放镜像,服务器管理仓库的具体服务器,一个服务器有多个仓库,一个厂库有多个镜像
Hub
有多个镜像
无需登录就可以查询镜像并下载
docker search
docker search centos
docker pull
下载镜像
sudo docker pull centos
docker push
注册登录账号后上传镜像
私有仓库
docker-registry工具创建私有的镜像厂库
安装运行docker-regitry
ubuntu:
$ sudo apt-get install -y build-essential python-dev libevent-dev python-pip liblzma-dev $ sudo pip install docker-registry
Centos:
$ sudo yum install -y python-devel libevent-devel python-pip gcc xz-devel $ sudo python-pip install docker-registry
clone仓库文件进行安装
$ sudo apt-get install build-essential python-dev libevent-dev python-pip libssl-dev liblzma-dev libffi-dev $ git clone https://github.com/docker/docker-registry.git $ cd docker-registry $ sudo python setup.py install
修改配置文件到本地仓库路径
cp config/config_sample.yml config/config.yml
启动 Web 服务
sudo gunicorn -c contrib/gunicorn.py docker_registry.wsgi:application
docker tag 来标记一个镜像
sudo docker tag id 自定义tag
sudo docker tag 380443e9701e 192.168.100.91:5000/yma16_file
修改成功
docker push 上传标记的镜像
sudo docker push 192.168.100.91:22/yma16_file
curl 查看仓库中的镜像
curl http://192.168.100.91:5000/v1/search
我的web服务没有打开
配置文件
利用Docker 中 Registry 的模板(flavor)
config_sample.yml文件
common
:基础配置local
:存储数据到本地文件系统s3
:存储数据到 AWS S3 中dev
:使用 local 模板的基本配置test
:单元测试使用prod
:生产环境配置(基本上跟s3配置类似)gcs
:存储数据到 Google 的云存储swift
:存储数据到 OpenStack Swift 服务glance
:存储数据到 OpenStack Glance 服务,本地文件系统为后备glance-swift
:存储数据到 OpenStack Glance 服务,Swift 为后备elliptics
:存储数据到 Elliptics key/value 存储
1024, 致敬这世界的程序员,respect!