ぐらいとさんの日常

頭の中の整理や自己成長のためのログを取るための日記に近いブログです。

WindowsでDockerを使いたい

Dockerとは

Dockerは、コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのオープンソースソフトウェアあるいはオープンプラットフォームである。
(Wikipedia引用)

...難しい概念である。
私もDockerをある程度使いこなせるように鳴るまで結構な時間がかかった。
出来る限り簡単に説明すれば、Dockerという(船舶の)タンカーの上に他のソフトウェア、例えばCentOSだとかMySQLをコンテナとして上に乗っけて、実行したり管理出来るようにするソフトウェアである。

まあ、開発効率を上げるためのソフトウェアなので、その道に関係がない人には無縁だ。 この記事は、そのDockerをWindowsに導入したログである。

どうやって使えるようにするか

WindowsでどうやってDockerを動かすか。
ちょっと調べただけでも下記のように色々な実現方法がある。

  • hyper-V + Docker Desktop
  • hyper-V + Docker Machine
    • hyper-V がWindows10Proのみで利用可能なためで私の環境だと使えない
  • VirtualBox + Docker Toolbox
    • 以前WindowsUpdateした際に何故かVirtualBoxが消されたので今回はパス
  • WSL2
  • WSL2 + Docker Desktop
    • Docker Desktop をWSL2を利用して動かす

今回は最下部の「WSL2 + Docker Desktop」でいこうと思う。
ちなみにWSL2は導入済み前提だ。 WSL2上で直接でも良かったのだが、すでにリリース中のサービスがUbuntu上でdockerを利用して構築されているので、別の方法にしてみることにした。

Windows10Proの人はscoopで入れたDockerをhyper-Vを利用して動かせるっぽいので便利そう。

導入手順

Docker Desktopのインストール

dockerhubからインストーラを探してダウンロード。
まずdockerhubのアカウントを作成する必要がある。
自分のときはメニューのExplore->Dockerと進み、Docker Desktop for Windowsを見つけることが出来た。
(この手のWebサイトは結構な頻度でページ構成から変わると思うので真似するときに違ったらご了承ください)

インストーラを起動し、「Enable WSL 2 Features」的なオプションを有効化してインストールする。
完了するとマシンのログオフを求められるので一旦ログオフ&ログインする。
ログインすると「セットアップ中だよ!」的なメッセージが出るので待っていると、DockerDesktopと思わしき画面が立ち上がる。
チュートリアルが始まるので、やってみると動いているのが確認できる。

なんとこれでインストール完了されたらしい。

ただなんかチュートリアルはうまく動かなかった。
大丈夫か?

うまく動いていない

チュートリアル用のコマンドを試してみるとエラーが出た。

> docker run -d -p 80:80 docker/getting-started
unable to resolve docker endpoint: open C:\Users\XXXXX\.docker\machine\machines\default\ca.pem: The system cannot find the path specified.

恐らく、WSLのパスが通っていない...?

調べたところ以前DockerToolboxを利用したことのあるマシンだと古い設定が残って動かないことがあるらしい...
ビンゴ!

Powershellで以下のコマンドを実行すると解決するという記事を見つけたので、試してみる。

[Environment]::SetEnvironmentVariable("DOCKER_CERT_PATH", $null, "User")
[Environment]::SetEnvironmentVariable("DOCKER_HOST", $null, "User")
[Environment]::SetEnvironmentVariable("DOCKER_MACHINE_NAME", $null, "User")
[Environment]::SetEnvironmentVariable("DOCKER_TLS_VERIFY", $null, "User")
[Environment]::SetEnvironmentVariable("DOCKER_TOOLBOX_INSTALL_PATH", $null, "User")

実行後新たにPowerShellを開き直し、先程のコマンドを実行すると成功した!

▼ DockerDesktop、こんな感じ

f:id:g_light:20210221000649p:plain

PowerShellでも、WSL2(Ubuntu)でもdockerが使える

