Docker コンテナの作成/実行
Docker コンテナ
イメージをベースとして実行された実行環境
コンテナの作成/実行
docker run -it --name {コンテナ名} {イメージ名} {実行コマンド}
※イメージ名はローカルにない場合、ダウンロードされる。
run コマンド =(createコマンド+startコマンド)
createコマンド:コンテナを作成のみ
startコマンド:作成済みのコンテナを開始する。
$ docker run -it --name my-server docker.io/centos:6 /bin/bash root@aec32698405e :/#
CentOsベースイメージから、コンテナ名my-serverを作成・起動する。 コンテナにログイン状態になる
よく使うオプションについて
オプション | 内容 |
---|---|
-i, --interative=false | コンテナの標準入力を開く |
-t, --tty=false | tty(端末デバイス)を使う |
-d, --detach=false | コンテナを生成し、バックグラウンドで実行する |
--name | コンテナ名 |
バックグラウンドで起動する。
「-d」オプションでバックグラウンド起動にんる。 「-itd」でもOK
docker run -itd --name my-server docker.io/centos:6 /bin/bash
CentOsベースイメージから、コンテナ名my-serverを作成・起動する。 コンテナにログインはしない
ポートフォワード
「-p {ホストのポート}:{コンテナのポート}」 オプション指定でホストのポートをコンテナの指定ポートへ転送する。
docker run -itd -p 8080:80 --name my-server docker.io/centos:6 /bin/bash
ホストの8080ポートをコンテナの80ポートへ転送する。
共有ディレクトリ指定
「-v {ホストのパス}:{コンテナのパス}」ホストのフォルダをコンテナ内部のフォルダに共有する。
docker run -itd -v /var/www:/var/www --name my-server docker.io/centos:6 /bin/bash
ホストのvar/wwwをコンテナのvar/wwwへ共有する。
「:ro」共有フォルダを読み取り専用にする。
docker run -itd -v /var/www:/var/www:ro --name my-server docker.io/centos:6 /bin/bash
ホスト名指定
「-h {ホスト名}」ホスト名を指定する事が出来ます。
docker run -itd -h dbserver --name my-server docker.io/centos:6 /bin/bash [root@dbserver /]#
/etc/hostsにホスト情報追加
「--add-host={ホストドメイン名}:{IPAddress}」
docker run -itd --add-host=mydomain.com:127.0.0.1 --name my-server docker.io/centos:6 /bin/bash
※複数の場合、複数指定可能「--add-host=mydomain.com:127.0.0.1 --add-host=mydomain2.com:127.0.0.1」
コンテナでコマンド実行後、コンテナを自動破棄する
「--rm」オプションを指定すると、コンテナを起動して指定のコマンド実行し、コマンド終了後にコンテナを自動で破棄します。
docker run -it -rm my:mysql /etc/my.cnf
作成されたコンテナの確認
稼働中のコンテナを表示します。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f60487285325 hello-world "/hello" 2 seconds ago Exited (0) 2 seconds ago nostalgic_goldstine
すべてのコンテナを表示します。
docker ps -a
コンテナの削除
「 docker rm {コンテナID}」
$ docker rm a403ffe73d31
a403ffe73d31
※全コンテナの削除
$ docker rm `docker ps -a -q`
コンテナの開始/停止
$ docker stop {コンテナID} $ docker start {コンテナID}
起動中のコンテナに接続
「exec」コマンドで起動中のコンテナに接続する 「docker exec -it {コンテナ名} {コマンド}」 「docker exec -u {ユーザID} -it {コンテナ名} {コマンド}」
$ docker exec -it dbserser /bin/bash [root@dbserver /]# $ docker exec -u vagrant -it dbserser /bin/bash
環境変数をファイル指定する
「--env-file={ファイル名}」ファイブのフィアルに環境変数を設定し起動すると環境変数が適用される
env_list
foo=bar hoge=fuga
$ docker run -itd --env-file=env_list --name my-server docker.io/centos:6 /bin/bash
コンテナリスト
$ docker container list -a