HOME/Articles/

dockerの備忘録

Article Outline

dockerの備忘録

dockerの基本的な使い方参考のまとめ。

docker desktopは有償化したのでdocker engineを使用した方がいい。

docker engineはWindowsの場合、WSL上で使う。

dockerでpython環境つくるためのTips

参考サイト

DockerでPython実行環境を作ってみる
https://qiita.com/jhorikawa_err/items/fb9c03c0982c29c5b6d5

docker-composeでvolumesを設定する
https://zenn.dev/ajapa/articles/1369a3c0e8085d

Docker Image Python
https://hub.docker.com/_/python

Linux 用 Windows サブシステムで Visual Studio Code の使用を開始する
https://docs.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-vscode

DockerとDocker ComposeでPythonの実行環境を作成する
https://zuma-lab.com/posts/docker-python-settings

Dockerfileで日本語ロケールを設定する方法。およびロケールエラーの回避方法。
https://qiita.com/YuukiMiyoshi/items/f389ea366060537b5cd9

WSL2でLinux~Windows間のファイルのやり取り
https://bootcamp.fjord.jp/articles/29

Dockerコンテナの作成、起動〜停止まで
https://qiita.com/kooohei/items/0e788a2ce8c30f9dba53

Dockerイメージとコンテナの削除方法
https://qiita.com/tifa2chan/items/e9aa408244687a63a0ae

docker,docker-compose設定でデフォルト作業用ディレクトリを設定
https://webplus8.com/dockerfile-docker-compose-yml-working-directory/

docker-compose.ymlの書き方について解説してみた
https://qiita.com/yuta-ushijima/items/d3d98177e1b28f736f04

コンテナに入りたい?それ docker exec でできるよ
https://qiita.com/yosisa/items/a5670e4da3ff22e9411a

DockerでJupyterLab環境を作る
https://qiita.com/plumfield56/items/335cad3b58afe55f6529

dockerで立ち上げたアプリケーションにアクセスできない
https://qiita.com/yukofeb/items/0e6c60f3dd54ae589b41

Docker上でJupyter Notebookを使用しようとしてハマったときの対処
https://qiita.com/watyanabe164/items/64b8be31cd1c7c7940d3

Dockerでlocalhostが立たない!そんな時はここをみて!
https://qiita.com/wangqijiangjun/items/54a949cd140b61dc7763

docker上でjupyter-notebookを使用する方法
https://qiita.com/ricrowl/items/bc178a184a300b22e5e5

Dockerコンテナの内部IPアドレスを確認する方法
https://qiita.com/ponsuke0531/items/7e8e5081993a30afdc4a

jupyter labをリモートから使う
https://qiita.com/RayDoe/items/e1ec21c63a15adb1a061

Vimでクリップボードからのペーストを可能にする
https://sy-base.com/myrobotics/vim/vim_use_clipboard/

vimでクリップボード連携を有効にした話
https://pocke.hatenablog.com/entry/2014/10/26/145646

.vimrc に変更を加えた場合 Vim の再起動をせずに source ~/.vimrc で再読込みすることができる
http://weble.org/2011/01/21/vim-source-vimrc

コンテナ上でのパッケージ更新と保存方法
https://www.hobby-happymylife.com/setup/docker_package_save/

(miniconda入れる場合)miniconda+conda-forgeでの開発環境をDockerでそろえる
https://qiita.com/kimisyo/items/66db9c9db94751b8572b
(miniconda入れる場合)Dockerfileでconda activateする方法
https://note.yu9824.com/howto/2021/09/04/docker-conda-activate.html

日本語フォント入れる
apt-get install -y fonts-ipaexfont

コマンド

#docker imageの検索
sudo docker search centos

dockerデーモンステータス確認
sudo service docker status

dockerデーモン起動
sudo service docker start

イメージを一覧表示
sudo docker images

イメージの一覧を出力
sudo docker image ls

コンテナーを一覧表示
sudo docker container ls

レジストリからイメージやリポジトリを取得
sudo docker pull centos:7

コンテナを一覧表示
sudo docker ps

コンテナのプロセスを他のプロセスツリーからは隔離(分離)して実行
コンテナのプロセスに対してttyを割り当てるために、よく -i -t は -it と書かれる
sudo docker run -it centos

自分のターミナルの標準入力、標準出力、標準エラーにアタッチする
コマンドを自分のターミナル上で直接実行しているかのように、インタラクティブ(双方向)に制御できる
sudo docker attach <id>

1つまたは複数のコンテナを削除
sudo docker rm <id>