DockerDesktopをインストールした後はPowerShellでもUbuntuでもdockerコマンドが使えるようになっていた。
WSL2のファイルシステムの都合でDockerで動かすファイルの管理はUbuntu側で行ったほうがいいらしいので、コマンド使うのは主にUbuntu上になりそうだ。

感想

以前はVirtualBoxとDockerToolboxでDocker環境を構築していたのだが、VirtualBoxは扱いづらいし、DockerToolboxは余計な機能が色々ついてきて混乱の種だったが、DockerDesktopはDockerのイメージとコンテナを一元管理するだけの機能のようで、UIもシンプルで好感が持てる。
WSL2のおかげで前に比べて環境が一回りシェイプアップされた気分だ。

参考

Windows Home に Docker Desktop をインストール
https://docs.docker.jp/docker-for-windows/install-windows-home.html

Docker for Windowsをインストール後 could not read CA certificateエラーが出た時の解決方法
https://qiita.com/icck/items/60e1c1f8b6a05c8fdf72

WSL2導入

WSL2とは

Windows Subsystem for Linux2 の略。
簡単に言うとWindows上でLinuxを動かすことが出来るシステムである。
LinuxとはWindowsOSやMacOSと同じOSの一種、特にカーネルの種類のことをいう。
カーネルとは、OSの中核となるプログラム...ハードウェアに指示をだすとか、コンピュータの根幹的な制御をしているプログラムだ。
これ以上は自分も詳しくないので各自調べて欲しい。

つまるところ、WindowsOSの上で別のOSを動かすことが出来る機能、といったところだ。

ちなみに今回導入するディストリビューションUbuntuだ。
ディストリビューションとは、Linuxカーネルを持つOSの種類...のようなものだ。
UbuntuはWSLで利用できるOSの中では無料で提供されているし、
みんなUbuntu使っていて比較的資料も多いので信頼できる。
なお昔業務ではよくCentOSというディストリビューションを利用していた。
ちなみに違うディストリビューションを利用しても、私程度の知識だと使えるコマンドがちょっと違う位の違いしか感じられない

続きを読む

