基本用法
1.打開linus中的命令行.
-t: 在容器內(nèi)指定一個(gè)終端
-i:允許對容器進(jìn)行標(biāo)準(zhǔn)輸入進(jìn)行交互
runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash
1.查詢正在運(yùn)行的容器
$ docker ps
1.在linux中安裝python
首先在D盤中新建一個(gè)ubuntu_python文件夾.之后映射到容器中的文件.
$ docker run -it --name ubuntu_python -v /docker_python:/home/python --# net=host 93fd78260bd1 /bin/bash
$ cd home/python //進(jìn)入到指定目錄
$ apt update //更新ubuntu系統(tǒng)
$ apt install python3 //安裝python3
坑: 映射宿主文件夾與docker文件夾會報(bào)錯(cuò)
映射的時(shí)候會報(bào)錯(cuò)活烙。
C:\Users\CC> docker run -d -p 5009:5009 -v D:\host_mnt\data\sqlite:/home/superset amancevice/superset:0.28.1
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: invalid volume specification: '/host_mnt/d/host_mnt/data/sqlite:/home/superset': invalid mount config for type "bind": invalid mount path: '/home/superset' mount path must be absolute.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
此時(shí)需要打開docker setting里面的shared Drives選項(xiàng)框尘惧。點(diǎn)擊Reset credentials隔缀。
然后再重啟powershell眉枕,執(zhí)行同樣的命令就可以了歌径。
PS C:\Users\CC> docker run -d -p 5009:5009 -v D:\host_mnt\data\sqlite:\home\superset amancevice/superset:0.28.1
55d8c025ab43d5d38902d3e8045a1bdc57a5b9c307a9af043c085035193d72eb
坑: 啟動superset會報(bào)錯(cuò)
PS C:\Users\CC> docker exec -it 55d8c025ab43 superset init
2018-11-26 08:03:17,617:ERROR:flask_appbuilder.base:'NoneType' object has no attribute 'name'
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/flask_appbuilder/base.py", line 469, in _add_permission
self.sm.add_permissions_view(baseview.base_permissions, baseview.__class__.__name__)
File "/usr/local/lib/python3.6/site-packages/flask_appbuilder/security/manager.py", line 923, in add_permissions_view
if perm_view.permission.name not in base_permissions:
AttributeError: 'NoneType' object has no attribute 'name'
2018-11-26 08:03:17,618:ERROR:flask_appbuilder.base:Add Permission on View Error: 'NoneType' object has no attribute 'name'
2018-11-26 08:03:17,954:INFO:root:Creating database reference
2018-11-26 08:03:17,974:INFO:root:Syncing role definition
2018-11-26 08:03:18,043:INFO:root:Syncing Admin perms
此時(shí)需要再執(zhí)行一次superset init才能成功亿絮。參考鏈接
坑:啟動superset服務(wù)端口被占用
因?yàn)樗拗麟娔X上的8088端口似乎被占用了啟動不起來鼠锈。一開始就要把容器內(nèi)的5009端口映射到宿主的5009端口上去。
PS C:\Users\CC> docker exec -it 55d8c025ab43 superset runserver -p 5009
坑: 上傳csv的時(shí)候會出現(xiàn)permission error
網(wǎng)上有解決方案
https://github.com/apache/incubator-superset/issues/6156
首先以root身份登錄晨抡。
docker exec -it --user root <container id> /bin/bash
然后去變更superset文件的權(quán)限针余。
坑: 重新關(guān)閉docker容器之后之前的數(shù)據(jù)都丟失了.
方法1.利用文件夾映射
superset自己本身的table,dashboard等數(shù)據(jù)的存放地址默認(rèn)為 /var/lib/superset/superset.db.因此應(yīng)該把/var/lib/superset/這個(gè)容器文件夾映射到某個(gè)宿主文件夾中來.下次啟動的時(shí)候再掛載宿主電腦的路徑.
[注]superset中可以在config_superset.py中配置存放地址
SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
方法2.容器關(guān)閉后重新進(jìn)去饲鄙,數(shù)據(jù)還在原處.(未驗(yàn)證)比如
通過 docker ps -a 看到關(guān)閉的容器
docker start your_container_name
如何把superset的圖標(biāo)嵌入到自己的網(wǎng)站中.
1.需要修改superset_config.py文件,將PUBLIC_ROLE_LIKE_GAMMA改為True(賦予公共角色與GAMMA角色相同的權(quán)限集)。同時(shí)設(shè)置
HTTP_HEADERS = {'X-Frame-Options': ' ALLOWALL'}(允許跨站訪問)
[注]superset會在/home/superset文件夾中來查找superset_config.py.因此需要映射到宿主文件夾中來.然后再宿主文件夾中添加這個(gè)文件
2.在superset中配置public的權(quán)限
其中:
? can explore on Superset為導(dǎo)出圖表
? can explore json on Superset為導(dǎo)出圖表json
? all database access on all_database_access訪問所有數(shù)據(jù)庫權(quán)限圆雁,也可以設(shè)置單個(gè)
3.獲取ifram鏈接
把這個(gè)iframe標(biāo)簽放到html文件中即可使用.