海运的博客

Docker守护进程管理器s6/Supervisor

发布时间:January 25, 2015 // 分类:Docker // No Comments

安装s6及依赖,注意make版本一定要4.0以上.

wget http://skarnet.org/software/skalibs/skalibs-2.2.0.0.tar.gz
tar zxvf skalibs-2.2.0.0.tar.gz
cd skalibs-2.2.0.0
./configure && make && make install
wget http://skarnet.org/software/execline/execline-2.0.1.1.tar.gz
tar zxvf execline-2.0.1.1.tar.gz
cd execline-2.0.1.1
./configure && make && make install
wget http://skarnet.org/software/s6/s6-2.0.1.0.tar.gz
tar zxvf s6-2.0.1.0.tar.gz
cd s6-2.0.1.0
./configure && make && make install

s6启动时会依次执行目录下run命令:

mkdir -p /etc/s6/nginx/
mkdir -p /etc/s6/.s6-svscan
#启动命令
cat > /etc/s6/nginx/run << EOF
#!/bin/bash
nginx -c /etc/nginx/nginx.conf
EOF
chmod +x /etc/s6/nginx/run
#关闭命令
cat > /etc/s6/nginx/finish << EOF
#!/bin/bash
kill  `cat /var/run/nginx.pid`
EOF
chmod +x /etc/s6/nginx/finish

注意程序要以foreground非守护方式启动,如nginx要在配置文件添加:

daemon off;

当docker容器关闭时s6执行.s6-svscan/finish:

cat > /etc/s6/.s6-svscan/finish << EOF
#!/bin/bash
for file in /etc/s6/*/finish; do
   $file
done

for service in /etc/s6/* ; do
   s6-svwait -d $service
done
EOF
chmod +x /etc/s6/.s6-svscan/finish

docker容器启动时执行命令:

s6-svscan /etc/s6/
#-c 最大service数
#-t 重新扫描间隔,如果程序关闭会自动重启,毫秒,默认5秒

进程控制,重启:

s6-svc -t /etc/s6/nginx

关闭不重启:

s6-svc -d /etc/s6/nginx

更多:http://skarnet.org/software/s6/s6-svc.html
参考:
http://blog.tutum.co/2014/12/02/docker-and-s6-my-new-favorite-process-supervisor/
http://kfei.logdown.com/posts/245469-using-s6-as-the-init-process-for-muliple-service-docker-container

Docker基础使用

发布时间:September 24, 2014 // 分类:Docker // No Comments

Centos下直接安装:

yum install docker-io
/etc/init.d/docker start

从官网下载镜像:

docker pull centos:centos6

也可使用Openvz模板制作镜像:

wget http://download.openvz.org/template/precreated/suse-13.1-x86_64-minimal.tar.gz
cat suse-13.1-x86_64-minimal.tar.gz|docker import - suse:13.1

列出所有镜像:

docker images

从指定镜像生成一个容器并执行命令:

docker run --name test -i -t centos:centos6 /bin/bash
#指定name,后续可使用docker start 容器名称启动
#-p <host_port:contain_port>
#-P随机端口
#-v <host_path:container_path>

查看所有的容器,包含已退出的:

docker ps -a

重新启动已退出的容器:

docker start <容器ID>/<容器名称>
#启动并attach
docker start -ai <容器ID>/<容器名称>

attach运行的容器:

docker attach <容器ID>

将指定容器保存为镜像:

docker.io commit <容器ID> <镜像名字>

保存镜像:

docker save debian:7.5 > debian.tar

导入镜像:

docker load < debian.tar

导出导入容器:
导入镜像:

docker export <容器ID> > export.tar  
cat export.tar | docker import - export:latest 

删除docker容器:

docker rm <容器ID>
#删除所有,先停止所有docker容器
docker stop `docker ps -a -q`
docker rm `docker ps -a -q`

删除镜像IMAGE:

docker rmi <镜像id>
#删除所有
docker rmi `docker images -q`

容器运行中文件操作:

docker inspect -f '{{.Id}}' <容器id或name>
ls /var/lib/docker/devicemapper/mnt/<上面命令返回的id>/rootfs/etc/

执行运行中容器命令,如进入bash:

docker exec -it <容器id或name> bash

进入运行中容器:

PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>)
nsenter --target $PID --mount --uts --ipc --net --pid

运行中容器使用iptables端口眏射:

#获取容器IP
docker inspect <容器id或name>|grep IPAddress
#DNAT
iptables -t nat -A PREROUTING -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.7:80

更详细的资料:http://blog.tankywoo.com/docker/2014/05/08/docker-4-summary.html
自建私有仓库:http://www.vpsee.com/2013/11/build-your-own-docker-private-regsitry-service/

分类
最新文章
最近回复
  • 海运: 你是编译不成功呢?还是编译后不能运行呢?还是运行后不能访问web界面呢?
  • 白墨: 可能不清楚就是编译安装后启动后访问不了web界面
  • 白墨: 你好博主按照你的教程是编译安装不了的,在centos7版本下,我在开源镜像站下载centos7...
  • 感谢: 好的谢谢。
  • 海运: 可在github选择指定的branch或tag查看Makefile文件内核版本git指定bra...
  • 感谢: 请问一下“git checkout 20181012”这条命令是什么意思,没有google到。...
  • 海运: 抱歉,我没用蓝牙,现在N1在稳定挂PT中,没法折腾了。
  • hxhw: 大神能弄一個N1盒子開啟藍芽的教程不?我目前的藍芽識別不了似的(BD Address: 00:...
  • 海运: 抱歉,没用过wireguard,不了解具体情况。看错误提示是创建虚拟网卡的类型wireguar...
  • zhu tie: 本人小白我想在n1上装wireguard,安装后错误信息如下:wg-quick up wg0[...
页面执行耗时:0.0836秒。-->