このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

2018年 Docker 使い方 まとめ その4

Docker

2019.01.12

この記事は最終更新日から1年以上が経過しています。

どもです。

前回の「2018年 Docker 使い方 まとめ その3」の続きになります。

今回は、コンテナの状態がどう移り変わっていくのか(ライフサイクル)と、コンテナのシェルへ接続する docker attach / docker exec まわりをまとめた形になります。

ちなみに Docker の公式サイトはこちら。

コンテナのライフサイクル

まずはコンテナを create で作成してみます。

$ docker create --name status-test -it alpine /bin/sh

ここで付けている -it オプションについて少し補足を。

  • -i … コンテナの標準入出力を取得して双方向に接続する
  • -t … コンテナ内に tty を割り当てる

この2つはセットで -it として指定する場合が多いです(指定しないとシェルがすぐに終了してしまうので)。

Created 状態

作成した直後の状態を確認してみます。

$ docker ps -a

STATUS を見ると、まだ起動していない Created の状態になっています。

STATUS
Created
Up(running)状態

スタートさせると running 状態になります。

$ docker start status-test
STATUS
Up 7 seconds

詳細な状態は inspect でも確認できます。

$ docker inspect status-test
一時停止(Paused)

pause でコンテナを一時停止できます。

$ docker pause status-test

この状態で docker ps を見てみると、

$ docker ps

STATUS に (Paused) が付いた状態になっています。

STATUS
Up About a minute(Paused)

こちらも inspect で確認できます。

$ docker inspect status-test

一時停止を解除するには unpause です。

$ docker unpause status-test
Exited 状態

続いて exit 状態も確認してみます。試しに hello-world を動かしてみます。

$ docker run hello-world

hello-world は処理が終わるとすぐに終了するので、STATUS は Exited になります。

STATUS
Exited
その他の状態

このほかにも、

  • removing 状態 … 削除中
  • dead 状態 … 異常

といった状態がありますが、こちらは余り見ることはないかと思います。

コンテナのシェルに接続する

さて、ここからはコンテナのシェルへ接続する方法です。docker attachdocker exec の2つがあります。

docker attach を使用する場合
$ docker attach <コンテナ名 または コンテナID>

※ただし、シェルに接続できるのは、コンテナでシェルを実行している場合のみとなります。

docker exec を使用する場合
$ docker exec -it <コンテナ名 または コンテナID> /bin/bash

※ここでは /bin/bash を実行していますが、bash が無い場合は別のシェルを指定してください。exec の場合は、exit で抜けてもコンテナは停止しません。

実際に試してみる

それでは実際に手を動かしてみます。まずは ubuntu のコンテナをバックグラウンドで起動。

$ docker run --name connect-test -it -d ubuntu /bin/bash
attach で接続した場合
$ docker attach connect-test

これでコンテナ内へ入れます。抜けるときは Ctrl + dCtrl + c です。

$ docker ps

docker ps で見ると status は起動中ですが……exit で抜けると、こちらは コンテナが停止してしまいます

exec で接続した場合

もう一度スタートさせて、

$ docker start connect-test

今度は exec で接続してみます。

$ docker exec -it connect-test /bin/bash

こちらは exit で抜けてもコンテナは起動中のまま。なので、exec のほうが安全 ですね。

ではではぁ。

またまたぁ。

Comment

Related Article

2018年 Docker 使い方 まとめ その4

2019.01.12

2018年 Docker 使い方 まとめ その3

2018.12.17

2018年 Docker 使い方 まとめ その2

2018.12.16

2018年 Docker 使い方 まとめ その1

2018.12.15

忙しい人向けの Docker Composeで作る nginx + PHP7-fpm + mysql + phpMyAdmin の環境構築

2017.02.13

CATEGORY LIST

LATEST NEWS

Raspberry Pi 5 でマインクラフトサーバーを立てる(Java版 × 統合版クロスプレイ対応)

RaspberryPi

2026.06.24

ラズパイが高い。

RaspberryPi

2026.05.26

【Claude Code】フル稼働。ToDo Appを様々なGUIフレームワーク用いて作らせる。

AI・Bot・algorithm

2026.05.24

Macで歩く「たのしいバイナリの歩き方」うさみみハリケーンの代わりに、Cheat Engine / Bit slicerを使用する

アセンブラ

2026.04.12

Macで歩く「たのしいバイナリの歩き方」

アセンブラ

2026.04.10

【Railway】ひたすら安く個人開発サービスを運用する計画

サーバー

2026.04.06

たびのきろく

イベント

2026.02.23

【Railway】MySQLサービスをコスト抑えて運用する

運用

2026.01.19

あけましておめでとうございますmm DjangoアプリをRailwayに移行する。

運用

2026.01.06

効率の良い AI駆動開発について考える

AI・Bot・algorithm

2025.11.09

MacとClaude Codeで構築する cc65(NES)開発環境

Game

2025.10.24

Three.js - ShaderMaterialで、ブレンドシェイプ(MorphTarget)アニメーション対応

JavaScript

2025.10.15

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US