20210430のdockerに関する記事は9件です。

laravel Docker 環境構築 「File Not Found」 エラー解決メモ

この記事の中盤辺りの「Laravel ウェルカム画面の表示」のところで File Not Found とエラーが出てしまいページが表示されなかったのですが、いろいろ調べてとりあえず動くようにはなったのでその解決メモを残しておきます。 結論としては、default.confのroot設定をroot /work/public;から root /work/laravel/public; に書き換えました。 default.conf server { listen 80; server_name example.com; root /work/public; <---この行を書き換える ... これで僕はとりあえず動くようにはなりましたが、これが正しい治し方かどうかはわかりませんのであくまでも応急処置という認識でよろしくお願いします。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker pull を並列実行して高速化する

たくさんDockerイメージをpullしたい時ってネットワーク速度にもよりますが、わりと時間がかかってしまいます。 少しでも高速化できないかなと思い並列して docker pull を実行する方法を調べました。 回線速度 https://fast.com/ja 80 Mbps の環境で調査してます。 docker pull を直列実行 docker pull debian docker pull ubuntu docker pull alpine docker pull fedora docker pull centos まとめて実行すると約70秒かかりました。 $ docker image prune -af 一旦pullしたイメージを削除します。 docker pull を並列実行 docker pull debian & docker pull ubuntu & docker pull alpine & docker pull fedora & docker pull centos & wait 約35秒かかりました。 結果 70秒 => 35秒 35秒の高速化に成功しました!!! 倍の速さです!! CIでdocker pullする時も先に並列でdocker pullでダウンロードしておくといいかもしれないです。 補足 & を付けてコマンドを実行するとバックグラウンドで実行されます wait 現在のシェルが実行しているジョブが終了するのを待つ 参考 シェルスクリプトで単純に並列実行・直列実行を行う
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker: Cannot connect to the Docker daemon とエラーが出た時まず行うこと。

'docker run' や 'docker ps'などのドッカーコマンドを打ち込んだ時、以下のようなエラーが発生することがあるのではないでしょうか。 docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. See 'docker run --help'. まず dockerを起動していますか? エラーの解決に一意専心してしまうと意外と気づかないかもしれません。 以下の画像のようにまずdockerhubに入り、ログインしてdockerが起動されているかを確認することをお勧めします。 私はdocker desktopですので、上にマークが表示されます。 余談ですが、 当該エラーで検索すると sudo等を編集したり、シェルを編集したりとさまざまな方法がでてきます。 私はそれらを色々試しましたが、長い時間を使った結果。docker hubを起動していないということを見落としておりました。 私のような初学者様方はまずは基本に立ち返ることをお勧めします。 お恥ずかしいですが、私の失敗が少しでも役にたてばと思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Docker上のROS2 Foxy環境でNavigation2を動かす

はじめに 以前ubuntu20.04上のROS2 Foxy環境にTurtlebot3のシミュレーション環境とNavigation2をインストールしてNavigation2を動かす記事を書きました。 執筆時現在Navigation2 ドキュメントのGetting Startedの方法でTurtlebot3パッケージをインストールして簡単にNavigation2が動かせるようになっていたので、今回はubuntu20.04環境がない方向けにDocker上にROS2 Foxy環境を構築してNavigation2を実行する方法を書きます。 動作環境 Dockerが動く環境であればubuntuでもMacでもWindowsでも何でも可。 Docker自体のインストール方法については省略します。 docker-ros2-desktop-vncでROS2環境の構築 Docker上のROS2 Foxy環境構築にはTiryohさんが公開している docker-ros2-desktop-vncを使用します。 こちらubuntu-desktop-lxde-vncを使ってプラウザ上でGazeboやrvizも動くGUIのROS2環境がコマンド1行で構築できる非常に便利なリポジトリです。 Dockerが使える環境で以下のコマンドを実行 $ docker run -p 6080:80 --shm-size=512m tiryoh/ros2-desktop-vnc:foxy 最初はImageのダウンロードをするので時間がかかります。(全部で4.8GBくらい) 以下実行中画面 docker run -p 6080:80 --shm-size=512m tiryoh/ros2-desktop-vnc:foxy Unable to find image 'tiryoh/ros2-desktop-vnc:foxy' locally foxy: Pulling from tiryoh/ros2-desktop-vnc a70d879fa598: Pull complete c4394a92d1f8: Pull complete 10e6159c56c0: Pull complete 54ce6fc330e9: Pull complete 1956e2222f9d: Pull complete 1c994628a0c6: Pull complete e56a311ab0d9: Pull complete ダウンロードが終わったらブラウザを開いて、以下アドレスにアクセス http://127.0.0.1:6080/ こんな感じの画面になります。 ROS2とGazeboの動作確認 左下メニューのSystem Tools → LXTerminalからターミナル起動 適当なGazeboデモを実行 $ gazebo /opt/ros/foxy/share/gazebo_plugins/worlds/gazebo_ros_camera_demo.world Gazeboが起動してモデルが動いていれば成功 Navigation2とTurtlebot3パッケージのインストール Navigation2インストール $ sudo apt install ros-foxy-navigation2 $ sudo apt install ros-foxy-nav2-bringup Turtlebot3パッケージインストール $ sudo apt install ros-foxy-turtlebot3* Turtlebot3の環境変数の設定 source /opt/ros/foxy/setup.bash export TURTLEBOT3_MODEL=waffle export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/foxy/share/turtlebot3_gazebo/models Navigation2の実行 以下を実行してTurtlebot3 GazeboワールドとNavigation2を起動 最初はモデルの読み込みに時間がかかります。 $ ros2 launch nav2_bringup tb3_simulation_launch.py rviz2とGazeboが起動したらNavigation2ドキュメント通り rviz2上で2D Pose Estimateをクリックして地図上の位置をドラックして初期位置を指定、 Navigaton2 Goalをクリックして地図上の移動したい場所をドラックしてゴールを指定。 Gazebo上のモデルが指定したゴールに向かって動き出せば成功です。 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ゴールデンウィークだし、Dockerはじめてみない?

ゴールデンウィークこそおうちに籠って新しいことをはじめるチャンス!! ...ということで、今回は手っ取り早くDockerに触れてみる記事を書いてみたいと思います。 Docker(どっかー🐳)ってなに? → コンテナ型の仮想化技術を用いて、アプリケーションを開発・実行するためのソフトウェアのこと。 VirtualBoxとかに比べて、リソースの使用率が低く、効率的にリソースをつかうことができます。 また、「VMをいちいち作ってOSをインストールしてNginxとか入れて...」とかいう面倒くさい作業がコマンド一発ぐらいで済むようにもなるので、いろいろめちゃくちゃ楽になります。 よし、やってみよ! だいたいコピペだけで動かせます。 必要なもの CentOSが動くマシン インターネットに接続できて、sudoがつかえることが前提です。 (仮想マシンでもいいですし、余ったノートパソコンでもいいですし、なんならEC2とかAzureVMでもいいです。 今回は CentOS 7 2009を使用していますが、CentOS 8でもDebianでも動きます。) Linuxのコマンド(yumとか)が一応できる知識 (ほとんどyumしか使わない) やってみよ!っていう気力 手順 CentOSが操作できるようにします。 teratermでもなんでもいいです。 つぎのコマンドをコピペして、すでにDockerがインストールされてないことを確認します。 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 「そんなパッケージないよ」的なメッセージが出れば大丈夫です。 3.リポジトリを設定します。 sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo sudo yum update 4.Docker本体をインストールします。 sudo yum install docker-ce docker-ce-cli containerd.io 途中でなんたらかんたら?って聞かれたら、とりあえず y と入力してEnterキーを押しておきましょう。 これだけでDockerがインストールできちゃいました! 5.Dockerを起動します。 sudo systemctl start docker エラーが出たらもっかい1.からやり直してみよう。 6.最後におまじない(Dockerを一般ユーザでも動かせるように)しておきましょう sudo usermod -aG docker $USER おわり! とりあえずHello Worldしてみよ! なんと便利なことに、DockerにはHello Worldを表示するだけのコンテナが用意されてます! まずはこれをやってみましょう。 docker container run hello-world 上のコマンドをコピペして実行すれば、「Hello from Docker! なんちゃらかんちゃら!」っていう風に文章が表示されます。 ここまでできれば、あなたもDocker使いのなかまいり! この後は、他の方のとってもわかりやすい記事をご覧になったり、検索してみたり、本を買ってみたりしてみてくださいね! (ちなみに私は「たった1日で基本が身に付く! Docker/Kubernetes超入門」っていう本をみてDockerにハマりました。) 以上になります。 よいDockerライフを!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

DockerコンテナをつかったNodeJS開発・実行環境

DockerをつかったNodeJS開発・実行環境 NodeJSの開発をしているとき、実行環境を個別に作って残しておきたかったり、Nodeバージョンをコロコロ変えたかったりしたいので、Dockerコンテナを使ってNodeJSの開発・実行環境を作れるようにしました。 実行のたびにクリーンなコンテナを立てて、実行終わったらコンテナごと消すやり方もありますが、今回はコンテナ立てたまま動かすやり方です。 使い方としては、 開発始める前にコンテナ立てる 開発中はコンテナ立てっぱなしで、execすることでNodeJSを実行する コードの編集はホスト側(Windows/MacOS)でやる コンテナ作り直したかったらdocker-compose downで落として、docker-compose upする という形を想定しています。 Docker Composeでコンテナ立てて動かす 軽量なAlpine上でNodeJSのv16系を動かしたイメージにします。 以下のdocker-compose.ymlを作成。 docker-compose.yml version: '3' services: app: image: node:16-alpine container_name: node-container tty: true volumes: - ./src:/src working_dir: "/src" これをプロジェクトのルートフォルダにおいて、./src/以下にソースコードやpackage.jsonを置くようにします。 コンテナをたてて実行するときは、以下コマンド。 これで、コンテナが立ちっぱなしになります。 bash docker-compose up -d 必要なライブラリをインストール(npm install)する 上のdocker-compose.ymlで、 app: というかたちで、名前がappのサービスを作ったので、そのサービスを指定することで、コマンドを実行できます。 npm install をしたいので、docker-compose execを使い、 bash docker-compose exec app npm install で、さっき立てたコンテナ上でnpm installすることができます。 execで立ってるコンテナ上でプログラムを実行 npm installと同じく、docker-compose execを利用します。 bash docker-compose exec app node main.js もしくは、package.jsonをしっかり書いているようであれば、 bash docker-compose exec app npm start で、プログラムを実行できます。 コード書いて開発していく docker-compose.ymlのvolumesの欄で、./srcディレクトリをコンテナ内にマウントしてあるので、ホスト側(Windows/MacOS側)で編集した内容が、常にコンテナ内にも反映されるようになっています。 なので、Windows/MacOS上で./src/main.jsなどのソースコードをもりもり編集し、 docker-compose exec app npm start することで、もりもり開発していけます。 コンテナ立てなおす 試行錯誤するうちにコンテナの環境が汚れてくることもあるので、その時はコンテナ立てなおします。 それも簡単で、docker-compose.ymlがあるディレクトリで、 bash docker-compose down docker-compose up -d を実行すると、今まで使ってたコンテナを捨てて、新しいコンテナを立てなおすことができます。 備考 都度都度コンテナを立てて実行する NodeJSのpackage.jsonをこんな感じにします。。 ポイントはscript.clean-startのところ。 node_modulesディレクトリを消して、モジュールインストールして、Nodeを実行する流れです。 package.json { "scripts": { "start": "node ./main.js", "clean-start": "rm -r ./node_modules && npm install && npm start" }, "dependencies": { } } これで、以下のコマンドたたくと、コンテナ立てて、上記の処理を行い、終わったらコンテナを都度都度消してくれます。 bash docker-compose run --rm app npm run-script clean-start 参考にしたリンク https://qiita.com/nikadon/items/995c5705ff1171f7484d https://docs.docker.jp/compose/compose-file.html
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker pull rust をしたら「no matching manifest for windows/amd64 10.0.19042 in the manifest list entries」

私の環境 windows 10 Docker for windows やろうとしたこと docker pull rustを実行しようとしたら、以下のメッセージが表示されました。 > docker pull rust Using default tag: latest latest: Pulling from library/rust no matching manifest for windows/amd64 10.0.19042 in the manifest list entries 解決方法 Dockerアイコンを右クリックして、Docker Settingsを開きます。 Docker Engineを選択し、"experimental": falseをtrueに変更して反映する。 もう一度、docker pull rustを実行する。 > docker images REPOSITORY TAG IMAGE ID CREATED SIZE rust latest 5cbef0869ecb 2 weeks ago 1.32GB 参考 https://stackoverflow.com/questions/48066994/docker-no-matching-manifest-for-windows-amd64-in-the-manifest-list-entries
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Dockerfileでシンボリックリンクなファイル/ディレクトリをCOPYする

TL;DR tar -ch . | docker build - GitHubにサンプル置きました。 前提 以下のディレクトリ構造とします。 . ├── common │ └── print_with_time.py └── hello-world ├── Dockerfile └── src ├── __init__.py ├── app.py └── common -> ../../common hello-world/Dockerfile FROM python:3-alpine RUN mkdir -p /app COPY src /app/src COPY src/common /app/src # ← src/commonはシンボリックリンク WORKDIR /app CMD ["python", "-m", "src.app"] 通常通りの docker build コマンド エラーになります。 解決方法 コマンドを少し工夫して、シンボリックリンクをfollowして 1 作成されたtarボールをdockerコマンドに渡します。 最後の - を忘れるとエラーになります。(stdinからのビルドと認識させるためです) tar -ch . | docker build -t docker-build-symlink - (ここを参考にしましたが、なぜかgzip圧縮のオプションはエラーになるので外しました) 無事ビルドでき、 Hello world! が出力されました! もし一部のディレクトリ/ファイルを除外してDockerに送りたい場合 画像の例ではありませんが、実際に私がこれを使っているプロジェクトはNode.jsのプロジェクトで、 node_modules という615MBにもおよぶ巨大ディレクトリを含んでいます。 実際は Dockerfile の中で yarn install をしているので node_modules 自体は不要(しかもホストはmac、コンテナはAlpine Linuxなので、node-sassなどのバイナリを使う場合互換性はない)、これを docker build に送らないようにするには --exclude オプションを使います。 tar -ch --exclude=node_modules . | docker build -t docker-build-symlink - このように --exclude=pattern オプション2をつけるとtarボールにならないので、少し早くなります。 ( --exclude-from=file もアリですね) コンテナの中身は? 中を覗いても、 /app/src/common はシンボリックリンクではなく普通のディレクトリとなっています。 macおよびFreeBSDの BSD tar (manpage) では、大文字 -L も使えるようですが、Debian等のLinuxの GNU tar (manpage) の -L は違う意味になりますので、 -h で覚えたほうがいいようです。 ↩ http://www.gnu.org/software/tar/manual/tar.html#exclude ↩
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

IOST v.3.4 ローカルサーバーの起動

概要 ローカル環境にIOSTの環境構築を行う 環境 MacOS Big Sur v.11.2 Docker v.20.10 環境構築手順 Dockerを使用してIOSTサーバーを起動する # Dockerを使用してIOSTサーバーを起動する $ docker run --rm --name iost-node -p 30000-30003:30000-30003 iostio/iost-node --rm: コンテナ終了時に、コンテナを自動的に削除する。 --name: コンテナ名を指定して、コンテナを起動する。 -p: コンテナのポートをホストに公開する。 起動したコンテナに入る # 新しくターミナルを起動し、作成したIOSTコンテナに入る $ docker exec -it iost-node /bin/bash 初期アカウントのインポート # iwalletコマンドでadminユーザーをインポート $ iwallet account import admin 2yquS3ySrGWPEKywCPzX4RTJugqRh7kJSo5aehsLYPEWkUxBWA39oMrZ7ZxuM4fgyXYs2cPwh5n8aNNpH5x2VyK1 アカウントがインポートされているか確認 # adminユーザー情報を確認 $ iwallet balance admin 参考文献 IOST documentations
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む