13,009
回編集
編集の要約なし |
|||
84行目: | 84行目: | ||
<br> | <br> | ||
また、管理者権限不要でDockerを使用する場合は、以下のコマンドを実行する。<br> | また、管理者権限不要でDockerを使用する場合は、以下のコマンドを実行する。<br> | ||
sudo usermod -aG docker $ | sudo usermod -aG docker $(whoami) | ||
<br><br> | <br><br> | ||
110行目: | 110行目: | ||
# 追記 | # 追記 | ||
export DOCKER_HOST='tcp://localhost:2375' | export DOCKER_HOST='tcp://localhost:2375' | ||
<br><br> | |||
== Dockerコマンド == | |||
ここでは、Dockerのコマンドを記載する。<br> | |||
<br> | |||
イメージの一覧表示<br> | |||
sudo docker image ls | |||
<br> | |||
イメージの削除(IMAGE IDを指定する。IMAGE IDは上述の「イメージの一覧表示」で確認可能)<br> | |||
sudo docker rmi -f <IMAGE ID> | |||
<br> | |||
コンテナの一覧表示<br> | |||
sudo docker container ls | |||
sudo docker container ls –all | |||
<br> | |||
イメージの実行(<IMAGE NAME>はイメージの名前であり、<COMMAND>はイメージ上で実行するコマンドである)<br> | |||
sudo docker run <IMAGE NAME> <COMMAND> | |||
<br> | |||
実行コマンドが、/bin/bashのような対話型(インタラクティブ)なコマンドの場合は、-itオプションを指定する。<br> | |||
sudo docker run –it <IMAGE NAME> /bin/bash | |||
<br> | |||
detachedモード(バックグラウンドモード)で実行する場合は、–dオプションを指定する。<br> | |||
sudo docker run -d dockersamples/static-site | |||
<br> | |||
実行中のコンテナの一覧を表示する。<br> | |||
sudo docker ps | |||
<br> | |||
コンテナの停止<br> | |||
sudo docker stop <コンテナID> | |||
<br> | |||
コンテナの削除<br> | |||
sudo docker rm <コンテナID> | |||
<br> | |||
コンテナの停止と削除を同時に実施する。<br> | |||
sudo docker rm –f <コンテナID> | |||
<br> | |||
コンテナに名前をつける。(コンテナIDの代わりに指定可能)<br> | |||
sudo docker run --name static-site -d dockersamples/static-site | |||
<Br> | |||
-Pオプションを指定すると、コンテナが使うポートがランダムにホストのポートにマッピングされる。<br> | |||
sudo docker run -d -P dockersamples/static-site | |||
<br> | |||
-pオプションを使用すると、コンテナのポートをマッピングするホストのポートを指定できる。(以下の例は、ホストの12345ポートをコンテナの80ポートにマッピングする)<br> | |||
sudo docker run –p 12345:80 dockersamples/static-site | |||
<br> | |||
どのポートにマッピングされたかはdocker psコマンドで確認できる。<br> | |||
また、以下のコマンドでも確認できる。<br> | |||
sudo docker port <コンテナID> | |||
# 出力例 | |||
443/tcp -> 0.0.0.0:32770 | |||
80/tcp -> 0.0.0.0:32771 | |||
<br><br> | |||
== Dockerイメージの作成 == | |||
Dockerイメージを作成するには、まず、Dockerfileを記述する必要がある。(Dockerfileはテキストファイルである)<br> | |||
このDockerfileに、インストールするOSやライブラリを指定して、最後に、コンテナで実行したいソフトウェアを指定する。<br> | |||
<br> | |||
まず、Dockerfileでは、Base Imageを指定する。(例えば、OSのImageはBase Imageの一種である)<br> | |||
Base Imageは"FROM"で指定する。以下の例は、CentOS 7を指定する例である。<br> | |||
FROM centos:centos7 | |||
<br> | |||
次に、コンテナが必要とするソフトウェアのインストール等を行う。(各OSのパッケージ管理システムを使用すると簡単である)<br> | |||
CentOSであればyum、Ubuntuならaptを使用する。(yumやapt等のコマンドの実行は、RUNで行う)<br> | |||
RUN yum install xxxx | |||
<br> | |||
特定のファイルをコンテナに埋め込むには、"COPY"を使用する。コンテナのどこにファイルを埋め込むのかを指定する。<br> | |||
COPY <File Name> /home/xxx | |||
<br> | |||
コンテナが実行するソフトウェアが通信を行う場合、そのソフトウェアは特定のポート番号を使用する。(例えば、Webサーバであれば80番や443番を使用する)<br> | |||
そのポート番号を、ホストOSのポート番号とマッピングする必要がある。<br> | |||
マッピングは、コンテナを実行する際に使用するが、そのためには、コンテナのポート番号を公開する必要がある。<br> | |||
それを行うには、"EXPOSE"を使用する。<br> | |||
EXPOSE 80 | |||
<br> | |||
コンテナが実行するソフトウェアは、"CMD"で指定する。<br> | |||
CMDは、Dockerfileに1個だけである。諸々の準備の完了後、最後にCMDを指定する。<br> | |||
CMD ["python", "/usr/src/app/app.py"] | |||
<br> | |||
以下の例では、pythonがコマンドで、その後は、コマンドに対する引数である。つまり、上記の例は、以下のコマンドをコンテナ上で実行することを意味する。<br> | |||
python /usr/src/app/app.py | |||
<br> | |||
Dockerfileが完成したら、イメージを作成する。<br> | |||
-tオプションを使用してイメージの名前を指定する。<br> | |||
その後ろの"."は、Dockerfileがあるディレクトリのパスである。Dockerfileと同じディレクトリであれば、"."でoである。<br> | |||
Dockerfileの内容が正しければ、イメージが作成される。<br> | |||
sudo docker build -t xxxx/yyyy . | |||
<br> | |||
プロキシ配下でbuildする場合は、プロキシを設定する必要がある。<br> | |||
例えば、コンテナ上でyumやaptを使用する場合は、プロキシの設定が必要である。<br> | |||
環境変数は、"ENV"で指定できる。<br> | |||
ENV https_proxy "http://proxy.hoge.server:8080/" | |||
ENV http_proxy "http:// proxy.hoge.server:8080/" | |||
<br> | |||
<u>'''※注意(yum関連のエラー)'''</u><br> | |||
yumのリポジトリが見つからないというエラーが表示される場合がある。<br> | |||
標準のリポジトリではなく、特定のレポジトリを指定する場合、そのリポジトリを記載した設定ファイル(CentOS-Base.repoなど)をCOPYするように、<br> | |||
Dockerfileに記載しておけばよい。<br> | |||
COPY CentOS-Base.repo /etc/yum.repos.d/ | |||
<br> | |||
yumの処理は、ユーザに対して"yes or no"を訊ねる場合があるので、自動的にyesと答えないと途中でイメージ作成が止まるので、以下のように記述する。<br> | |||
CMD yum update –y | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:SUSE]] | [[カテゴリ:SUSE]] |