この記事では以下のdockerコマンドについて説明しています。
この記事で解説するdockerコマンド
docker search
docker image
docker container
docker start
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