Memo/Windows/10/WSL/Docker

https://dexlab.net:443/pukiwiki/index.php?Memo/Windows/10/WSL/Docker
 

Docker


Docker Desktop for Windows


WSL2対応版

環境:

  • Win 10 Pro x64
  • Docker desktop windows: 3.5.2
  • Ubuntu 18.04 LTS on WSL2

手順:

  • Docker Desktop > Settings > General > User WSL 2 based engineが有効になっていることを確認。
  • terminalに再ログイン
  • 以下の設定があるとうまく動かないので削除。terminalを開き直す
    export DOCKER_HOST='tcp://0.0.0.0:2375'
  • 起動テスト
    docker run hello-world
  • クリーンアップ。ディスクが肥大化するので。
    docker ps -a
    
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
    fd375917f77c        hello-world         "/hello"            6 minutes ago       Exited (0) 6 minutes ago                       cool_bardeen
    
    # コンテナの削除
    docker rm fd375917f77c
    fd375917f77c
    
    #  コンテナイメージの削除
    docker rmi hello-world

docker-composeで「volumes:」を指定しても空になる

  • 問題
    • docker-compose.yml に以下のように相対パスで指定しても、実際は空になる。
          volumes:
            - ./conf:/conf
  • 原因
    • Docker Desktop for Windowsはwindowsアプリなので、WSLのディレクトリ(/home/以下等)は参照できない。「/c/...」のパスなら認識する。
    • WSLのデフォルトは「/mnt/c/...」のようにマウントされている。
  • 解決
    • マウントしたいファイルを/c/以下に起き、絶対パスで指定する。(Docker Desktop for Windowsから見える場所にファイルを置く)
          volumes:
            - /c/tmp/conf:/conf

Ubuntu上のDocker

WSL 1で、Docker 18.xはまだ動作しないようだ。

  • dockerのインストール
    sudo apt update
    sudo apt -y upgrade
    
    lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 18.04.1 LTS
    Release:        18.04
    Codename:       bionic
    
    sudo apt install -y docker.io
    sudo cgroupfs-mount
    sudo usermod -aG docker $USER
  • docker起動スクリプト:
    cat >> docker.sh << EOD
    #!/usr/bin/env bash
    sudo -S cgroupfs-mount
    sudo service docker start
    sleep 15
    docker version
    EOD
    
    chmod +x docker.sh
  • 起動: WSL terminalを「管理者として実行」する必要がある
    ./docker.sh
    [sudo] password for user01: *****
    
    Client:
     Version:           18.06.1-ce
    ...
    
    Server:
     Engine:
      Version:          18.06.1-ce
    ...
  • Hello world
    docker run hello-world
  • 「Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?」の場合、WSL terminalが「管理者として実行」になっているかを確認後、docker再起動
    sudo service docker restart

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-08-03 (火) 19:40:09 (74d)