IT関連

Dockerの備忘録・自分メモです

投稿日:2021年1月3日 更新日:

Docker意味わからん。Docker知らないとヤバいとか言うけど、いつの間にそんな話になったの。

自分の備忘録です。間違いがあればお許しを。

 

Imageを探す – docker search –

Docker HubにあるDockerイメージを検索する。

公式のものから個人が作ったものまである。

ブラウザで検索してもいいけど、コマンドもある。

| moreをつければたくさん出てくる。つけなければ25件くらい出てくる。

 

Imageを引っ張る – docker pull –

公式サイトからイメージを引っ張るコマンド。

centosならば下記のように指定する。

Docker Hubを見ると、検索したイメージを取得するには何というコマンド入力すればいいか書いてあるので難しくはない。

 

取得したImageを一覧表示する – docker images –

コマンド上で一覧で見る方法

  • REPOSITORY イメージの名前
  • TAG バージョンを示すタグ latestは最新
  • IMAGE ID IDがこのイメージの実体
  • CREATED 作られた日付
  • SIZE 容量

タグが違っても同じイメージならば同じものと見ればいい。

 

Imageの詳細を見る – docker inspect –

 

命令文はdocker inspect。その後に指定するものは

  1. IMAGE ID
  2. REPOSITORY
  3. REPOSITORY:TAG

以上の3つになる。2はTAGの省略形でlatestを意味することになる。

使い方の例としてはこんな感じ。

 

Imageの削除 – docker rmi –

イメージを削除するコマンド

イメージの指定はinspectと同じ、REPO/TAG/IMAGEIDの3つで一意に指定する。

こんな感じ。

 

Imageからコンテナを作る – docker run –

docker runをするとimageからコンテナが作られる。

 

runしてコンテナを作りつつ、echoコマンドを使ってみる。イメージの指定はinspectと同じ。TAGは省略可能。

するとterminal画面にhello worldと表示される。

イメージからコンテナが作られて、コンテナ上でコマンドが実行されたということ。

なるほどcentosが立ち上がっているようですね。

  • -dオプション バックグラウンドで実行させる
  • -iオプション インタラクティブモードで実行させる

 

コンテナがどこに作られたか – docker ps –

実行中(動作中)のコンテナの一覧を見ることができる。

上記の場合は、echo “hello world”が実行し、動作が終了したので何も表示されない。

 

実行済(動作終了)のコンテナも表示したい場合は

 

表示される項目と実際に表示された内容は下記。

  • CONTAINER ID コンテナのID a37c9e1ed2b4
  • IMAGE イメージの名前 centos
  • COMMAND コマンド  “echo ‘hello world'” 
  • CREATED 27 minutes ago
  • STATUS Exited (0) 27 minutes ago
  • PORTS
  • NAMES wizardly_greider

最新の5つを見たい場合とする。

 

実行中のコンテナをストップする – docker stop | kill –

実行中のコンテナをストップするときは、

  • docker stop
  • docker kill

を使う。こんな感じ。

止めるとdocker psでは表示されなくなり、docker ps -aで2つ表示されることになる。

 

ストップしたコンテナを再開する – docker start –

停止したコンテナを動かしたいときはコンテナIDを指定してstartすればいい。

docker ps -aで停止したコンテナも確認できる。

 

コンテナを削除する – docker rm –

コマンドの後にコンテナIDを指定する。

コンテナを削除するには先にdocker stopで停止しておく必要がある。動いていると削除はできない。

上記の場合は下記になる。

 

実行中のコンテナを作り操作してみる

さきほどはechoだけ実行したら終了してしまったので今度はfreeでメモリの状況を表示する。

 

コマンドは下記。-dでバックグラウンドで実行。free -s 3でメモリの状態を3秒間隔で表示。

これでコンテナは実行中のまま継続する。

この状態なら-aオプションをを付けなくてもdocker psで見ることができる。

 

Docker Desktopにはさっきのechoとは別にもう一つ作られている。

 

コンテナのログを見る – docker logs –

コマンドの後にコンテナIDを指定する。

コンテナIDはdocker psで確認すればいい。

するとfreeで実行したすべての結果が表示される。

 

フォアグラウンドに持ってくる  – docker attach –

 

centOSをインタラクティブで実行する

-iオプションでインタラクティブモード、-tでターミナルを立ち上げる。

runなので対象はイメージであることに注意。

root権限でlinuxに入ったかのようにlsやpwdも使えるようになる。

今回touchコマンドでtest.txtというファイルを作ってみる。

exitで抜けることができるし、抜けたら停止状態になる。

再び動かしたいときはdocker startで動かすことができるが、-iオプションを指定しないとインタラクティブで操作できない。

 

