###### tags: `業務システム開発` # Docker ## Dockerとは 「コンテナ型仮想環境」と呼ばれる環境構築ツールの一つ。環境をホストOS上で区画(コンテナ)を用意して管理する。従来の仮想環境よりも構築が手軽で処理・起動が速い。 ## 使い方 ### image入手 ``` docker image pull ``` #### Dockerfileで自分で書く方法もある 機械学習環境のAnacondaをインストール ```Dockerfile= # ベースイメージ名:タグ名 FROM continuumio/anaconda3:2019.03 # pipをアップグレードし必要なパッケージをインストール RUN pip install --upgrade pip && \ pip install autopep8 && \ pip install Keras && \ pip install tensorflow # コンテナ側のルート直下にworkdir/(任意)という名前の作業ディレクトリを作り移動する WORKDIR /workdir # コンテナ側のリッスンポート番号 EXPOSE 8888 # ENTRYPOINT命令はコンテナ起動時に実行するコマンドを指定(基本docker runの時に上書きしないもの) # "jupyter-lab" => jupyter-lab立ち上げコマンド # "--ip=0.0.0.0" => ip制限なし # "--port=8888" => EXPOSE命令で書いたポート番号と合わせる # ”--no-browser” => ブラウザを立ち上げない。コンテナ側にはブラウザがないので 。 # "--allow-root" => rootユーザーの許可。セキュリティ的には良くないので、自分で使うときだけ。 # "--NotebookApp.token=''" => トークンなしで起動許可。これもセキュリティ的には良くない。 ENTRYPOINT ["jupyter-lab", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root", "--NotebookApp.token=''"] # CMD命令はコンテナ起動時に実行するコマンドを指定(docker runの時に上書きする可能性のあるもの) # "--notebook-dir=/workdir" => Jupyter Labのルートとなるディレクトリを指定 CMD ["--notebook-dir=/workdir"] ``` ### イメージBuild hogeは好きな名前でいい ```Docker= docker build -t hoge . ``` ### ```Docker= docker run -it \ -p 8888:8888 \ --rm \ --name hoge \ --mount type=bind,src=`pwd`,dst=/workdir \ ANATA_NO_IMAGE_NAME(上でビルドしたもの) ``` ``` docker stop ANATA_NO_CONTAINER_NAME ``` ``` docker rm ANATA_NO_CONTAINER_NAME ``` ``` cd ./Desktop/django-miyako docker ps docker rm --force [container ID] docker build -t ramen-app . docker run -e PORT=8080 -p 8080:8080 ramen-app ``` ``` gcloud builds submit --tag gcr.io/ramen-app-id/ramen-app ``` https://ramen-app-7umggk7w6a-uc.a.run.app Docker Hubから環境(イメージ)を構築 ``` docker pull jupyterhub/singleuser ``` イメージを一覧表示 ``` docker image ls ``` イメージを実行 ``` docker run コンテナID ``` コンテナの状態を確認 ``` docker ps -a ``` ## 削除 不要なコンテナを削除 ``` docker container prune ``` 不要なイメージを削除 ``` docker image prune ``` コンテナを一括削除 ``` docker ps -aq | xargs docker rm ``` イメージを一括削除 ``` docker rmi `docker images -q` ``` ### jupyter labに好きな環境いれて立ち上げる ``` . ├── Dockerfile ├── docker-compose.training.yaml └── requirements.txt ``` ```bash= vi docker-compose.training.yaml ``` ```yaml= version: "3" services: jupyterlab: build: . container_name: training environment: - JUPYTER_ENABLE_LAB=yes ports: - "8888:8888" volumes: - ./:/home/jovyan/work command: start.sh jupyter lab --NotebookApp.token="" ``` ```bash= vi Dockerfile ``` ```dockerfile= FROM jupyter/datascience-notebook:7a0c7325e470 COPY requirements.txt /tmp/requirements.txt RUN pip install -r /tmp/requirements.txt ``` ```bash= vi requirements.txt ``` ``` tensor2tensor==1.15.5 tensorflow==1.14 numpy==1.16.4 ``` ```bash= docker-compose -f docker-compose.training.yaml up ``` jupyter labにアクセスする `localhost:8888`をブラウザに入力 `/work/`ディレクトリ下に`.ipynb`などファイルを作ると勝手に保存してくれる #### ダウンさせてイメージ削除 ```bash= docker-compose -f docker-compose.training.yaml down --rmi all ``` #### GCRへpush ```bash= docker-compose up ``` ```bash= gcloud builds submit --tag gcr.io/ramen-app-id/guguru_page --project ramen-app-id ``` ## Error starting userland proxy: listen tcp 0.0.0.0:xxxx: bind: address already in use ``` sudo lsof -i -P | grep "LISTEN" ``` ``` sudo kill PID ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up