docker インストール
CentOS7にdockerをインストールする。
インストール
yumでインストール
yum install docker
自動起動設定とサービス起動
サービスが起動することを確認する。また、自動起動するようにしておく。
systemctl enable docker
systemctl start docker
systemctl status docker
バージョン確認
dockerのバージョンを確認できる。
docker version
docker情報の確認
システム情報を確認できる。
docker info
docker hubにログイン
あらかじめ、docker hubにアカウント登録しておく。
docker login
「Login Succeeded」を表示された成功。
ログアウト
docker hubからログアウトする。
docker logout
docker hub(イメージ)の操作
docker hub上へイメージをPull、Pushする。
公開設定されているイメージであれば他人のものも使用できる。
イメージを検索
今回はcentosのイメージを検索する。
あくまで検索キーワードなので、docker hubのユーザ名とかでも検索できる。
docker search centos
「docker.io/centos」が公式のイメージらしい。
# docker search centos
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/centos The official build of CentOS. 5682 [OK]
イメージをPull
見つけた公式のイメージをダウンロードする。
docker pull -a docker.io/centos
イメージの確認
Pullしたイメージを確認する。
イメージ名を指定することも可能。
docker images
docker images docker.io/centos
イメージの削除
確認したイメージから削除したいイメージの「IMAGE ID」と「REPOSITORY」を指定する。
docker rmi (IMAGE ID) (REPOSITORY)
イメージを全削除
イメージをすべて削除したい場合に使う。
docker rmi `docker images -a -q`
タグ無しのイメージを削除
docker rmi $(docker images | grep '<none>' | awk '{print$3}')
イメージ名の変更
IMAGE ID XXXXXをイメージ名を「USER/cetos7:base」へ変更する。
「USER」部分は自分のユーザ名にする。
docker tag XXXXX USER/cetos7:base
docker tag (IMAGE ID) (REPOSITORY:TAG)
「:TAG」を省略すると、latestになる。
docker hubへイメージを保存
イメージ名を変更したイメージを自分のdocker hubへPushする。
docker push USER/cetos7:base
docker push (REPOSITORY:TAG)
Pushしたイメージの確認
ブラウザからdocker hubへログインし、イメージがPushされていることを確認する。
デフォルト動作(?)だとPushしたイメージは非公開設定になっていたので、docker search コマンドだと見つけられなかった。
コンテナの操作コマンド
Pullしたイメージをコンテナとして起動して動かしてみる。
コンテナ起動
イメージからコンテナを起動する。
docker run -itd --name test01 USER/centos7:base /bin/bash
docker run -itd --name (コンテナ名) (REPOSITORY:TAG) /bin/bash
「--name」は起動するコンテナ名を任意で指定する。
ポート転送を設定してコンテナ起動
イメージからコンテナを起動し名前を付けて接続し、ホスト8080番ポートをコンテナ80番へ転送するように起動する。
docker run -itd -p 8000:80 --name test02 USER/centos7:base /bin/bash
docker run -itd -p (ホストポート):(コンテナポート) --name (コンテナ名) (REPOSITORY:TAG) /bin/bash
バックグラウンドでの起動について
「-d」をつけることでバックグラウンドでもコンテナが起動している状態になる。
「-d」無しで起動すると、コンテナ起動直後にコンテナにログインし、exitすると停止する。
コンテナ確認
コンテナ一覧を確認する。
docker ps -a
実行例
STATUSがUpになり、コンテナが起動していることが確認できる。
また、test02のコンテナはポート転送が設定されていることも確認できる。
※CONTAINER IDとIMAGEのユーザ名はマスキング。
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
XXXXXXXXXXXX XXXXXX/centos7:base "/bin/bash" 10 seconds ago Up 9 seconds 0.0.0.0:8000->80/tcp test02
XXXXXXXXXXXX XXXXXX/centos7:base "/bin/bash" 19 seconds ago Up 18 seconds test01
コンテナ起動・停止
コンテナを指定して、起動・停止する。
docker stop test01
docker start test01
docker stop (CONTAINER ID)もしくは(NAME)
対象のコンテナを複数指定することも可能。
docker stop test01 test02
コンテナ接続
起動したコンテナに接続する
docker attach test01
docker attach (コンテナ名)
コンテナ切断
exitするとコンテナが終了してしまう。そのため、コンテナを終了せずに抜ける場合は「Ctrl+p,Ctrl+q」
exitで終了させない場合
以下のコマンドで接続すればexitしても終了しない。
docker exec -it CONTAINER /bin/bash
コンテナを保存
コンテナをイメージとして保存する。
REPOSITORY名は変えずにTAGで管理しておくと良いかも。
docker commit test01 USER/centos7:new
docker commit (対象のコンテナ名) (REPOSITORY:TAG)
コンテナ削除
作成したコンテナを削除する。
削除するコンテナはあらかじめ停止させること。
docker rm test01
docker rm (CONTAINER ID)もしくは(NAME)
対象のコンテナを複数指定することも可能。
docker rm test01 test02
停止コンテナの一括削除
停止しているコンテナを一括で削除できる。
docker rm `docker ps -a -q`