本文将使用IBM s390x架构的服务器使用docker搭建一个wordpress博客网站。

获取

可以在linuxone.cloud.marist.edu中获取免费的s390x架构的Virtual Servers的体验资格。有效期最长4个月,但只批给了我2个月,原因未知。

获取之后,就可以用ssh配合私钥登录服务器了。默认的用户名是linux1。

在登录之后,可以执行

sudo passwd root
su root

来为root用户设置密码,以及切换到root用户。

另一个需要注意的是,这台服务器是s390x架构的,和常见的amd64/arm架构都不一样,兼容的软件包较少。

安装docker

直接执行快捷安装脚本。

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

使用docker安装wordpress

首先pull下对应的镜像

docker pull wordpress
docker pull mariadb

其中,mariadb是mysql的替代品,与mysql完全兼容。

docker run -itd --name wp_database -e MYSQL_ROOT_PASSWORD=rootpassword -e MYSQL_DATABASE=wordpress -p 13306:3306 mariadb
docker run -itd --name wordpress --link wp_database -p 8080:80 wordpress

使用docker运行mariadb镜像,其容器命名为wp_database,并设置mysql的数据库root密码、数据库名称,将主机的13306映射到容器的3306端口。

使用docker运行wordpress镜像,其容器命名为wordpress,并通过docker提供的link方式与数据库容器连接,以及将主机的8080端口映射到80端口。

之后,访问对应的IP:8080就可以开始wordpress的设置了。

数据库连接信息

  • 数据库名 wordpress
  • 用户名root
  • 密码 rootpassword(刚刚在参数中指定的)
  • 数据库主机 wp_database

在这里,涉及到了docker间容器的通信。docker容器有3种通信方式,分别是

  • 通过使用容器的ip地址来通信
    • docker inspect wp_database | grep IPAddress
    • 这样会导致ip地址的硬编码,不方便迁移,并且容器重启后ip地址会改变
  • 通过docker的link机制可以通过一个name来和另一个容器通信,link机制方便了容器去发现其它的容器并且可以安全的传递一些连接信息给其它的容器
  • 通过宿主机的ip加上容器暴露出的端口号来通信
    • docker运行的数据库使用DBeaver可以正常使用,但连不上wordpress,原因未知

之后,就可以正常使用wordpress了。