コンテナからイメージを作る – docker commit –

docker commit コンテナID ユーザー名/わかりやすい名前で指定する。

これでイメージが作られた。

docker desktopのimagesでも確認できるし、docker imagesでも確認できる。

 

このイメージを元にコンテナを作る

前回コンテナでtouch test.txtを作ったものをイメージ化したので、そのイメージを元にコンテナを作ったならば、test.txtがあるはず。

やり方は同じだが、イメージの名前は先程名付けたもので指定する。

ちゃんとtest.txtが入っているのを確認できたのでイメージ→コンテナ→イメージになったのを確認できた。

 

Dockerfileを作る

viでDockerfileを作る。

 

ファイルの中身はこんな感じ。詳しくはググるしかなさそう。

 

ビルドする – docker build –

イメージを作る。-tはイメージ名/タグ名を指定する。最後の.はカレントのDockerfileを指定している。

これで作ったDockerfileを元に、kouji/echoという名前のイメージが作れられる。

イメージはdocker imagesで確認できるし、docker run kouji/echoでコンテナを作ることが出来る。

 

Webサーバを立ち上げるDockerfile

これがWebサーバを立ち上げるDockerfile。

ADDでファイルを追加して、EXPOSEでポートを開ける。index.htmlはローカルで作る。

 

RUNするときは下記。コンテナの80ポートに、8080でアクセスする。バックグラウンドで走らせたいので-dオプション。

後はlocalhost:8080にアクセスするとちゃんとindex.htmlで作った内容が表示できた。

 

その後にindex.htmlを修正して、再度8080にアクセスしたけど表示は元のままだった。

ということは、image内にvar/www/htmlの中身のファイル一式が保存されているようです。

 

Docker HubにPushする – docker login –

最初にDockerHubにユーザー登録をする必要がある。

ユーザーIDとメールアドレスとパスワードを決めて入力する。

注意点として、ユーザーIDはイメージの名前と同じにする必要があるみたい。

別にどちらかに合わせればいいので問題ないけど。

 

ターミナルからDockerにログインする。ユーザー名とパスワードを聞かれる。

Login Succeededと表示されたらログイン成功。

 

さきほど作ったものをプッシュする。これだけ。

 

もしdenied: requested access to the resource is deniedというエラーが出たらイメージの名前とDockerHubのユーザIDの相違が原因。

合わせないとだめなのでどちらかに寄せること。

 

名前付きボリュームを作成する

docker volume createコマンドらしい。

 

今回はdocker/getting-startedの入門にあったtodoアプリのものを指定する。

 

ボリュームマウントしてランする

ボリューム名がtodo-dbで、イメージ名がgetting-started、マウントする場所が/etc/todosとする。

になる。

 

名前付きボリュームの詳細を調べる – docker volume inspect –

docker volume inspect ボリューム名とする。

今回の場合はこうなる。

出てきたのがこんな感じ。Moutpointがデータが保存されているディスクの場所。

 

最後に

ふーむ、Dockerか。少しは解ったかも。

imageの中にCentOSやNginxやデータベースだけでなく、ソースコードまで含まれているのなら便利かも。

一式を別の環境に移動するのが便利そう。

スポンサーリンク




スポンサーリンク




-IT関連
-

執筆者:


comment

Your email address will not be published. Required fields are marked *

関連記事

AS400/IBMi SQLで通し番号をつける

SQLで1つカラムを設けてレコードごとに1~通し番号をつけたいと思った。   理由は、ループの中でモーダルウインドウを開くボタンを作る時、対象のIDとボタンのdata-targetを合わせて …

ExcelVBA Dictionaryオブジェクトを使って連想配列

部署・取引先・売上・差益と並んだエクセルがあるとする。 部署取引先コード売上差益 111000015,000,000500,000 111000023,000,000300,000 111000032 …

Amazonアソシエイトリンクを横に並べる方法

今回の記事は私の備忘録みたいなものです。   Amazonのアソシエイトリンクって縦長の小さいやつ。 あれを複数並べたときに縦並びになるので、それを横並びにしたいという話。   [ …

Git Laravelで引っ越しの備忘録

自分の備忘録です。正直自分にわかるようにしか書いていません。 真似て事故っても責任は持てませんのでご了承ください。でも何かの参考になれば幸いです。   開発環境は自席WindowsPCのXA …

AS400/IBMi Laravel-ExcelでERR_INVALID_RESPONSE

このたびXAMPPではなくVagrant+VirtualBoxで開発環境を作ってみました。 一通り動かしてみたら、Laravel-Excelを使ったプログラムが真っ白に。   エラーメッセー …

Adsense広告




文字で検索

人気記事

なぜだか人気記事

読んでほしい順に