LoginSignup
4
5

More than 5 years have passed since last update.

dockerの使い方

Last updated at Posted at 2018-02-12

よくrunとstartとかがごっちゃになるのでメモ。

用語

  • dockerイメージ
    実行する前の塊。公式に登録されているubuntu:latest等をdockerhubなどから引っ張ってきて利用したり、自分で作ったりできる。
  • dockerコンテナ
    イメージを元に自分のマシンで実行したもの。

実行方法。

  • インストール
    以下参照しdocker-ceをインストール。
    https://docs.docker.com/install/linux/docker-ce/ubuntu/#set-up-the-repository
  • 元となるイメージ取得
    以下でubuntu16.04が起動できる。
    でもわざわざpullしなくても、runの時になければ勝手に取ってきてくれる。

    docker pull ubuntu:latest
    
  • イメージのリストを表示

    docker images
    
  • コンテナ初期起動

    • 以下で起動。exitすれば勝手にコンテナも止まる。

      docker run -it --name ubuntu_mycontainer --hostname ubuntu_mycontainer ubuntu /bin/bash
      
    • デーモンとして起動したければ「-d」をつける。
      ただrunでは指定できるがexecでは指定できないっぽい。

    • ポート指定は以下。

    docker run -it -p 12345:22 --name ubuntu_mycontainer --hostname ubuntu_mycontainer ubuntu:latest /bin/bash
    
    • HOSTのディレクトリをマウントするなら以下。
    docker run -it -v /home:/home --name ubuntu_mycontainer --hostname ubuntu_mycontainer ubuntu:latest /bin/bash
    
  • bash実行
    以下で起動。exitすると止まる。

    docker exec -it ubuntu_mycontainer bash
    
  • コンテナを再度起動

    docker start (コンテナ名 or コンテナID)
    
  • 起動しているコンテナの状態取得

    docker ps
    docker top (コンテナ名 or コンテナID)
    
  • 起動していないものも含めてコンテナのリスト表示

    docker ps -a
    
  • 裏で動いているコンテナをとめる

    docker stop (コンテナ名 or コンテナID)
    
  • コンテナを削除

    docker rm (コンテナ名 or コンテナID)
    
  • イメージを削除

    docker rmi (イメージ名 or イメージID)
    
  • 一度作ったコンテナにあとからポート割り当てやマウントディレクトリを指定することは出来ないみたい。
    docker startにオプションがない。
    やるなら一度イメージを作り直して、再度コンテナにする際にオプション指定する。

    docker stop mycontainer
    docker commit mycontainer temporal_image
    (temporal_imageはmycontainerのベースになっているので消せない)
    docker rm mycontainer
    docker run -it -p 20022:22 --name mycontainer --hostname ubuntu_mycontainer temporal_image /bin/bash
    

Dockerfile

  • 参照リンク
    http://www.atmarkit.co.jp/ait/articles/1407/08/news031.html
  • 例えばubuntuベースでpython開発用のイメージを作りたい場合、以下のようなDockerfileを用意する。

    FROM ubuntu
    
    ENV PATH $PATH:/usr/local/bin/:/bin:/usr/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
    
    RUN printenv
    ADD setting.tar.gz /root/
    RUN apt-get update
    RUN apt-get dist-upgrade
    RUN apt-get install -y python3 python3-pip
    RUN apt-get clean
    
  • ADDするためカレントディレクトリにsetting.tar.gzを用意する。
    ADD命令で勝手に解凍までしてくれる。

  • 以下でイメージのビルド。

    docker build -t summer4an/ubuntu_myimage:1.0 ./
    
  • 以下で起動。

    docker run -it --name ubuntu_mycontainer --hostname ubuntu_mycontainer summer4an/ubuntu_myimage:1.0 /bin/zsh
    
  • 何かミスしていたら以下で削除。

    docker rm ubuntu_mycontainer
    docker rmi summer4an/ubuntu_myimage:1.0
    
  • 出来上がったコンテナを別マシンに持っていきたいなら以下。

    • (イメージを直接exportすることは出来ない?)イメージを固めたものを作成。

      docker export ubuntu_mycontainer -o docker_exported.tar
      gzip docker_exported.tar
      
    • 別マシンにdocker_exported.tar.gzを持っていって以下。

      docker import docker_exported.tar.gz summer4an/ubuntu_myimage:1.0
      docker images
      

参照リンク

全般

Dockerfile

4
5
0

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
4
5