Docker安装
- 查找镜像
- 拉取镜像
- 启动
- 初始化数据库
- 完成
查找镜像
- hub.docker.com 搜索
- 命令行
1 2 3 4 5
# 选择其中一个镜像(建议STARS最多的), 复制其`NAME`列 docker search superset # NAME DESCRIPTION STARS OFFICIAL AUTOMATED # amancevice/superset Superset on Debian+Python3 245 [OK] # ...
拉取镜像
这里选择了 amancevice/superset
镜像, 执行命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
docker pull amancevice/superset
# Using default tag: latest
# latest: Pulling from amancevice/superset
# 90fe46dd8199: Downloading
# 35a4f1977689: Download complete
# bbc37f14aded: Downloading
# 74e27dc593d4: Download complete
# 4352dcff7819: Download complete
# 1847e662e737: Download complete
# 11d40aa4a4d0: Download complete
# 423a225c2f8b: Download complete
# b3cdb3cfe4ca: Download complete
# d84ca76f5ef7: Download complete
# 29605419eaab: Download complete
# 0f21f36b180d: Download complete
# 3e3aea33f6ef: Download complete
# latest: Pulling from amancevice/superset
# 90fe46dd8199: Pull complete
# 35a4f1977689: Pull complete
# bbc37f14aded: Pull complete
# 74e27dc593d4: Pull complete
# 4352dcff7819: Pull complete
# 1847e662e737: Pull complete
# 11d40aa4a4d0: Pull complete
# 423a225c2f8b: Pull complete
# b3cdb3cfe4ca: Pull complete
# d84ca76f5ef7: Pull complete
# 29605419eaab: Pull complete
# 0f21f36b180d: Pull complete
# 3e3aea33f6ef: Pull complete
# Digest: sha256:1f7e88850066141a60feac844834deeee25fe0d8ca8e612144e4c83ca0648e84
# Status: Downloaded newer image for amancevice/superset:latest
# docker.io/amancevice/superset:latest
启动
1
2
# docker run --rm -d -p <本机端口>:<容器端口>/<协议类型> <镜像名称>:<版本>
docker run --rm -d -p 8088:8088/tcp amancevice/superset:latest
查看容器ID
1
2
3
docker ps -a
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# f39bfa6ed149 amancevice/superset:latest "gunicorn superset.a…" 4 minutes ago Up 4 minutes (healthy) 0.0.0.0:8088->8088/tcp hopeful_leakey
如果容器ID存在, 证明启动成功, 使用浏览器打开 http://localhost:8088
初始化数据库
获取容器ID:
1
2
3
4
5
6
# 设置镜像名称变量
IMAGE=amancevice/superset
# 获取镜像ID
CID=`docker ps | grep $IMAGE | awk '{print $1}'`
# 初始化系统并创建管理员
docker exec -it $CID superset-init
完成
输入刚刚执行 superset-init
时候的账户密码
映射配置
此步骤是为完成服务数据不丢失和个性化配置, 若不挂载数据卷, 数据将会在容器
重启或停止后丢失.
根据官方文档, 映射的路径有两个, 任意其中一个都可以, 将容器内 /etc/superset
映射到宿主机(本机)文件夹, 以宿主机的目录 ~/superset
为例, 需要做两件事
- 创建superset_config.py配置文件
- 启动时映射目录
配置文件
配置项可以通过 superset 官方文档 查阅修改, 这里只修改一个配置 SQLALCHEMY_DATABASE_URI
, 该配置是服务数据库的连接配置, 可以根据需要自行调整.
因/etc/superset
与 ~/superset
是对应关系, 所以将配置 superset_config.py
写入宿主机 ~/superset
下:
1
SQLALCHEMY_DATABASE_URI = 'sqlite:////etc/superset/superset.db'
挂载数据卷
1
2
3
4
5
6
7
# 创建宿主机的目录
cd ~ && mkdir superset
# 创建 superset_config.py 配置文件
echo "SQLALCHEMY_DATABASE_URI = 'sqlite:////etc/superset/superset.db'" > ~/superset/superset_config.py
# 启动时映射目录, 对接数据卷
# docker run --rm -d -p <本机端口>:<容器端口>/<协议类型> -v <宿主机路径/本机路径>:<镜像年路径> <镜像名称>:<版本>
docker run --rm -d -p 8088:8088/tcp -v ~/superset:/etc/superset amancevice/superset:latest
按照上述例子启动后, 容器反复重启数据均不会丢失, 若是第一次挂载数据卷, 此时在宿主机应该出现了 ~/superset/superset.db
文件.
使用 navicat
或命令行工具即可访问内部数据
综合例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 预设参数
IMAGE=amancevice/superset
PORT=8088
# 自动安装
docker pull $IMAGE
# 是否已经存在
CID=`docker ps | grep $IMAGE | awk '{print $1}'`
# 杀掉存在的容器
docker kill $CID
# 启动容器
docker run --rm -d -p $PORT:8088/tcp $IMAGE
# 执行初始化
CID=`docker ps | grep $IMAGE | awk '{print $1}'`
# 这里需要输入管理员账号密码
docker exec -it $CID superset-init
端口占用
- port is already allocated: 端口占用, 若上次启动的容器不需要使用, 则执行下面命令停止
1
docker ps | grep amancevice/superset | awk '{print $1}' | xargs docker kill