Docker
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
官方的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!