Docker | POPWEB https://blog.popweb.dev Developer, Blogger, Illustrator in Tokyo. Fri, 29 Oct 2021 03:53:17 +0000 ja hourly 1 https://wordpress.org/?v=6.7.6 https://storage.googleapis.com/gcs.pop-web.net/2021/01/favicon.ico Docker | POPWEB https://blog.popweb.dev 32 32 ngrokでDockerのローカル開発環境を簡単にWEB公開する方法 https://blog.popweb.dev/server/ngrok-docker/ https://blog.popweb.dev/server/ngrok-docker/#respond Fri, 18 Dec 2020 07:48:53 +0000 https://blog.popweb.dev/?p=1543 ローカル開発環境の状況をクライアントへ確認してもらいたい時、もしくは複数端末でブラウザ確認したい時は多々ある。 しかし、ちょっと確認してもらえればいいのに、いちいちテスト環境用のサーバを用意してにアップロードするのは面倒 […]

The post ngrokでDockerのローカル開発環境を簡単にWEB公開する方法 first appeared on POPWEB.]]>
ローカル開発環境の状況をクライアントへ確認してもらいたい時、もしくは複数端末でブラウザ確認したい時は多々ある。

しかし、ちょっと確認してもらえればいいのに、いちいちテスト環境用のサーバを用意してにアップロードするのは面倒。

そこで、ローカル開発環境を簡単にWEB上に公開できるツール「ngrok」(エヌジーロック?

)を使う。

ngrokのインストール

Homebrewがインストールしているか確認。

していなければインストールしておく。

$ brew -v

以下のコマンドでngrokをインストール

$ brew install --cask ngrok
又は、
$ brew cask install ngrok

Dockerのローカル開発環境をWEB公開する

Dockerのローカル開発環境をWEB公開するには、まずはポートを確認。

以下のようなURLで開発環境を確認している場合

http://localhost:10080/

以下の、コマンドでngrokが起動する

$ ngrok http 10080

起動すると公開用のURLが発行される。

Forwardingのhttp://〜にアクセスすれば、WEB公開できたことが確認できる。

公開を止める時は、Ctrl + C

The post ngrokでDockerのローカル開発環境を簡単にWEB公開する方法 first appeared on POPWEB.]]>
https://blog.popweb.dev/server/ngrok-docker/feed/ 0
DockerfileのEXPOSE命令は実際にポートをあけない https://blog.popweb.dev/server/dockerfile-expose/ https://blog.popweb.dev/server/dockerfile-expose/#respond Wed, 25 Mar 2020 16:03:04 +0000 https://blog.pop-web.net/?p=867 DockerfileのEXPOSEに外部に公開するポートを記述するが、これを記述することで実際にポートをあけて公開するわけではない。 開発者がDockerfileを見たときに「コンテナ起動時にどのポートを使用するのか」を […]

The post DockerfileのEXPOSE命令は実際にポートをあけない first appeared on POPWEB.]]>
EXPOSE 5000

DockerfileのEXPOSEに外部に公開するポートを記述するが、これを記述することで実際にポートをあけて公開するわけではない。

開発者がDockerfileを見たときに「コンテナ起動時にどのポートを使用するのか」を確認するためものであり、公開されると想定されるポートを記述しているだけである。

実際にコンテナ起動時にポートを外部へ公開する場合は、docker run に-pオプションを使う。

docker run -p 5000:5000 sample-image

また、-Pオプションをつけた場合は全ポート公開となる。

docker run -P sample-image
The post DockerfileのEXPOSE命令は実際にポートをあけない first appeared on POPWEB.]]>
https://blog.popweb.dev/server/dockerfile-expose/feed/ 0
docker-compose runとdocker-compose execの違い https://blog.popweb.dev/server/docker-compose-run-exec/ https://blog.popweb.dev/server/docker-compose-run-exec/#respond Mon, 23 Mar 2020 15:26:57 +0000 https://blog.pop-web.net/?p=853 docker-composeコマンドのrunとexecの大まかな違いについて説明。 目次 run例exec例 run コンテナを起動し、コマンドを実行できる。 起動していないコンテナに実行することができる。 例 exec […]

