UniServer / UniPrint / UniHttpd


Tips/ArchLinux/Docker


dockerを利用するために、CPU VT-x(仮想化)を利用可能にする

  • BIOS画面でVT-xをenableに変更
  • VMplayerの場合は、仮想マシン、プロセッサ、「仮想化エンジン Intel VT-x/EPT または AMD-V/RVIを仮想化」「CPUパフォーマンスカウンタを仮想化」にチェック入れる

docker インストール

  • archlinux(2017)
    $ sudo pacman -Syu
    $ sudo pacman -S docker
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
    ($ sudo groupadd docker)
    $ sudo gpasswd -a [ユーザ名] docker
    • OS再起動
  • (ubuntu16.04)
    $ sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    $ sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    $ sudo apt-get update
    $ sudo apt-get -y install docker-ce
    $ sudo adduser [ユーザ名] docker
    • OS再起動

動作確認テスト

$ docker run hello-world
...
Hello from Docker!
...

Dockerコマンド

  • Dockerのイメージリスト表示
    $ docker images
  • Dockerイメージの取得
    $ docker pull centos
  • Dockerコンテナ状況表示
    $ docker ps -a
  • Dockerコンテナ作成&実行
    • centos を-d(バックグランド)でDockerコンテナ名をmycentosで/sbin/initを起動する
      $ docker run --name mycentos -d centos /sbin/init
    • -v ホストのディレクトリ:コンテナ内のディレクトリ名でホストをマウントできる
      $ docker run -it --name mybash -v $(pwd):/tmp/share ubuntu /bin/bash
      ($ docker run -it --name mybash -v /home/hoge:/home/hoge  ubuntu /bin/bash)
      $ docker run -it --name tst -v /home/hoge:/home/hoge -p 80:80 unihttpd /bin/bash
  • コンテナをuid,gid指定で起動する
    $ docker run -u=1000:993 -it --name tst -v /home/hoge:/home/hoge -p 80:80 \
    unihttpd /bin/bash
  • Dockerコンテナ内に入る方法
    $ docker exec -it mycentos /bin/bash
    $ docker exec -u root -it mycentos /bin/bash (rootユーザ)
    (「Ctrl + p, Ctrl + q」で抜けること )
    • 上の行で作成されたmycentosコンテナに-it(インタラクティブ)に/bin/bashで入る
  • Dockerコンテナ(イメージ起動中のDockerコンテナ)の停止(停止されて削除されていない)
    $ docker stop [DockerコンテナID|Dockerコンテナ名]
  • Dockerコンテナ(イメージ起動中のDockerコンテナ)の削除
    $ docker rm [DockerコンテナID|Dockerコンテナ名]
    ($ docker rm `docker ps -a -q` すべてのDockerコンテナを削除)
  • Dockerイメージ(レジストリからのダウンロードしたローカルディスクイメージ)の削除
    $ docker rmi -f [DockerコンテナID|Dockerコンテナ名]
  • 同じイメージからのDockerコンテナ作成起動は、(ローカルにイメージがあるので起動が早くなる)
  • 停止したDockerコンテナからイメージを作成する方法
    $ docker commit [DockerコンテナID|Dockerコンテナ名] [イメージ名]
  • イメージ名で「リポジトリ名:タグ」で同じリポジトリとして管理できる
  • 指定したイメージをtarファイルに圧縮して保存します。(先にcommitしておく)
    $docker save [イメージ名(repository:tag)] > NAME.tar
    ($ docker save alpine_unittpd > alpine_unihtttpd.tar)
  • tarファイルの読み込み。これでイメージファイルがリストアされます。
    $ docker load < NAME.tar
    ($docker load < alpine_unihttpd.tar)

  • Dockerfileからイメージを作成する
    $docker build -t  [イメージ名] .
  • Dockerでボリュームデータを利用する
    $ docker volume create voldata
    $ docker run -it --name mybash -v voldata:/home/uchi ubuntu /bin/bash
  • Dockerでボリュームデータを表示する
    $ docker volume ls
  • Dockerでボリュームデータを削除する
    $ docker volume rm voldate


参考

  • dockerのコンテナでbashなどを起動している場合はexitで抜けるとコンテナのbashがExit(停止)して元の環境に移行しますが、バックで動かしたまま抜ける方法もあります。
    「Cntl + p の次に Cntl + q」 で プロセスをExitせず抜けることができます。
    Exited(停止)していないコンテナに再接続するには attach を利用します。
    $ docker attach mycentos
  • Exited(停止)しているコンテナを起動するにはstartを利用します。
    $  docker start mycentos


便利レシピ集

  • 稼働中のコンテナに入る
    $ docker-compose exec hoge_app bash
    
    stop
    $ docker-compose stop
  • docker-compose管理下のコンテナを削除し、紐づくボリュームも削除
    $ docker-compose rm -v
  • キャッシュを使わずにビルド
    $ docker-compose build --no-cache
  • コンテナを一括削除
    $ docker rm `docker ps -a -q`
  • 全てのボリュームを削除
    $ docker volume rm $(docker volume ls -qf dangling=true)
  • リンク切れのボリュームを削除
    $ docker volume ls -qf dangling=true | xargs -r docker volume rm
  • イメージ一覧
    $ docker images -a
  • イメージ一括削除
    $ docker rmi `docker images -aq`
    $ docker rmi `docker images -q`
  • docker images で REPOSITORY が になっているものを削除
    $ docker rmi $(docker images | awk '/^<none>/ { print $3 }')
  • ホストからコンテナへファイルをコピー
    docker cp <コピーするファイルのパス> <コンテナ名or ID>:<コンテナ保存先パス>
    $ docker cp file.rc continername:/host/dir/
  • コンテナからホストへファイルをコピー
    docker cp  <コンテナ名or ID>:<コピーするファイルのパス> <ホスト保存先パス>
    $ docker cp  continer_name:/var/www/html/ /User/meta/hoge
  • 古いコンテナを一括削除
    $ docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm
  • コンテナを一括削除
    $ docker rm `docker ps -a -q`

 

Copyright © UTL Co.,Ltd. All Rights Reserved. [UTL]