###### tags: `tutorials` `ubuntu` `linux` `docker` `python` # Docker 使用 `tensorboard` 和 `jupyter` ## Run container ```bash= ! $ docker run -it -p 5566:6006 -p 7788:8888 -d docker_image ``` - `-p 5566:6006`: 將 container 內部的 `6006` port 連到外部系統的 `5566` port :::info `tensorboard` 預設 port 為 `6006` ::: - `-p 7788:8888`: 將 container 內部的 `8888` port 連到外部系統的 `7788` port :::info `jupter` 預設 port 為 `8888` ::: :::warning port 值當然都可以自己設定,不過不可使用 < 1024 的 privileged ports 或是已被使用的 port ::: > 更多 docker 使用方式請看[這裡](https://hackmd.io/ByZVjKwnD) ## Run tensorboard - 啟動 tensorboard ```bash= ! $ tensorboard --logdir runs/ --host 0.0.0.0 ``` - `--logdir`: 設定要顯示 tensorboard 的資料夾 - `--host`: 設定使用的主機網路 :::info 預設為 `localhost`,也就是 `127.0.0.1`,會是連到本機(container)的一個虛擬 IP,而設為 `0.0.0.0` 才可真的 mapping 到系統給的 port ::: - 進入 `XXX.XXX.XXX:5566` - `XXX.XXX.XXX`: 外部主機實體 ip - `5566`: 會 mapping 到 container 的 `6006` port(也就是預設的 tensorboard port) ## Run jupyter - 啟動 jupyter ```bash= ! $ jupyter notebook --ip 0.0.0.0 --no-browser --allow-root ``` - `--ip`: 設定使用的主機網路 :::info 預設為 `localhost`,也就是 `127.0.0.1`,會是連到本機(container)的一個虛擬 IP,而設為 `0.0.0.0` 才可真的 mapping 到系統給的 port ::: - `--no-browser`: 不啟動瀏覽器 - `--allow-root`: 如果 container 內使用者為 `root` 則需要允許使用 `root` 開啟 jupyter - 進入 `XXX.XXX.XXX:5566` - `XXX.XXX.XXX`: 外部主機實體 ip - `7788`: 會 mapping 到 container 的 `8888` port(也就是預設的 jupyter port)