The post docker-compose runとdocker-compose execの違い first appeared on POPWEB.]]>
docker-composeコマンドのrunとexecの大まかな違いについて説明。

run

コンテナを起動し、コマンドを実行できる。

起動していないコンテナに実行することができる。

docker-compose run app ash

exec

起動中のコンテナに対して、コマンドを実行できる。

起動していないコンテナには実行できないが、runよりも高速に動作する。

docker-compose exec app ash
The post docker-compose runとdocker-compose execの違い first appeared on POPWEB.]]>
https://blog.popweb.dev/server/docker-compose-run-exec/feed/ 0
docker-composeの「up」「run」「start」の違い https://blog.popweb.dev/server/docker-compose-up-run-start/ https://blog.popweb.dev/server/docker-compose-up-run-start/#respond Fri, 13 Mar 2020 16:45:00 +0000 https://blog.pop-web.net/?p=786 docker-compseコマンドの「up」「run」「start」の違いがよく分かっていなくて、ちゃんと調べてみた。 そしたら、以下の日本語版のドキュメントで詳しく解説してくれていた。 up ・ run ・ start […]

The post docker-composeの「up」「run」「start」の違い first appeared on POPWEB.]]>
docker-compseコマンドの「up」「run」「start」の違いがよく分かっていなくて、ちゃんと調べてみた。

そしたら、以下の日本語版のドキュメントで詳しく解説してくれていた。

up ・ run ・ start の違いは何ですか?

The post docker-composeの「up」「run」「start」の違い first appeared on POPWEB.]]>
https://blog.popweb.dev/server/docker-compose-up-run-start/feed/ 0
Dockerのクラスタとは? https://blog.popweb.dev/server/docker-cluster/ https://blog.popweb.dev/server/docker-cluster/#respond Tue, 10 Mar 2020 16:04:00 +0000 https://blog.pop-web.net/?p=765 Dockerには、Docker Swarmというクラスタ管理機能というツールがある。 このクラスタとはなにか。 クラスタとは、複数のシステムをまとめて1つのシステムとして振る舞っているもの。 クラスタ化することをクラスタ […]

The post Dockerのクラスタとは? first appeared on POPWEB.]]>
Dockerには、Docker Swarmというクラスタ管理機能というツールがある。

このクラスタとはなにか。

クラスタとは、複数のシステムをまとめて1つのシステムとして振る舞っているもの。

クラスタ化することをクラスタリングと言われたりもする。

Docker Swarmでは、複数のDockerホストをネットワーク接続しグループ化することで1つのDockerホストのように管理ができる。

これを、Dockerのクラスタ管理という。

The post Dockerのクラスタとは? first appeared on POPWEB.]]>
https://blog.popweb.dev/server/docker-cluster/feed/ 0
Dockerコンテナの一括削除コマンド https://blog.popweb.dev/server/docker-container-all-remove/ https://blog.popweb.dev/server/docker-container-all-remove/#respond Mon, 09 Mar 2020 13:11:00 +0000 https://blog.pop-web.net/?p=760 停止中のコンテナ、未使用イメージ、未使用ボリュームを削除するコマンド ※ちなみに「prune」は、切り取る、削る、取り除くといった意。

The post Dockerコンテナの一括削除コマンド first appeared on POPWEB.]]>
停止中のコンテナ、未使用イメージ、未使用ボリュームを削除するコマンド
$ docker system prune

※ちなみに「prune」は、切り取る、削る、取り除くといった意。

