✍️
Docker:基本操作
Docker基本操作
コマンド
dockerイメージ関連
- 公式のdockerイメージを検索する
キーワード:nginx
docker search {キーワード} --filter is-official=true
- イメージを取得する
キーワード:nginx
docker image pull {キーワード}
- イメージの確認
// (docker imagsに省略可能)
docker image ls
- イメージの起動
キーワード:ubuntu
docker run {イメージ名} cat /etc/issue
- イメージの起動(bash)
キーワード:ubuntu
docker run -i -t {イメージ名} bash
- イメージの起動(起動時にコマンド実行)
コマンド:python --version
docker run {イメージ名} {コマンド}
- イメージの削除(イメージに紐づくコンテナが削除されていること)
docker rmi {イメージID}
- 全イメージの削除
docker image prune -a
dockerコンテナ関連
- イメージを実行し、コンテナを起動
キーワード:nginx
// docker container run:Dockerイメージを実行
// -d:Dockerコンテナをバックグラウンドで実行
// -p 8080:80:ホスト側のポート番号(8080)と、Docker側のポート番号(80)を紐づける
// –name コンテナ名を付与する
// 実行後は「http://localhost:8080/」にてコンテナの起動を確認
docker container run -d -p 8080:80 --name {付与するコンテナ名} {イメージ名}
- コンテナの稼働状況を確認
docker ps
- 停止しているコンテナを確認
docker ps -a
- コンテナの起動
// nginxコンテナを停止
docker container start nginx
// コンテナの稼働状況を確認
docker ps
- コンテナの停止
// nginxコンテナを停止
docker container stop nginx
// コンテナの稼働状況を確認
docker ps
- コンテナのIPアドレスを取得
CONTAINER ID:90bbb43dd87c
docker inspect {CONTAINER ID} | grep IPAddress
- コンテナの削除
CONTAINER ID:90bbb43dd87c
docker rm {CONTAINER ID}
- 実行中のコンテナ削除
docker container prune
Dockerfile
Dockerfileとは
- Dockerイメージの構成を定義するファイルであり、Docker DSLで記述する
DSL
- Dockerfileにて使用するコマンドは全部で17種類
FROM , ENV , WORKDIR , RUN , ADD(非推奨) , ARGS , CMD , ONBUILD , LABEL , ENTRYPOINT ,
STOPSIGNAL , MAINTAINER(非推奨) , VOLUME , HEALTHCHECK , EXPOSE , USER , SHELL
サンプル
- ubuntuイメージにおけるDockerfileの記述例
Dockerfile
// ubuntuというDocker Imageを使用
FROM ubuntu
// ホストの「hello.txt」ファイルを「/tmp/hello.txt」にコピー
COPY hello.txt /tmp/hello.txt
// 「cat /tmp/hello.txt」コマンドを実行
CMD ["cat", "/tmp/hello.txt"]
- DockerfileからDockerImageを作成
// 「hello」という名前のイメージを作成する
// 「.」はCOPYコマンドを実行する際にどのディレクトリを起点とするかの指定
docker build -t hello .
- DockerImageの実行
docker run hello
Docker関連エラー
イメージ削除時のエラー
- 実行内容
// 対象イメージの削除を実行
docker rmi 42e917aaa1b5
- エラー内容:停止されたコンテナでイメージが使用されているので削除できない
Error response from daemon: conflict: unable to delete 42e917aaa1b5 (must be forced) - image is being used by stopped container 90bbb43dd87c
- 対応方法①:イメージに紐づくコンテナを削除する
// 停止したコンテナを確認しコンテナIDを取得
docker ps -a
// 対象コンテナを削除
docker rm {コンテナID}
// コンテナ削除後確認
docker ps -a
// 対象イメージの削除
docker rmi {イメージID}
// 対象イメージの削除後確認
docker images
- 対応方法②:強制的にイメージを削除する
docker rmi -f {イメージID}
用語
- DSL(DomainSpecificLanguage:ドメイン固有言語):特定の作業を行うために設計された言語であり、DockerにおいてはDockerfileにてDockerDSLを使用し、Dockerイメージ構成を記述するために用いられる
Discussion