From c057d68cecb8b7838816e77051d0f6994654ba5e Mon Sep 17 00:00:00 2001 From: Ruoyu Date: Wed, 17 Sep 2014 14:16:08 +0800 Subject: [PATCH 1/4] Fix permission denied error in ubuntu installation --- install/ubuntu144.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/ubuntu144.md b/install/ubuntu144.md index 671c52f..03347f3 100644 --- a/install/ubuntu144.md +++ b/install/ubuntu144.md @@ -15,7 +15,7 @@ $ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io ``` $ sudo apt-get install apt-transport-https $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 -$ sudo echo "deb https://get.docker.io/ubuntu docker main" > /etc/apt/sources.list.d/docker.list" +$ sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list" $ sudo apt-get update $ sudo apt-get install lxc-docker ``` From 910786014e9ea630de18121af9e22f12780fc752 Mon Sep 17 00:00:00 2001 From: Dreampuf Date: Wed, 17 Sep 2014 15:14:33 +0800 Subject: [PATCH 2/4] Fix a code block issue --- advanced_network/how_connect.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/advanced_network/how_connect.md b/advanced_network/how_connect.md index dd165dc..6873ab2 100644 --- a/advanced_network/how_connect.md +++ b/advanced_network/how_connect.md @@ -28,7 +28,8 @@ $ sudo docker run -i -t --rm --net=none base /bin/bash root@63f36fc01b5f:/# ``` 再开启一个新的终端,查找这个容器的进程id,然后创建它的命名空间,后面的ip netns会用到 -```$ sudo docker inspect -f '{{.State.Pid}}' 63f36fc01b5f +``` +$ sudo docker inspect -f '{{.State.Pid}}' 63f36fc01b5f 2778 $ pid=2778 $ sudo mkdir -p /var/run/netns @@ -57,4 +58,4 @@ $ sudo ip netns exec $pid ip route add default via 172.17.42.1 ``` 自此,你又可以像平常一样使用网络了 当你退出shell后,docker清空容器,容器的eth0随网络命名空间一起被摧毁,A 接口也被自动从docker0取消注册。不用其他命令,所有东西都被清理掉了! -注意ip netns exec命令,它可以让我们像root一样配置网络命名空间。但在容器内部无法使用,因为统一的安全策略,docker限制容器进程配置自己的网络。使用ip netns exec 可以让我们不用设置--privileged=true就可以完成一些可能带来危险的操作。 \ No newline at end of file +注意ip netns exec命令,它可以让我们像root一样配置网络命名空间。但在容器内部无法使用,因为统一的安全策略,docker限制容器进程配置自己的网络。使用ip netns exec 可以让我们不用设置--privileged=true就可以完成一些可能带来危险的操作。 From 4ad69eb79672dc409f60822a6df1375fe0ed8a31 Mon Sep 17 00:00:00 2001 From: Dreampuf Date: Wed, 17 Sep 2014 16:21:41 +0800 Subject: [PATCH 3/4] Fix a codeblock issue --- practice/tomcat.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/practice/tomcat.md b/practice/tomcat.md index 13ccb67..2fa76ef 100644 --- a/practice/tomcat.md +++ b/practice/tomcat.md @@ -51,14 +51,17 @@ CMD ["/usr/bin/supervisord"] ###tomcat/weblogic 镜像的使用 1)存储的使用 在启用docker run 的时候,使用 -v参数 --v, --volume=[] Bind mount a volume (e.g. from the host: -v /host:/container, from docker: -v /container) + + -v, --volume=[] Bind mount a volume (e.g. from the host: -v /host:/container, from docker: -v /container) + 将本地磁盘映射到虚拟机内部,它在主机和虚拟机容器之间是实时变化的,所以我们更新程序、上传代码只需要更新物理主机的目录就可以了,数据存储的详细介绍请参见本文第七小节 2)tomcat和weblogic集群的实现 tomcat只要开启多个容器即可 +``` docker run -d -v -p 204:22 -p 7003:8080 -v /home/data:/opt/data --name tm1 tomcat /usr/bin/supervisord docker run -d -v -p 205:22 -p 7004:8080 -v /home/data:/opt/data --name tm2 tomcat /usr/bin/supervisord docker run -d -v -p 206:22 -p 7005:8080 -v /home/data:/opt/data --name tm3 tomcat /usr/bin/supervisord - +``` 这里说一下weblogic的配置,大家知道weblogic有一个域的概念。如果要使用常规的administrator +node的方式部署,就需要在supervisord中分别写出administartor server和node server的启动脚本,这样做的优点是: * 可以使用weblogic的集群,同步等概念 @@ -67,8 +70,10 @@ docker run -d -v -p 206:22 -p 7005:8080 -v /home/data:/opt/data --name tm3 tomca * docker配置复杂了 * 没办法自动扩展集群的计算容量,如需添加节点,需要在administrator上先创建节点,然后再配置心的容器supervisor启动脚本,然后再启动容器 另外种方法是将所有的程序都安装在adminiserver上面,需要扩展的时候,启动多个节点即可,它的优点和缺点和上一中方法恰恰相反。(目前我使用这种方式来部署开发和测试环境) +``` docker run -d -v -p 204:22 -p 7001:7001 -v /home/data:/opt/data --name node1 weblogic /usr/bin/supervisord docker run -d -v -p 205:22 -p 7002:7001 -v /home/data:/opt/data --name node2 weblogic /usr/bin/supervisord docker run -d -v -p 206:22 -p 7003:7001 -v /home/data:/opt/data --name node3 weblogic /usr/bin/supervisord +``` 这样在前端使用nginx 来做负载均衡就可以完成配置了 From 2403f6e73d56d37857df78a37bc736f8e8ee4a66 Mon Sep 17 00:00:00 2001 From: Dreampuf Date: Wed, 17 Sep 2014 16:22:47 +0800 Subject: [PATCH 4/4] Fix codeblock issue --- practice/supervisor.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/practice/supervisor.md b/practice/supervisor.md index fff71f2..3045dc3 100644 --- a/practice/supervisor.md +++ b/practice/supervisor.md @@ -1,28 +1,38 @@ ##使用 Supervisor来管理进程 docker 容器在启动的时候开启单个进程,比如,一个ssh或则apache 的daemon服务。但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令方到一个启动脚本里面,启动的时候直接启动这个脚本,另外就是安装进程管理工具。. 本小节将使用进程管理工具supervisor来管理容器中的多个进程。使用Supervisor可以更好的控制、管理、重启我们希望运行的进程。在这里我们演示一下如何同时使用ssh和apache服务。 +``` ###dockerfile FROM ubuntu:13.04 MAINTAINER examples@docker.com RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list RUN apt-get update RUN apt-get upgrade -y +``` 安装supervisor 安装 ssh apache supervisor +``` RUN apt-get install -y openssh-server apache2 supervisor RUN mkdir -p /var/run/sshd RUN mkdir -p /var/log/supervisor +``` + 这里安装3个软件,还创建了2个用来允许ssh和supervisor的目录 -COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf + + COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf + 添加supervisor‘s的配置文件 添加配置文件到对应目录下面 映射端口,开启supervisor 使用dockerfile来映射指定的端口,使用cmd来启动supervisord -EXPOSE 22 80 -CMD ["/usr/bin/supervisord"] + + EXPOSE 22 80 + CMD ["/usr/bin/supervisord"] + 这里我们映射了22 和80端口,使用supervisord的可执行路径启动服务。 + ###supervisor配置文件内容 ``` [supervisord]