Windows で NeoVim のインストール(とprevim

NeoVimとは

簡単にいうと新しいVim、ということらしい。
ではVimとは。テキストエディタである。
テキストエディタとは。
Windowsで「メモ帳」というソフトを使ったことは無いだろうか?あれの類のソフトのことだ。
メモ帳を使ったことがないという人は、「Word」をもっと簡単にしたものだと思ってもらっていい。
文字の大きさを変えたり色を変えたりはできず、ワードアートや図の挿入も出来ない。
ただ文字を打ち込むだけに特化したソフトだ。
そんなソフトになんの価値があるのか、と思う人もいるだろうが
余計な機能がない分動作がサクサクで無駄なことを考えなくてよく、
書類を作るワケでもなくメモを取りたい、簡単なプログラムを書きたい、なんてときに重宝する。

とても丁寧に説明したつもりだけど、それでもわからないという人はググって欲しい。
もしくは、恐らく貴方の人生に必要ないものだと思うのでそっとページを閉じて欲しい。

この記事はそんなテキストエディタ「NeoVim」をWindowsに入れたい記事だ。
ついでにブログとかメモるときにMarkdownを使うので、
Markdownの支援ツールprevimも合わせて導入してみる。
なおVimの操作の知識がある程度ある人しか理解できない箇所があると思うが、ご了承いただきたい。

続きを読む

Scoopを使って環境構築を自動化する

Scoop とは

Windows用のパッケージ管理ツールである。 Linuxにおけるyumとかapt、Macにおけるbrew的なもの。 Windowsでなにかインストールしたいと思った時普通に使うとマウスでポチポチしてやれ同意しろだの面倒なことが多いので、これをScoopに任せる。 なおCUIで動作するもの(=真っ黒画面に文字だけ表示されているようなやつ)なので それはそれで拒否反応がある人は多そう。

この記事はそれを自分のPCに入れたときのログである。

続きを読む

初弾から当てていきましょう

キルムーブする時に初弾を当てにいく意識がない人がチラホラいる気がする。
初弾を当てられないから敵に気付かれ、そのまま逃げられたり反撃されたりするパターン…

 

敵と見合ってるときならお互いに弾が当たらない距離で塗り広げながら弾幕形成、威嚇しつつ隙あらば刺す、みたいな動きは良いのだけど、例えば敵の死角からキルを取りたい時にそれでは敵に逃げる隙を与えてしまう。


相手に逃げたり反撃の隙を与えないために、初弾から全弾ヒットを狙った方が当然強い。

それが出来るか出来ないかは置いておいて、そもそも死角から撃つ時も敵に弾を当てようとしてないなと感じる人が思ったよりいる。

 

具体的に数パターンあると思う。

1.ブキの射程を理解しておらず敵に弾が届いていない

2.エイムが足りずに敵に当てられていない

3.射程は理解しているが射程に捉えないまま威嚇射撃から入ってしまう

4.道作りの塗りで敵に気づかれてしまっている

 

1,2は知識と技術、3,4はそもそも当てようとしてないか、敵側の視点を考えられていのが主な問題だと思う。

 

1.ブキの射程を理解しておらず敵に弾が届いていない

自分の持っているブキの射程は理解しよう。

ある程度使っていれば感覚的に当てられる距離かどうかが分かってくるとは思うが、まずはお散歩などでステージごとの一場面をイメージし、接敵するであろう一角でどこから撃てばどこまで届く、という事を知ろう。

 

2.エイムが足りずに敵に当てられていない

死角から攻める場合相手の動きは対面時より予測しやすく、動きも緩慢である場合が多く、何よりこちらに銃口を向けていないはずだ。

焦って攻撃を開始する必要はない。

自分のタイミングで射撃開始するように意識してみよう。

数をこなすうちに、だんだんと素早く射撃出来るようになるはずだ。

当たらなくなってきたな、と思ったらまた自分のタイミングを探すといい。

 

3.射程は理解しているが射程に捉えないまま威嚇射撃から入ってしまう

まず意識改革から始めよう。

威嚇射撃をするとどうなるか?

当然敵に気づかれ、銃口を向けられるか一目散に逃げられるだろう。

その後どうなるか?敵の援軍が来て逆にキルされるリスクが高まる。

戦いとは、二手三手先を読むものである。

とりあえずの行動をする前にその行動をしたらどうなるか一瞬考えてみよう。

 

4.道作りの塗りで敵に気づかれてしまっている

塗ることは、目立つ。

マップを見られれば瞬時に気づかれるし、目視されれば警戒されてしまう。

当然、塗りながら進めばバレるリスクが増える。

特に裏どりを狙う場合、塗り跡は出来るだけ目立たないようにするのが理想だ。

 

また死角から接敵する直前に敵の足元を塗らしてしまっていないだろうか?

敵に当ててなくても近くに相手のインクが飛ぶと派手な音が鳴る。

そうすれば間違いなく気づかれる。

気付かれてしまったら、3に書いた通りである。

 

接敵のための塗りは、最小限にしよう。

多くのブキは視点を上下する事である程度射程の調整が出来る。

自分のブキの射程で「ここからなら届く」というところまで塗れば攻撃を当てることが出来る。

 

どこからともなく弾が飛んできて何も出来ずやられてしまった経験はないだろうか?

上手い人は自然と気付かれずに初弾から攻撃を当ててくるのだ。

自分もできるように練習してみよう。

相手に「そこにいたのか!」「しまった!」と思わせられればこちらのものだ。

 

【ゲーム感想】ポケットモンスター シールド【シナリオ】

本記事はネタバレを含みます。

 

題の「ポケットモンスター シールド」のシナリオが一通り終わった。

ので、少し感想を書いてみることにする。

 

続きを読む