空飛ぶロボットのつくりかた

ロボットをつくるために必要な技術をまとめます。ロボットの未来についても考えたりします。

Dockerのお勉強

f:id:robonchu:20171023214405p:plain

概要

Build once, run anywhere

Docker - Build, Ship, and Run Any App, Anywhere

VagrantUbuntuを用意する

Vagrantは、開発環境の構築と共有を簡単に行うためのツールです。どこでも同じ環境を再現できるように仮想マシン環境を管理する機能と、Atlasを通して共有する仕組みが提供されています。

開発環境の構築・共有を簡単にするVagrant入門 | Think IT(シンクイット)

A list of base boxes for Vagrant - Vagrantbox.es

Official Ubuntu 14.04 daily Cloud Image amd64 (Development release, No Guest Additions) をインストール

sudo apt-get install vagrant

vagrant box add trusty64 https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box

sudo apt-get install virtualbox

mkdir Docker && cd Docker

vagrant init

vagrant up

vagrant ssh

こうするとvagrant user で以下のように起動できていることが確認できる

vagrant@vagrant-ubuntu-trusty-64:~$

Dockerで環境構築

docker-ceのインストール

Get Docker CE for Ubuntu | Docker Documentation

UbuntuにDocker CEをインストールする - Qiita

確認:sudo docker --version

imageの操作

sudo docker search centos

sudo docker pull centos

sudo docker images

sudo docker inspect centos:latest

sudo docker rmi <id>

sudo docker run centos echo "hello world"

sudo docker ps -a -n=5  (a:過去を表示、-n:最新5つ)

sudo docker rm <id>

sudo docker run -d centos free -s 3

sudo docker ps

sudo docker logs <id>

sudo docker attach --sig-proxy=false <id>

sudo docker kill <id>

sudo docker start <id>

sudo docker run -i -t centos /bin/bash  (-i:インタラクティブ, -t:ターミナル)

touch hello.txt

exit

sudo docker ps -a

sudo docker commit <id> robonchu/hello

sudo docker images

sudo docker run -i -t robonchu/hello /bin/bash

ls

これでhello.txtがあることが確認できる

docker build

emacs -nw Dockerfile

FROM centos

MAINTAINER robonchu <robonchu@gmail.com>

# RUN: build時に実行

RUN echo "now building..."

# CMD: run時に実行

# CMD echo "now running..."

CMD ["echo", "now running..."]

以下でrun commitの動作、つまりimageからcontainer、そして、imageにする動作が行えることが確認できる

sudo docker build -t robonchu/echo .

sudo docker run robonchu/echo

さらに emacs -nw Dockerfile

RUN yum install -y httpd
ADD ./index.html /var/www/html/
EXPOSE 80
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

emacs -nw index.html

<html>
hello from Docker!
</html>
sudo docker build -t robonchu/httpd .

sudo docker run -p 8080:80 -d robonchu/httpd

ウェブページを開いて、192.168.55.44:8080でhello from Docker!がでていることを確認

Imageをpush

https://hub.docker.com/

上記の登録が必要

sudo docker login

sudo docker push robonchu/httpd

参考

https://dotinstall.com/lessons/basic_docker

Dockerにおけるコンテナのライフサイクル - めもめも

Dockerでよく使うコマンドまとめ | 酒と涙とRubyとRailsと

さわって理解するDocker入門 第1回 | オブジェクトの広場

Dockerコンテナとイメージの仕組みを視覚化してみた | FAworksブログ

Dockerコンテナとイメージの仕組みを視覚化してみた | FAworksブログ