Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コンテナの基本 ~Docker実践~

コンテナの基本 ~Docker実践~

Ryosuke Uchiyama

August 05, 2018
Tweet

More Decks by Ryosuke Uchiyama

Other Decks in Programming

Transcript

  1. コンテナは軽量 ハードウェア ハードウェア ハードウェア カーネル / ドライバ カーネル / ドライバ

    カーネル / ドライバ ホストOS ホストOS ホストOS 各種サービス / ランタイム アプリケーション ゲストOS カーネル ゲストOS カーネル 各種サービス 各種サービス ランタイム ランタイム アプリケーション アプリケーション サービス用 コンテナ 管理用 コンテナ アプリケーション + ランタイム アプリケーション + ランタイム 物理基盤 ハイパーバイザー型 コンテナ型
  2. 何が起こった!? Hello from Docker! This message shows that your installation

    appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/engine/userguide/
  3. docker run Docker Repository イメージ コンテナ コンテナ イメージ プロセス pull

    run stop start commit push rm # docker run --name test01 -it centos:latest /bin/bash
  4. docker start / stop Docker Repository イメージ コンテナ コンテナ イメージ

    プロセス pull run stop start commit push rm # docker start[stop] test01
  5. docker commit Docker Repository イメージ コンテナ コンテナ イメージ プロセス pull

    run stop start commit push rm # docker commit test01 docker.io/step63r/osaka-ai-03-demo-02
  6. docker push Docker Repository イメージ コンテナ コンテナ イメージ プロセス pull

    run stop start commit push rm # docker push docker.io/step63r/osaka-ai-03-demo-02
  7. DockerfileでWebサーバを立てる # mkdir osaka-ai-03-demo-03 # cd osaka-ai-03-demo-03 # ls –al

    合計 4 -rw-r--r--. 1 root root 232 8月 1 22:56 Dockerfile # cat Dockerfile FROM centos:latest MAINTAINER minato ENV container docker RUN yum update -y && yum clean all RUN yum install -y httpd && yum clean all RUN echo "Hello Apache." > /var/www/html/index.html RUN systemctl enable httpd EXPOSE 80 # docker build -f ./Dockerfile -t docker.io/step63r/osaka-ai-03-demo-03 --no-cache=true . # docker run -d --privileged --name web0001 -it -p 13080:80 docker.io/step63r/osaka-ai-03-demo-03 /sbin/init
  8. 普通にやったらこうなる # docker pull wordpress # git clone [email protected]:docker-library/wordpress.git #

    docker pull mysql # git clone [email protected]:docker-library/mysql.git # docker build –t hoge:mysql56 ./ # docker run –name hoge_mysql56 –e MYSQL_ROOT_PASSWORD=hogehoge –d hoge:mysql56 # docker build –t hoge:wordpress ./ # docker run –name hoge_wordpress –d –p 8080:80 --link hoge_mysql56:mysql hoge:wordpress docker run コマンドがいちいち長い!!
  9. docker-compose.yml wordpress: image: wordpress:latest links: - db:mysql ports: - "1888:80"

    db: image: mariadb:latest environment: MYSQL_ROOT_PASSWORD: password123
  10. 参考文献 • Dockerでよく使うコマンドまとめ | 酒と涙とRubyとRailsと • はじめてのDocker • Docker Registry

    Hub にイメージをpushしたい • CentOS 7のDockerコンテナ内でsystemdを使ってサービスを起動する • Dockerでwordpressの環境構築