0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker/コンテナ仮想環境Advent Calendar 2023

Day 8

Dockerの基本操作(初心者向け)

Last updated at Posted at 2023-11-28

概要

Dockerのイメージやコンテナの基本操作についてまとめます。

イメージの操作

イメージのビルド

docker image build -t [イメージ名:タグ名] [Dockerfileを配置しているディレクトリパス]

イメージの取得

docker image pull [イメージ名:タグ名]

イメージ一覧

docker image ls

docker image lsの実行例

docker image ls
REPOSITORY  TAG     IMAGE ID       CREATED         SIZE
nginx       latest  a6bd71f48f68   4 days ago      187MB
python      latest  caacd5b6b541   5 weeks ago     1.02GB
ubuntu      latest  e4c58958181a   7 weeks ago     77.8MB

表示内容詳細

項目名 内容 備考
REPOSITORY リポジトリ名
TAG タグ名
IMAGE ID イメージID
CREATED イメージ作成からの経過時間
SIZE イメージのサイズ

使用していないイメージの一括削除

docker image prune

イメージのpush(docker hubに対するpush)

docker image push

コンテナの操作

コンテナの実行(基本形)

docker container run -d -it [イメージ名 or イメージID]

コンテナ実行時のオプション

オプション名 内容 備考
--name 実行コンテナの名前をつける 開発用途ではよく利用されるが、本番ではあまり使用しないかも。同じ名前のコンテナは作成できないので
-d バックグラウンドで起動(デーモン化)
-p コンテナのポート指定 8080:80とか指定するとホストの8080ポートへのアクセスはコンテナの80番にフォワードする
-i docker起動後にコンテナ側の標準入力をつなぎっぱなしにする
-t 疑似端末を有効にする -iがついていないと端末を起動しても入力できないので-itでセットで使う事が多い
-rm コンテナ停止と同時にコンテナを破棄する
-v Data Volumeの作成 ホスト側ディレクトリ:コンテナ側ディレクトリで指定する

コンテナの一覧表示

docker container ls

オプション

オプション名 内容 備考
--filter lsの結果を指定の条件でfiletrする コンテナ名で抽出するときは"name=xxx"、イメージで抽出するときは、"ancestor=xxx:xx"
-a 終了したコンテナを取得する

docker container lsの実行例

docker container ls    
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
df8883a1952a   ubuntu    "/bin/bash"   3 minutes ago   Up 3 minutes             elated_nash

表示内容詳細

項目名 内容 備考
CONTAINER ID コンテナに付与されるユニークID
IMAGE コンテナ作成に使用されているイメージ
COMMAND コンテナで実行されているプロセス
CREATED コンテナ実行からの経過時間
STATUS コンテナの状態
PORTS ホストとコンテナのポート -pで指定したものオプションなしならポートフォワードもなし
NAMES コンテナの名前 --nameオプション使用すた場合は、--nameで指定したもの

コンテナの停止

docker container stop [コンテナ名 or コンテナID]

コンテナの再起動

docker container restart [コンテナ名 or コンテナID]

コンテナの破棄

docker container rm [コンテナ名 or コンテナID]
※基本停止中のコンテナしか破棄できないが、`-f`オプションで強制破棄できる。

コンテナ標準出力の取得

docker container logs [コンテナ名 or コンテナID]

実行中のコンテナでコマンド実行

docker container exec [コンテナ名 or コンテナID] [xxx(実行するコマンド)]

(以下のようにするとあたかもコンテナ内にSSHしたかのような使い方もできる)
docker container exec -it コンテナIDかコンテナ名 bash

ホスト,コンテナ間のファイルコピー

docker container cp [コンテナ名 or コンテナID]:[コンテナ内のコピー元] [ホスト側のコピー先]
docker container cp [ホスト側のコピー元] [コンテナ名 or コンテナID]:[コンテナ内のコピー先]

使用していないコンテナの一括削除

docker container prune

コンテナ単位のシステムリソース利用状況

docker container stats

Dockerfileの記載方法

オリジナルのイメージを作成するには、Dockerfileを書く必要があるのでnginxのオリジナルイメージを作成を例に説明します。githubにおいておきました。(かなり簡易的なものです。)

# dockerイメージのベースとなるイメージを指定、最新の安定版1.24.0をタグ指定
# https://nginx.org/en/download.html
FROM nginx:1.24.0

# コンテナに入って操作するときvim使いたいので、aptでインストールしておく
RUN apt update
RUN apt install -y vim

# ホスト側で用意したnginx設定ファイルをコンテナ側にコピー
COPY ./conf/default.conf /etc/nginx/conf.d/default.conf
# 初期のindex.htmlを送付
COPY ./index.html /usr/share/nginx/html/index.html

# 公開ポートを指定、今回はwebなので80番開けておく
EXPOSE 80

# デーモンはオフにしてフォアグラウンドで実行
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]

上記のリポジトリをcloneしてもらったディレクトリで以下のコマンドを実行するとイメージがbuildされます。

# git clone
git clone git@github.com:Shota0616/nginx-dockerfile.git

# イメージのbuild
docker image build -t nginx-base .

Dockerfileの説明

項目名 内容 備考
FROM Dockerイメージのベースとなるイメージを指定
RUN Dockerイメージ作成時に実行されるコマンドを指定
COPY ホスト上のファイルやディレクトリなどをコンテナ内にコピー
EXPOSE コンテナの開放ポートを指定
CMD コンテナ実行時に実行するコマンドを指定

その他

使用していないdockerリソースの一括削除(イメージ、コンテナ、ボリューム、ネットワーク)

docker system prune

Docker Hubのログイン

docker login -u [ユーザーID] -p [パスワード]

kubernetes, kubectlのインストール

# linux(ubuntu)
sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

# linux(centos)
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubectl

# macos
brew install kubectl

# Windows
curl -LO https://dl.k8s.io/release/v1.28.4/bin/windows/amd64/kubectl.exe

Exitedしてしまったコンテナに入る

# Exitedしてしまったコンテナをコミット
docker commit [コンテナID] [適当な名前]

# コンテナに入る
docker run --rm -it [適当な名前] bash
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?