【8/27まで】Udemyの人気コースが今なら1,200円から!!

docker-memo

この記事では以下のdockerコマンドについて説明しています。

この記事で解説するdockerコマンド
  1. docker search
  2. docker image
  3. docker container
  4. docker start
  5. docker stop

Dockerfileを作成してからコンテナを起動するまでの手順

STEP.1
Dockerfileの作成
Dockerfileというファイル名で作成します。
STEP.2
ビルド
ビルドするとイメージが生成されます。
docker build -t [生成するイメージの名前][:タグ名][Dockerfileの格納場所]
STEP.3
Docker イメージの実行
中身1
STEP.3
Docker コンテナの起動
中身1

docker imageコマンド

Docker Hubに公開されているイメージを検索する

Docker Hubに公開されているイメージを検索するには以下のコマンドを実行します。

# docker search 検索文字列
# gitlabを検索する例
docker search gitlab

dockerイメージをpullする

#docker image pull [オプション] イメージ名 [:タグ名]
docker image pull centos:7

タグ名を省略すると最新版(latest)を取得します。

以下のようにイメージ名の代わりにURLを用いてpullすることもできます。
その場合、”https://”は省いて指定します。

docker image pull gcr.io.tensorflow/tensorflow

ダウンロードしたイメージの一覧を確認するコマンド

docker image ls

REPOSITORY          TAG       IMAGE ID       CREATED       SIZE
gitlab/gitlab-ce    latest    4f638aa756e4   2 days ago    2.31GB
docker101tutorial   latest    51b4693e2f08   7 days ago    28.3MB
node                lts       6a64cec3731e   10 days ago   944MB
node                latest    c4fbd6393264   10 days ago   905MB
nginx               latest    87a94228f133   12 days ago   133MB
alpine/git          latest    612b988140be   2 weeks ago   27.4MB

イメージを削除するコマンド

docker image lsの結果から削除したいイメージを見つけ、以下のコマンドを実行します。

# docker image rm repository[:tag]
docker image rm node:lts

docker containerコマンド

イメージを使ってコンテナの作成/起動を行うコマンド

docker container runは、コンテナの生成と起動を同時に行うコマンドです。
コンテナの生成のみを行いたい場合はdocker container createを実行してください。

# docker container run --name コンテナ名 -d -p 80:80 イメージ名
# nginxを起動する例
docker container run --name testserver -d -p 80:80 nginx

元イメージが同じであってもコンテナ名が異なれば別コンテナとして作成されます。
そのため以下のように実行すると「testserver2」「testserver3」という2つのコンテナが作成されます。

docker container run --name testserver2 -d -p 80:80 nginx
docker container run --name testserver3 -d -p 80:80 nginx

なお、すでに存在しているコンテナ名を指定すると以下のようにエラーになります。

PS C:\workspace\app-node-js> docker container run --name testserver -d -p 80:80 nginx 
docker: Error response from daemon: Conflict. The container name "/testserver" is already in use by container "18b5aa5aab0751da8231f2b868a64a758e75bba838e13e08fe103c4ef1e54689". You have to remove (or rename) that container to be able to reuse that name.

すでに存在しているコンテナを起動するには以下のdocker startコマンドを使用します。

コンテナを起動するコマンド

既にコンテナが生成された状態の場合に、以下のコマンドで起動することができます。

# docker start コンテナ名
docker start testserver

複数のコンテナを一括して起動したい場合は、以下のようにコンテナ名を半角スペース区切りで指定します。

docker start testserver testserver2

起動しているコンテナの一覧を確認するコマンド

docker container ps

停止中のコンテナも含めてすべてのコンテナの一覧を確認するコマンド

docker container ps --all

#以下の4種類が使える
docker container ps --all
docker container ps -a
docker container ls --all
docker container ls -a

起動しているコンテナを停止するコマンド

# docker stop コンテナ名
docker stop testserver

コンテナを削除するコマンド

# docker contaienr rm コンテナ名
docker container rm testserver

コンテナ名をリネームするコマンド

コンテナ名をリネームするにはdocker conatiner rename 現在のコンテナ名 新しいコンテナ名と指定します。

# docker conatiner rename 現在のコンテナ名 新しいコンテナ名
PS C:\wk_docker> docker container ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                     PORTS     NAMES
6fcc465b3d29   nginx     "/docker-entrypoint.…"   23 seconds ago   Exited (0) 9 seconds ago             oldserver
PS C:\wk_docker>
PS C:\wk_docker> docker container rename oldserver newserver
PS C:\wk_docker>
PS C:\wk_docker> docker container ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                      PORTS     NAMES
6fcc465b3d29   nginx     "/docker-entrypoint.…"   45 seconds ago   Exited (0) 31 seconds ago             newserver

コンテナ内のファイルをコピーする

# docker container cp コンテナ名:コピー元ファイル名 コピー先ファイル名
docker container cp testserver:/etc/nginx/nginx.conf ./nginx.conf

# pwdを用いて以下のようにも記述できます。
docker container cp testserver:/etc/nginx/nginx.conf ${pwd}/nginx.conf

# ホスト側のファイルをコンテナに送る
docker container cp ./test.txt testserver:/etc/nginx/test1.txt

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です