Dockerize wordpress

试图dockerise wordpress我找出这个scenenario:

2个数据容器,一个用于数据库(bbdd),另一个用于wordpress文件(wordpress):

sudo docker create -v /var/lib/mysql --name bbdd ubuntu:trusty /bin/true sudo docker create -v /var/www/html --name wordpress ubuntu:trusty /bin/true 

然后,我需要一个容器为MySQL,所以我使用从docker集线器的正式的MySQL图像 ,还从第一个数据容器的卷/ var / lib / mysql:

 docker run --volumes-from bbdd --name mysql -e MYSQL_ROOT_PASSWORD="xxxx" -d mysql:5.6 

然后,我需要一个容器的Apache / PHP的,所以我使用官方WordPress图像从docker集线器,也从第一个数据容器/ var / lib / mysql的:

 docker run --volumes-from wordpress --name apache --link mysql:mysql -d -p 8080:80 wordpress:4.1.2-apache 

我从docker文档了解到,如果我不删除数据容器,我会坚持下去。
但是, 如果我停止并删除正在运行的容器(apache和mysql)并用最后的命令重新创build它们,数据就会丢失

 docker run --volumes-from bbdd --name mysql -e MYSQL_ROOT_PASSWORD="xxxx" -d mysql:5.6 docker run --volumes-from wordpress --name apache --link mysql:mysql -d -p 8080:80 wordpress:4.1.2-apache 

但是,如果我创build没有数据容器的容器,它似乎工作如我所料:

 docker run -v /home/juanda/project/mysql:/var/lib/mysql --name mysql -e MYSQL_ROOT_PASSWORD="juanda" -d mysql:5.6 docker run -v /home/juanda/project/wordpress:/var/www/html --name apache --link mysql:mysql -d -p 8080:80 wordpress:4.1.2-apache 

您需要运行一次数据容器才能使其持久:

 sudo docker run -v /var/lib/mysql --name bbdd ubuntu:trusty /bin/true sudo docker run -v /var/www/html --name wordpress ubuntu:trusty /bin/true 

这是这里描述的Docker的一个老bug。 如果您的Docker版本较旧,您可能会受到影响。

在一个非常简化的testing案例中,这看起来像在创build和安装数据卷容器中所宣传和logging的那样工作:

 prologic@daisy Thu Apr 30 08:18:45 ~ $ docker create -v /test --name data busybox /vin/true Unable to find image 'busybox:latest' locally latest: Pulling from busybox cf2616975b4a: Pull complete 6ce2e90b0bc7: Pull complete 8c2e06607696: Already exists busybox:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security. Digest: sha256:38a203e1986cf79639cfb9b2e1d6e773de84002feea2d4eb006b52004ee8502d Status: Downloaded newer image for busybox:latest 6f5fc1d2e33654867cff8ffdb60c5765ced4b7128441ae2c6be24b68fb6454ef prologic@daisy Thu Apr 30 08:20:53 ~ $ docker run -i -t --rm --volumes-from data crux /bin/bash bash-4.3# cd /test bash-4.3# ls bash-4.3# touch foo bash-4.3# echo "Hello World" >> foo bash-4.3# cat foo Hello World bash-4.3# exit prologic@daisy Thu Apr 30 08:21:20 ~ $ docker run -i -t --rm --volumes-from data crux /bin/bash bash-4.3# cd /test bash-4.3# ls foo bash-4.3# cat foo Hello World bash-4.3# exit 

请注意 ,我删除了附加的容器,以确保永久性数据卷容器的数据保持完整。

如果您运行以下操作,数据卷容器和数据只会消失:

 docker rm -v data 

注意:实际删除卷的-v选项。

请参阅( 特别是-v/--volumes选项 ):

$ docker rm -h

用法:docker rm [OPTIONS] CONTAINER [CONTAINER …]

删除一个或多个容器

-f,–force = false强制删除正在运行的容器(使用SIGKILL)–help = false打印用法-l,–link = false删除指定的链接-v,–volumes = false删除关联的卷与容器

供参考我正在运行:

 prologic@daisy Thu Apr 30 08:24:51 ~ $ docker version Client version: 1.6.0 Client API version: 1.18 Go version (client): go1.3.3 Git commit (client): 47496519da OS/Arch (client): linux/amd64 Server version: 1.6.0 Server API version: 1.18 Go version (server): go1.3.3 Git commit (server): 47496519da OS/Arch (server): linux/amd64 

更新:一个快速的例子( 你可以在生产中使用 )的Dockerized的Wordpress设置与完整的托pipe支持,请参阅: https ://gist.github.com/prologic/b5525a50bb4d867d84a2