✍️

Docker:基本操作

2025/01/19に公開

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