LoginSignup
14
16

More than 5 years have passed since last update.

Dockerのチュートリアルをやってみた

Last updated at Posted at 2015-02-05

Dockerのチュートリアルをやってみた

開発環境

  • Mac OS X mavericks
  • Vagrant 1.7.2
  • ubuntu 14.04

この記事の目的

  • DockerのTutorialでやっていることをMac内で実際にやってみることがゴール
  • チュートリアルの一部は省略しています。
  • そもそもDockerとは?って人は見ても何やってるかわからないかもしれないです。

https://www.docker.com/tryit/

この記事でやっていること

  • Mac内に仮想サーバのUbuntuを立てる
  • UbuntuでDockerをインストールする
  • コンテナのimage持ってくる
  • image内でHello worldをする
  • imageにpingをインストールする
  • imageをcommitする
  • 新しくできたimageからgoogleにpingを打つ
  • 新しくできたimageをpushする

Mac内に仮想サーバを立ち上げる

チュートリアルには含まれていません

  • Vagrantのbox追加に関しては省略。

vagrant box addとかやってなんとかubuntu/trusty64を取得してください

Vagrantfile
# -*- mode: ruby -*-
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
 config.vm.box = "ubuntu/trusty64"
 config.vm.network "private_network", ip: "192.168.81.9"
end

UbuntuでDockerをインストールする

$ vagrant up
$ vagrant ssh
$ sudo apt-get update
$ sudo apt-get install docker.io

参考

https://docs.docker.com/installation/ubuntulinux/

コンテナのimage持ってくる

ここからがチュートリアルの開始状態

  • imageを探す
$ sudo docker search tutorial
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
learn/tutorial 6

  • imageを持ってくる
$ sudo docker pull learn/tutorial
Pulling repository learn/tutorial
8dbd9e392a96: Download complete

image内でHello worldをする

最初の引数以外は別に気にしなくていいっぽい

$ sudo docker run learn/tutorial echo Hello world
Hello world

imageにpingをインストールする

-yをつけて実行確認を出さない

$ sudo docker run learn/tutorial apt-get install -y ping

imageをcommitする

  • pingをインストールしたプロセスを探す
$ sudo docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
be1c53191c1f learn/tutorial:latest apt-get install -y p 6 minutes ago Exited (0) 6 minutes ago clever_pare
  • commitする
$ sudo docker commit be1c learn/ping
ffdd612f3aae57c58dc9269896caa73ff90558c75643a4d62a29bdba9f501802

commitする際はプロセスの最初の4文字程度で良い

新しくできたイメージからgoogleにpingを打つ

$ sudo docker run learn/ping ping www.google.com
www.google.com (173.194.117.240) 56(84) bytes of data.
--- www.google.com ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5025ms
  • 何も表示されない…?
    • この辺りは多分ネットワーク周りの話になってくるので、また後の話
    • 今回はpingを打てたことが重要
  • pingがインストールされていない場合(最初のイメージ)はpingないよってエラーが出る
$ sudo docker run learn/tutorial ping www.google.com
2015/02/05 06:50:42 exec: "ping": executable file not found in $PATH

新しくできたimageをpushする

  • ここからはチュートリアルと少し違うところになる
  • Dockerのイメージは Docker Hub にアップロードするのでアカウントが必要
  • 先にアカウントを作成してきてください > https://registry.hub.docker.com/
$ sudo docker push learn/ping
The push refers to a repository [learn/ping] (len: 1)
Sending image list
Please login prior to push:
Username: ------
Password:
Email: ------@gmail.com
Login Succeeded
The push refers to a repository [learn/ping] (len: 1)
Sending image list
2015/02/05 06:58:09 Error: Status 403 trying to push repository learn/ping: "Access denied, you don't have access to this repo"
  • エラーが出た。
    • 理由は権限がないから。
    • ここでDocker Hubのお作法的なお話
    • Docker Hubはイメージ名を アカウント名/hogehoge とするので、自分はlearnさんではないのでエラーが出た。
  • imageの作り直しをして再度挑戦
$ sudo docker commit be1c [イメージ名]
$ sudo docker push [イメージ名]
The push refers to a repository [イメージ名] (len: 1)
Sending image list
Pushing repository [イメージ名] (1 tags)
************: Image already pushed, skipping
************: Image successfully pushed
Pushing tag for rev [************] on {https://cdn-registry-1.docker.io/v1/repositories/[イメージ名]/tags/latest}

Docker Hubにもリポジトリができていると思うのでそちらを確認する

最後に

今回はチュートリアルをそのまま実践することだけしかやっていません。
運用であったり環境構築はまた別の話になってくるので、その辺りはまた今度

14
16
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
16