The post Dockerコンテナの一括削除コマンド first appeared on POPWEB.]]>
https://blog.popweb.dev/server/docker-container-all-remove/feed/ 0
【Docker初心者向け】Docker Machineとは? https://blog.popweb.dev/server/docker-machine/ https://blog.popweb.dev/server/docker-machine/#respond Sat, 07 Mar 2020 15:56:00 +0000 https://blog.pop-web.net/?p=748 Docker MachineとはDocker(Dockerホスト)の実行させる仮想環境を管理するツール。 当初、DockerはLinux環境でしか使えなかった。そのため、MacやWindowsではVirtualBoxで仮 […]

The post 【Docker初心者向け】Docker Machineとは? first appeared on POPWEB.]]>
Docker MachineとはDocker(Dockerホスト)の実行させる仮想環境を管理するツール。

当初、DockerはLinux環境でしか使えなかった。そのため、MacやWindowsではVirtualBoxで仮想環境を構築しその上にDockerを動作させていた。

しかし、Docker for MacやDocker for Windowsなどが登場して、単にDockerを利用する際には、Docker Machineは使われなくなった。

使われる場合としては、AWSやGCPといったクラウド環境へDocker環境を構築する際にに使われる。

Docker Machineが便利なところは、コマンドラインからリモートのクラウド環境下でDockerホストを簡単に作成・管理するができること。

Docker Machineは使うには、事前にVirtualBoxをインストールしておく。

Docker Machineの基本操作

Dockerホストのリスト表示

docker-machine ls

Dockerホストの作成・起動

「–driver」で仮想化のドライバーとしてvirtualboxを使用し名前をdefaultという名のDockerホストを作成する。作成と同時に起動もしてくれる。--driver virtualboxは省略可。

docker-machine create --driver virtualbox default

Dockerホストの停止

docker-machine stop default

Dockerホストの起動

docker-machine start default

Dockerホストに接続

作成したDockerホストへ接続する。

まず、接続対象のDockerホストを設定する。envコマンドを使う。

docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/hogeyama/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env default)

いろいろと環境設定がでてくるが、一番下のコマンドを入力すれば自動で設定される。

eval $(docker-machine env default)

docker-machine lsでdockerホストのACTIVEステータスが「*」になってアクティブになっていること確認。

適当なコンテナを起動する。

docker run -d -p 8080:80 nginx

sshコマンドでssh接続する。

docker-machine ssh default

接続できたら、docker ps -aなどで先程作成したnginxのコンテナがあることが確認できる。

また、DockerホストのIPを確認するにはipコマンド確認できる。

docker-machine ip default

表示されたIPの8080番ポートをつかってブラウザでアクセスすると、nginxデフォルトページが確認できる。

http://{IPアドレス}:8080

Dockerホストの接続対象の解除

接続対象のDockerホストを解除するには、envコマンドに-uオプションをつける。

docker-machine env -u

そして、このコマンドで最後に表示されたコマンドを入力することで解除ができる。

eval $(docker-machine env -u)

docker-machine lsでdockerホストのACTIVEステータスが「-」になっていることを確認。

The post 【Docker初心者向け】Docker Machineとは? first appeared on POPWEB.]]>
https://blog.popweb.dev/server/docker-machine/feed/ 0
【Docker Machine】docker-machine command not foundとなるので手動でインストール https://blog.popweb.dev/server/docker-machine-install/ https://blog.popweb.dev/server/docker-machine-install/#respond Fri, 06 Mar 2020 10:52:00 +0000 https://blog.pop-web.net/?p=745 Docker for Macをインストールしたが、docker-machineとコマンド入力してもそんなもんは見つからないと言われ、Docker Machineが使えなかった。 調べてみると、以前はDockerインストー […]

The post 【Docker Machine】docker-machine command not foundとなるので手動でインストール first appeared on POPWEB.]]>
Docker for Macをインストールしたが、docker-machineとコマンド入力してもそんなもんは見つからないと言われ、Docker Machineが使えなかった。

調べてみると、以前はDockerインストールと同時に一緒インストールされていたが、今はされない模様。

なので、以下のURL先を参考に手動でインストールする。

