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,内容如下:

wiki2:
    image: 'nickstenning/mediawiki'
    ports:
        - "8880:80"
    links:
        - db:database
    volumes:
        - /data/wiki2:/data

db:
    image: "mysql"
    expose:
        - "3306"
    environment:
        - MYSQL_ROOT_PASSWORD=defaultpass
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

4.创建并启动mediawiki

$ docker-compose up -d
http://blog.csdn.net/lincyang/article/details/44835799

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

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

sudo docker commit 9ab6e234c9ba linc-wiki

sudo docker images REPOSITORY               TAG                 IMAGE ID            CREATED             VIRTUAL SIZE linc-wiki                latest              b5a1e34b01c2        14 seconds ago      689.7 MB

sudo docker export 9ab6e234c9ba > /home/linc/docker/images-bk/linc-wiki-export.tar
sudo docker save linc-wiki > ../images-bk/linc-wiki-save.tar

$ du -sh *
495M    linc-wiki-export.tar
672M    linc-wiki-save.tar

sudo cat /home/linc/docker/images-bk/linc-wiki-export.tar | sudo docker import - docker_hgweb
sudo docker load --input ../images-bk/linc-wiki-save.tar
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

/var/lib/mysql# ls
auto.cnf  ib_logfile0  ib_logfile1  ibdata1  ibtmp1  my_wiki  mysql  performance_schema
Docker实践7:容器与主机拷贝数据

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

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

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

从容器中像主机拷贝数据

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

# docker ps
CONTAINER ID        IMAGE                     COMMAND                CREATED             STATUS              PORTS                         NAMES        
a77a72ac178c        tutum/apache-php:latest   "/run.sh"              21 hours ago        Up 21 hours         0.0.0.0:8080->80/tcp          phpapache_phpapache_1
# docker-enter a77a72ac178c
root@a77a72ac178c:~# ls /var/www/html
index.php  logo.png
root@a77a72ac178c:~# exit
logout

# docker cp a77a72ac178c:/var/www/html /var/www/
# ls /var/www/
app  download  index.html
# ls /var/www/app/
index.php  logo.png
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

从主机向容器中拷贝数据

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

 inspect   Return low-level information on a container
  • 1

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

# docker inspect -f '{{.Id}}' a77a72ac178c
a77a72ac178c1e35708d2af446197c10239b0b1bd8932104578e334b83eb93a2
# cp docker/docker-start.sh /var/lib/docker/aufs/mnt/a77a72ac178c1e35708d2af446197c10239b0b1bd8932104578e334b83eb93a2/root/
# docker-enter a77a72ac178c
# pwd
/root
# ls
docker-start.sh

你可能感兴趣的:(docker实战文章收集)