Skip to main content

docker life cycle

ライフサイクルをざっと。

dockerデーモンの起動と動作確認。ubuntuの場合。

$ sudo service docker status
$ sudo service docker start
$ sudo docker run --rm hello-world

リポジトリに登録されているイメージを取得する。

$ sudo docker pull debian:latest
Pulling repository debian
6845b83c79fb: Download complete
575489a51992: Download complete
Status: Downloaded newer image for debian:latest
$ 
$ sudo docker images debian
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
debian              latest              6845b83c79fb        13 days ago         125.1 MB
$

コンテナを作成して実行。コンソール接続してbashを実行する例。

$ sudo docker run -it debian:latest /bin/bash
root@06e1a850e923:/# 
root@06e1a850e923:/# w
 22:20:47 up 29 days, 14:32,  0 users,  load average: 0.36, 0.29, 0.24
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root@06e1a850e923:/#
root@06e1a850e923:/# uname -a
Linux 06e1a850e923 3.13.0-63-generic #103-Ubuntu SMP Fri Aug 14 21:42:59 UTC 2015 x86_64 GNU/Linux
root@06e1a850e923:/#
root@06e1a850e923:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support/"
BUG_REPORT_URL="https://bugs.debian.org/"
root@06e1a850e923:/#

コンソール接続したコンテナから一旦切断する例。

root@xxxxxxxxxxxx:/# [Ctl+p]-[Ctl+q]
$ 
$ sudo docker ps | grep debian
xxxxxxxxxxxx        debian:latest       "/bin/bash"         About a minute ago   Up About a minute                       berserk_mayer
$

再接続する例。

$ sudo docker attach xxxxxxxxxxxx
root@xxxxxxxxxxxx:/#

コンテナを終了する例。

root@06e1a850e923:/# exit
exit
$

終了したコンテナを再起動する例。

$ sudo docker ps -a | grep debian
xxxxxxxxxxxx        debian:latest            "/bin/bash"            13 minutes ago      Exited (0) 13 seconds ago                                          berserk_mayer
$
$ sudo docker start -i xxxxxxxxxxxx
root@xxxxxxxxxxxx:/# 
root@xxxxxxxxxxxx:/# exit
exit
$

コンテナの状態確認。

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ 
$ sudo docker ps -a | grep debian
06e1a850e923        debian:latest            "/bin/bash"            2 minutes ago       Exited (0) 47 seconds ago                                      evil_kowalevski

$

copy file from/to docker container

$ sudo docker cp xxxxxxxxxxxx:/dirname/filename destination
$ sudo docker cp source xxxxxxxxxxxx:/dirname/filename

コンテナの削除。

$ sudo docker rm 06e1a850e923
06e1a850e923
$ 
$ sudo docker ps -a | grep debian
$

イメージの削除。

$ sudo docker rmi debian:latest
Untagged: debian:latest
Deleted: 6845b83c79fb642ed6af06cceaca042e155717ca8eb0b5cffa9c43f1f7f70348
Deleted: 575489a51992d5d30976ff5ba7f7eabdc134acfb51c79ff48883089009594e64
$
$ sudo docker images debian
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
$

dockerイメージの作成

$ mkdir project && cd project
$ 
$ vi Dockerfile
$ 
$ sudo docker build -t imagename:tagname . | tee build.log
$ 
$ sudo docker images imagename
$

When you want to use proxy, use --build-arg option like bellow

$ sudo docker build --build-arg http_proxy=http://192.168.xxx.xxx:3142/ -t imagename:tagname . | tee build.log

When new image name is , then rename it as below

$ sudo docker tag xxxxxxxxxxxx imagename:tagname
$ 
$ sudo docker images imagename

不要なイメージの一括削除

sudo docker images | awk '$1~/<none>/ {print}'
sudo docker images | awk '$1~/<none>/ {print $3}' | xargs sudo docker rmi

使用するdockerfileの簡単な例。

From debian:latest
RUN apt-get update && apt-get install -y \
    screen \
    openssl \
    vim \
   make \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*