Releases · docker-archive-public/docker.machine
Machine management for a container-centric world. Contribute to docker-archive-public/docker.machine development by crea...

URL先を参考に以下のコマンドを入力。

curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine && \
  chmod +x /usr/local/bin/docker-machine

これで、Docker Machineが使えるようになる。

The post 【Docker Machine】docker-machine command not foundとなるので手動でインストール first appeared on POPWEB.]]>
https://blog.popweb.dev/server/docker-machine-install/feed/ 0
【Docker初心者向け】commitコマンドでイメージを作成 https://blog.popweb.dev/server/docker-commit/ https://blog.popweb.dev/server/docker-commit/#respond Thu, 05 Mar 2020 10:10:00 +0000 https://blog.pop-web.net/?p=743 docker commitでコンテナ内で作業した内容を、イメージとして保存することができる。 コマンドは以下のよう。 実際に適当なコンテナを起動してシェルに接続して変更をしてみる。 シェルに接続する。 tmpディレクトリ […]

The post 【Docker初心者向け】commitコマンドでイメージを作成 first appeared on POPWEB.]]>
docker commitでコンテナ内で作業した内容を、イメージとして保存することができる。

コマンドは以下のよう。

docker commit {コンテナID or コンテナ名} {新しいイメージ名}:{タグ名}

実際に適当なコンテナを起動してシェルに接続して変更をしてみる。

docker run --name nginx-test -it -d --rm nginx /bin/bash

シェルに接続する。

docker exec -it nginx-test /bin/bash

tmpディレクトリに任意サイズのファイルを作成する。

ここでは、1MBファイルを作成

cd tmp/
dd if=/dev/zero of=dummy10M bs=1M count=1

exitで接続を抜ける

exit

docker commitで新しいイメージを作成する。

docker commit nginx-test nginx-test:tag1

docker imagesで新しくイメージができていることを確認。

新しいイメージでコンテナを起動してシェルに接続、1MBファイルがあることを確認する。

docker run -it nginx-test:tag1 /bin/bash
cd tmp/
ls -lh
total 1.0M
-rw-r--r-- 1 root root 1.0M Mar  1 08:54 dummy10M

また、イメージに過去にどんなレイヤーが追加されたの確認するにはdocker historyを使う。

docker history {イメージID or イメージ名}

ちなみに、docker historyを確認しても、詳しいコンテナ内のコマンド操作は記載されることはない。

なので、基本的にはDockerfileでコマンド操作を記述しイメージを変更・作成することが推奨されている。

The post 【Docker初心者向け】commitコマンドでイメージを作成 first appeared on POPWEB.]]>
https://blog.popweb.dev/server/docker-commit/feed/ 0
【Docker初心者向け】シェルの接続(attach,exec) https://blog.popweb.dev/server/docker-attach-exec/ https://blog.popweb.dev/server/docker-attach-exec/#respond Wed, 04 Mar 2020 07:35:00 +0000 https://blog.pop-web.net/?p=739 Dockerのコンテナにシェル接続する方法は2つある。 docker attachとdocker exec。 docker attach exitコマンドで接続を抜けると、コンテナが停止してしまう。 コンテナを停止させず […]

The post 【Docker初心者向け】シェルの接続(attach,exec) first appeared on POPWEB.]]>
Dockerのコンテナにシェル接続する方法は2つある。

docker attachdocker exec

docker attach

docker attach {コンテナID or コンテナ名}

exitコマンドで接続を抜けると、コンテナが停止してしまう。

コンテナを停止させずに接続から抜けたい場合は、「Ctrl + P」「Ctrl + Q」とする。

docker exec

docker exec -it {コンテナID or コンテナ名} /bin/bash

exexは、コンテナ内の任意のコマンドを実行できるコマンド。

exitコマンドで接続を抜けても、コンテナは停止しない。

The post 【Docker初心者向け】シェルの接続(attach,exec) first appeared on POPWEB.]]>
https://blog.popweb.dev/server/docker-attach-exec/feed/ 0