docker-compose:yaml形式の設定ファイルで複数コンテナを実行を一括で管理できる
コンテナを作成し、開始
up,downでサービスの起動停止
バックグラウンド実行なら「-d」を付けてup
docker compose up --build:サービスの構築もしくは再構築
sudo docker compose up -d --build

1つまたは複数のイメージを削除
sudo docker rmi <id>

停止しているdockerコンテナを起動
-i, --interactive:インタラクティブモードとなるため、継続してコマンド操作などが可能
sudo docker start <id>

1つまたは複数の実行中コンテナを停止
sudo docker stop <id>

実行中のコンテナ内でコマンドを実行
-it:標準入力を開き続ける+疑似TTYを割り当て
bash:対話形式のbashシェルを起動してコマンドの入力を受け付ける状態
sudo docker exec -it <container-name> bash

Dockerfile

FROM python:3.10
USER root

RUN apt update
RUN apt -y install locales && \
    localedef -f UTF-8 -i ja_JP ja_JP.UTF-8

ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm

RUN apt install -y sudo
RUN apt install -y vim less
#RUN apt install -y --no-install-recommends graphviz
RUN apt install -y graphviz graphviz-dev
RUN apt install -y fonts-ipaexfont
# vim install and config
RUN apt install -y vim-gtk3
RUN touch ~/.vimrc
RUN echo 'set clipboard&' >> ~/.vimrc
RUN echo 'set clipboard^=unnamedplus' >> ~/.vimrc
RUN ["/bin/bash", "-c", "source ~/.vimrc"]

# for pymc
RUN apt install libblas-dev -y
# for mecab
RUN apt install mecab -y
RUN apt install libmecab-dev -y
RUN apt install mecab-ipadic-utf8 -y
RUN git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
RUN mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n -y
RUN mv /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd /var/lib/mecab/dic
RUN mv /etc/mecabrc /etc/mecabrc_old
RUN echo 'dicdir = /var/lib/mecab/dic/mecab-ipadic-neologd' >> /etc/mecabrc
RUN cp /etc/mecabrc /usr/local/etc/

RUN mkdir -p /root/work
COPY requirements.txt /root/work
WORKDIR /root/work

RUN pip install --upgrade pip
RUN pip install --upgrade setuptools
RUN pip install -r requirements.txt
# jupyter config
RUN jupyter lab --generate-config
RUN echo "c.NotebookApp.ip = '0.0.0.0'" >> /root/.jupyter/jupyter_lab_config.py
RUN echo "c.NotebookApp.port = 8888" >> /root/.jupyter/jupyter_lab_config.py
RUN echo "c.NotebookApp.token = ''" >> /root/.jupyter/jupyter_lab_config.py
RUN echo "c.NotebookApp.allow_root = True" >> /root/.jupyter/jupyter_lab_config.py
RUN echo "c.NotebookApp.open_browser = False" >> /root/.jupyter/jupyter_lab_config.py



docker-compose.yml

version: '3.10'
services:
  python3-10:
    restart: always
    build: .
    container_name: 'venv'
    working_dir: /root/
    tty: true
    volumes:
      - ./work:/root/work
    ports:
      - "8888:8888"

Dockerfikeやdocker-compose.ymlを置いている場所にrequirements.txtなども置いておく。

docker_files

Rインストールするとき

sudo apt update
sudo apt install -y r-base r-base-dev
sudo apt install -y r-base-dev
sudo apt install -y libharfbuzz-dev libfribidi-dev
sudo apt install -y libv8-dev
sudo apt install -y libudunits2-dev
sudo apt install -y libgdal-dev
sudo apt install -y libjq-dev
sudo apt install -y libprotobuf-dev
sudo apt install -y protobuf-compiler
sudo apt install -y r-cran-gsl
sudo apt install -y libgsl-dev
Rのtidyverse パッケージのインストールでつまったので解決法をメモ
Rstudioでrayshaderを表示するまでにやったこと
DockerでPythonにてGDALを利用する

install.packages("tidyverse")
install.packages("NipponMap")
install.packages("sf")
install.packages('raster')
install.packages("here")
install.packages("jpmesh")
install.packages("devtools")
install.packages("rmapshaper")
install.packages("geojsonio")
devtools::install_github("uribo/jpndistrict")
install.packages("CARBayes")

library(sf)
library(NipponMap)
library(RColorBrewer)
library(raster)
library(tidyverse)
library(jpmesh)
library(rmapshaper)
library(geojsonsf)
library(CARBayes)