docker实战文章收集

http://blog.csdn.net/lincyang/article/details/44588397

compose是用来在docker中定义和运行复杂应用的小工具,比如在一个文件中定义多个容器,只用一行命令就可以让一切就绪并运行。它的功能与我们所熟知的fig相似,换句话说,compose是fig的替代产品,fig就这样退出docker的历史舞台了。

compose编写mediawiki的docker-compose.yml 
首先编写compose的配置文件,语法与fig类似,文件名为docker-compose.yml,内容如下:

<code class="hljs haml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">wiki2:
    image: 'nickstenning/mediawiki'
    ports:
        -<span class="ruby" style="box-sizing: border-box;"> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"8880:80"</span>
</span>    links:
        -<span class="ruby" style="box-sizing: border-box;"> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">db:</span>database
</span>    volumes:
        -<span class="ruby" style="box-sizing: border-box;"> /data/<span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">wiki2:</span>/data
</span>
db:
    image: "mysql"
    expose:
        -<span class="ruby" style="box-sizing: border-box;"> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"3306"</span>
</span>    environment:
        -<span class="ruby" style="box-sizing: border-box;"> <span class="hljs-constant" style="box-sizing: border-box;">MYSQL_ROOT_PASSWORD</span>=defaultpass</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li></ul>

4.创建并启动mediawiki

<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">$ docker<span class="hljs-attribute" style="box-sizing: border-box;">-compose</span> up <span class="hljs-attribute" style="box-sizing: border-box;">-d</span></code>
http://blog.csdn.net/lincyang/article/details/44835799

第一种情况,挂载host目录的,比如之前的hg-server。备份就很简单,直接把那些hg源码目录在host做备份即可。

第二种情况,需要在container中安装新软件。用export或者save命令吧。

<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">sudo docker commit <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>ab6e234c9ba linc<span class="hljs-attribute" style="box-sizing: border-box;">-wiki</span>

sudo docker images REPOSITORY               <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">TAG</span>                 IMAGE ID            CREATED             VIRTUAL SIZE linc<span class="hljs-attribute" style="box-sizing: border-box;">-wiki</span>                latest              b5a1e34b01c2        <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span> seconds ago      <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">689.7</span> MB

sudo docker export <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>ab6e234c9ba <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span> /home/linc/docker/images<span class="hljs-attribute" style="box-sizing: border-box;">-bk</span>/linc<span class="hljs-attribute" style="box-sizing: border-box;">-wiki</span><span class="hljs-attribute" style="box-sizing: border-box;">-export</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>tar
sudo docker save linc<span class="hljs-attribute" style="box-sizing: border-box;">-wiki</span> <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">..</span>/images<span class="hljs-attribute" style="box-sizing: border-box;">-bk</span>/linc<span class="hljs-attribute" style="box-sizing: border-box;">-wiki</span><span class="hljs-attribute" style="box-sizing: border-box;">-save</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>tar

$ du <span class="hljs-attribute" style="box-sizing: border-box;">-sh</span> <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">*</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">495</span>M    linc<span class="hljs-attribute" style="box-sizing: border-box;">-wiki</span><span class="hljs-attribute" style="box-sizing: border-box;">-export</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>tar
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">672</span>M    linc<span class="hljs-attribute" style="box-sizing: border-box;">-wiki</span><span class="hljs-attribute" style="box-sizing: border-box;">-save</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>tar

sudo cat /home/linc/docker/images<span class="hljs-attribute" style="box-sizing: border-box;">-bk</span>/linc<span class="hljs-attribute" style="box-sizing: border-box;">-wiki</span><span class="hljs-attribute" style="box-sizing: border-box;">-export</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>tar <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">|</span> sudo docker <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> docker_hgweb
sudo docker load <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">--</span>input <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">..</span>/images<span class="hljs-attribute" style="box-sizing: border-box;">-bk</span>/linc<span class="hljs-attribute" style="box-sizing: border-box;">-wiki</span><span class="hljs-attribute" style="box-sizing: border-box;">-save</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>tar</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul>

第三种情况,mysql中的数据哪里去啦? 
这个问题困扰我几天了。就拿部署的mediawiki说吧,没有将数据文件链接到host中,而是放到了/var/lib/mysql中,如下:

<code class="hljs vbnet has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">/var/<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">lib</span>/mysql<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># ls</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">auto</span>.cnf  ib_logfile0  ib_logfile1  ibdata1  ibtmp1  my_wiki  mysql  performance_schema</code>
Docker实践7:容器与主机拷贝数据

http://blog.csdn.net/lincyang/article/details/44176569

Docker实践2中使用-v参数将主机与容器中相关目录联系在一起(挂载),所以我们可以用这个通道将想要互相拷贝的数据放入其中,这样就可以用cp命令来复制文件了。

除了这个办法,我们还可以分别用不同的命令来拷贝数据。

从容器中像主机拷贝数据

docker提供了cp命令,用法如下:

<code class="hljs perl has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># docker ps</span>
CONTAINER ID        IMAGE                     COMMAND                CREATED             STATUS              PORTS                         NAMES        
a77a72ac178c        tutum/apache-php:latest   <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"/run.sh"</span>              <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">21</span> hours ago        Up <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">21</span> hours         <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8080</span>-><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">80</span>/tcp          phpapache_phpapache_1
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># docker-enter a77a72ac178c</span>
root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@a77a72ac178c</span>:~<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># ls /var/www/html</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">index</span>.php  logo.png
root<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@a77a72ac178c</span>:~<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># exit</span>
logout

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># docker cp a77a72ac178c:/var/www/html /var/www/</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># ls /var/www/</span>
app  download  <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">index</span>.html
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># ls /var/www/app/</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">index</span>.php  logo.png
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li></ul>

从主机向容器中拷贝数据

这里要使用一个docker提供的神奇通道来完成主机向容器的数据传输。 
首先要用docker inspect方法获得容器的完整id,

<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> inspect   <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Return</span> low<span class="hljs-attribute" style="box-sizing: border-box;">-level</span> information <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">on</span> a container</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

然后用/var/lib/docker/aufs/mnt/通道来完成拷贝。 
举例如下:

<code class="hljs vala has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># docker inspect -f '{{.Id}}' a77a72ac178c</span>
a77a72ac178c1e35708d2af446197c10239b0b1bd8932104578e334b83eb93a2
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># cp docker/docker-start.sh /var/lib/docker/aufs/mnt/a77a72ac178c1e35708d2af446197c10239b0b1bd8932104578e334b83eb93a2/root/</span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># docker-enter a77a72ac178c</span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># pwd</span>
/root
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># ls</span>
docker-start.sh</code>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值