Dockerコマンドを学ぶ

Published: 2016年3月27日 by tomsato

概要

前回 Docker入門の入門 にて
Dockerがどういった物かについて調べたので今回は実際にどういうコマンドで実現していくかを見て行きます

続き → Docker Hubを使ってGitHubにあるDockerfileからimageを自動生成する
さらにその続き → 個人開発環境作成のためのDockerfileメモ

おさらい

前回こんな図を使って軽く説明しました

docker03

今回は①~④まで
Docker Hubからimageを取得してcontainerを立ち上げてDocker Hubに登録するところまでを学びます

インストール

CentOS 6系の人向け

$ cat /etc/redhat-release
CentOS release 6.6 (Final)

epelリポジトリを追加する ※既に入っている人は不要

// それっぽいファイルがあれば大丈夫
$ ls -l /etc/yum.repos.d/epel*
-rw-r--r--. 1 root root 1056 11月  5 12:52 2012 /etc/yum.repos.d/epel-testing.repo
-rw-r--r--. 1 root root  957 11月  5 12:52 2012 /etc/yum.repos.d/epel.repo

// epelがない人は以下を使って追加する
$ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
$ sudo rpm -ivh epel-release-6-8.noarch.rpm

dockerをinstallする

$ sudo yum install -y docker-io

// サービススタート
$ sudo service docker start

// システム起動時に自動起動する
$ sudo chkconfig docker on

versionの確認

$ docker -v
Docker version 1.7.1, build 786b29d/1.7.1

最低限実行するコマンド

いきなりあれやこれ言われても想像しづらいと思いますので①~④を実行する上での最低限必要なコマンドを使います

Docker Hubからimageを持ってくる

$ sudo docker pull centos

imageからcontainerを作成し
containerの中でターミナルを立ち上げる

// -i:インタラクティブモードにする
// -t:imageを指定して/bin/bashとしてシェルを立ち上げる
// -d:コンテナをバックグランドで動かす
// --name:コンテナの名前
$ sudo docker run -itd --name mycentos centos /bin/bash

containerに接続する

$ sudo docker attach mycentos

※ 注意
一度attachしてexitするとcontainerは停止してしまう
再度起動させる場合はdocker start mycentosとして立ち上げてから再度attachする

何かファイルを作成してそのファイルを含めて新しいimageを作成する
まずはファイル作成してcontainerを抜ける

# touch /tmp/test.txt
# exit

imageを作成する

$ sudo docker commit mycentos tomsato/hello

DockerHubにimageをpushする

$ sudo docker login
Username: tomsato
Password:
Email: xxxxx@gmail.com
WARNING: login credentials saved in /root/.docker/config.json
Login Succeeded

$ sudo docker push tomsato/hello

DockerHubで検索すると追加されていることが分かる
https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=tomsato&starCount=0

その他コマンド

imageを検索する
DockerHubのサイトで調べられるがコマンドライン上からでも調べられる

$ sudo docker search [search word]
$ sudo docker search centos | head
NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                          The official build of CentOS.                   2054      [OK]
jdeathe/centos-ssh              CentOS-6 6.7 x86_64 / CentOS-7 7.2.1511 x8...   18                   [OK]
jdeathe/centos-ssh-apache-php   CentOS-6 6.7 x86_64 / Apache / PHP / PHP M...   14                   [OK]

所持しているimage一覧を取得する

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED                  VIRTUAL SIZE
centos              latest              bb3d629a7cbc        Less than a second ago   196.6 MB
tomsato/hello       latest              5d13dc0dd584        17 minutes ago           196.6 MB

所持しているimageの削除

$ sudo docker rmi [image name]
$ sudo docker rmi tomsato/hello

container一覧を取得する

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

// -a:動作が終了したコンテナも含めて取得する
$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
94eb737d2cc1        centos              "/bin/bash"         27 minutes ago      Exited (0) 21 minutes ago                       mycentos

containerの削除

$ sudo docker rm [container name]
$ sudo docker rm mycentos

コメントを書く

※ 個別に返信が必要な時のみご記入ください

※ Emailは公開されません

※ 承認されると名前・コメントが下記に表示されます

コメント一覧

最近の投稿

ビジュアルリグレッションテストについてまとめ、ネットで調べると数多くのライブラリがありどれがどんな立ち位置なのか全体像がわかりずらかったのでどんな種類があるのか入門の入門としてまとめます、またPlaywrightを使って実際に触ってみました

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