这篇博客使用 Docker 运行 MySQL,Elasticsearch 服务

MySQL

使用以下命令运行一个简单的 MySQL 实例:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

docker run命令用于创建一个新容器并执行一条命令。可以使用命令docker ps -a查看所有的容器。其中--name选项指定了容器的名字为some-mysql-e选项指定了容器的环境变量MYSQL_ROOT_PASSWORDmy-secret-pw,即这个 MySQL 实例的超级用户密码。tag用于指定 MySQL 实例的版本,如5.78.0

你也可以使用docker stack deploy或者docker-compose

stack.yml

version: '3.1'

services:

  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

执行命令docker stack deploy -c stack.yml mysql或者docker-compose -f stack.yml up启动服务。

adminer 是一个数据库管理工具。容器初始化完成后,访问 http://localhost:8080 ,你可以在 adminer 提供的图形界面连接并管理你的 MySQL 数据库。

你还可以在environment中设置数据库MYSQL_DATABASE、用户名MYSQL_USER、密码MYSQL_PASSWORD等其他环境变量。

Elasticsearch

创建自定义网络:

docker network create somenetwork

在 Docker 中,同一个网络下不同容器中运行的服务可以相互通信,比如 Kibana

运行 Elasticsearch 实例:

docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag

其中选项--net指定了容器所属的网络,选项-p指定了服务运行的端口。容器初始化完成后可以访问http://localhost:9200/?pretty或者使用命令curl http://localhost:9200/?pretty进行验证。