跳转至

附录四 Docker 使用及自建repo

Docker已经越来越流行了(IaaS平台开始支持它,PaaS平台也开始支持它),不介绍它总感觉过不去。

它是基于LXC的容器类型虚拟化技术,从实现上说更类似于chroot,用户空间的信息被很好隔离的同时,又实现了网络相关的分离。它取代LXC的原因,我想是因为其REPO非常丰富,操作上类似git。

另外,它有提供Windows/MacOSX的客户端 boot2docker。

中文入门手册请参考 Docker中文指南 ,另外它有一个WebUI shipyard

官方repo https://registry.hub.docker.com/

镜像操作

运行简单命令

1
docker run ubuntu /bin/echo "Hello world!"

运行交互shell

1
docker run -t -i ubuntu /bin/bash

运行Django程序

1
docker run -d -P training/webapp python app.py

获取container信息

1
docker ps

获取container内部信息

1
docker inspect -f '{{ .NetworkSettings.IPAddress }}' my_container

获取container历史

1
docker log my_container

commit/save/load

:::{note}

保存

只有commit,对docker做的修改才会保存,形如docker run centos yum install -y nmap不会保存。

:::

1
2
3
4
docker images
docker commit $image_id$ myimage
docker save myimage > myimage.tar
docker load < myimage.tar

Registry操作

登录,默认为DockerHub

1
docker login

创建Registry

参考 https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-docker-registry-on-ubuntu-14-04 以及 http://blog.docker.com/2013/07/how-to-use-your-own-registry/

1
2
3
4
5
6
7
# 获取docker-registry,从github或者直接 pip install docker-registry
# git clone https://github.com/dotcloud/docker-registry.git
# cd docker-registry
# cp config_sample.yml config.yml
# pip install -r requirements.txt
# gunicorn --access-logfile - --log-level debug --debug
-b 0.0.0.0:5000 -w 1 wsgi:application

push/pull

1
2
3
# docker pull ubuntu
# docker tag ubuntu localhost:5000/ubuntu
# docker push localhost:5000/ubuntu