
本文共 3387 字,大约阅读时间需要 11 分钟。
Docker容器持久化及WordPress搭建个人博客系统
一、Docker容器数据的持久化
数据是软件的生命,即使容器删了,数据也不能丢,所以我们要实现数据的持久化。
当我们使用以下命令启动容器时:docker run -d -e MYSQL_ROOT_PASSWORD=root 容器ID
在mysql里创建数据库后,删除了容器后,数据库也不复存在了。
为解决这个问题,Docker为我们提供了三个不同的方式来实现数据的持久化:Volume、bind mount、tmpfs。其中,Volume是最佳选择。使用Volume挂载卷
Volume是存在一个或多个容器中特定文件或文件夹,这个目录能够独立于联合文件系统的形式在宿主机中存在,并为数据的共享和持久提供便利。Volume能在不同的容器之间共享和重用,且对Volume中的数据操作不会影响到镜像本身。
原理:将文件从容器中挂载到外面,可以理解为在外面创建一个文件的快捷方式。例如,将mysql存数据的文件 /var/lib/mysql
挂载到centos中。
/var/lib/docker/volumes
存放Volume挂载卷。 Volume是通过docker volume
进行管理,如创建、删除等操作。 Docker Volume命令
docker volume ls
查看所有的挂载卷,默认名字是一串无规则的数字。
docker volume rm 挂载卷名
删除一个挂载卷。
docker volume rm -f $(docker volume ls -q)
删除所有能查到的不在使用的挂载卷。
注意:使用中的挂载卷是使用不了的。MySQL使用Volume
mysql默认是有Volume的,挂载卷名是一串无规则的数字:
docker run -d -v mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql镜像ID
在mysql里创建一个test的数据库,然后删除容器,但不删除挂载卷。再启动一个mysql时,test数据库仍然存在。
二、实现WordPress搭建个人博客系统
WordPress是帮助客户打造个人网站的公司。拉取WordPress镜像,WordPress里有一套完整的个人博客系统。
部署
拉取WordPress镜像
在docker hub查找WordPress的拉取命令:
docker pull wordpress
并查看如何使用WordPress。
WordPress连接数据库
WordPress需要连接mysql作为个人博客系统的数据库,并且要创建一个WordPress数据库。
docker run -d --name mysql -v mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql镜像ID
启动一个mysql数据库。
docker run -d -e WORDPRESS_DB_HOST=mysql:3306 --link mysql -p 8080:80 wordpress镜像ID
访问浏览器输入 192.168.160.10:8080
访问并注册登录。
三、Dockerfile实现自定义镜像
Dockerfile的作用
当我们正常启动容器并导入数据时,步骤比较繁琐,使用Dockerfile可以扩展基础镜像,将其作为我们的自定义镜像。以mysql为例:正常启动步骤包括启动容器、登录mysql、导入数据文件、设置远程连接权限。
自定义一个MySQL镜像
准备需要的文件
#1、设置base imageFROM mysql:5.7#2、设置免密码登录ENV MYSQL_ALLOW_EMPTY_PASSWORD=yes#3、将数据文件拷贝到镜像中COPY easybuy.sql /mysql/easybuy.sql#4、将配置远程连接权限的文件拷贝到镜像中COPY privileges.sql /mysql/privileges.sql#5、将启动文件拷贝到镜像中COPY setup.sh /mysql/setup.sh#6、设置容器启动时执行的命令CMD ["sh","/mysql/setup.sh"]
- 创建远程连接权限文件(为.sql文件),并放在同一目录下:
- 创建启动文件(shell脚本)
setup.sh
: - 编写Dockerfile文件。
- Dockerfile在基础镜像上加入需要的文件,封装为新的镜像。
- docker run运行容器时,实质在执行setup.sh文件,setup文件里做导入数据库,设置远程连接权限这些工作。
use mysql;GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;flush privileges;
#!/bin/bashset -eecho `service mysql status` #查看mysql容器启动状态echo '1、启动mysql'service mysql startsleep 3echo `service mysql status` #再次查看mysql状态echo '2、开始导入数据'mysql
构建镜像
docker build -t dean/mysql-easybuy:1.0
启动自定义镜像
docker run -d -e MYSQL_ROOT_PASSWORD=root 镜像ID
Dockerfile的实际执行过程
四、Docker Compose自动化编排个人博客系统服务
Docker Compose是个啥
Docker Compose是Docker中的一个工具。多容器的服务体系非常麻烦,需要我们一个一个的取启动、停止管理容器。Docker Compose可以起到一个容器管家的作用,多个容器组成一个整体,能够实现同时启动,同时停止。
Docker Compose使用
下载 Docker Compose
检查是否安装:
docker-compose --version
权限不足时:
chmod +x /usr/local/bin/docker-compose
未安装时:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
创建 docker-compose.yml文件
在wordpress文件夹里创建 docker-compose.yml:
version: "3"services: wordpress: image: wordpress ports: - "8080:80" links: - mysql environment: WORDPRESS_DB_HOST: mysql WORDPRESS_DB_PASSWORD: root mysql: image: mysql:5.7 ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: wordpress volumes: - wordpress-data:/var/lib/mysqlvolumes: wordpress-data:
启动 Docker Compose
docker-compose up -d
访问浏览器输入 192.168.160.10:8080
已注册登录。
发表评论
最新留言
关于作者
