Docker使ってみる

昔、マイクラ用のサーバーを立てる際にdocker使ってみたけど、
使い方忘れてるので再度入門してみる。

Dockerとは

コンテナと呼ばれる仮想環境を提供してくれるプラットフォームです。

Docker for Mac

MacOSXでのインストールは以下から、
https://docs.docker.com/docker-for-mac/install/#download-docker-for-mac

Get Docker for Mac (Stable) をクリック

.dmg のダウンロードが終わったらダブルクリックしたあと、
アプリケーションディレクトリにコピーするだけ。

詳しくはサイトの説明を見ると画像付きで説明があるので親切。

# dockerコマンドが使えるようになっている。
which docker
# ==> /usr/local/bin/docker

docker --help

Usage:  docker COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/Users/tyabuta/.docker")
  -D, --debug              Enable debug mode
      --help               Print usage
  -H, --host list          Daemon socket(s) to connect to (default [])
  -l, --log-level string   Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/Users/tyabuta/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/Users/tyabuta/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/Users/tyabuta/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  checkpoint  Manage checkpoints
  container   Manage containers
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  volume      Manage volumes

Commands:
  attach      Attach to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  deploy      Deploy a new stack or update an existing stack
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information

覚えておくと良いコマンド

# イメージ作成
docker build -t <ImageName> .

# 作成したイメージの一覧
docker images

# イメージの削除
docker rmi <ImageName>

# コンテナ実行
docker run -d -p 8080:80 web-app

# コンテナ一覧
docker ps -a

# コンテナ停止
docker stop <CONTAINER_ID>

# コンテナ削除
docker rm <CONTAINE_ID>

# コンテナ一括削除
docker rm -f `docker ps -a -q`

# 実行中のコンテナにログインする
docker exec -it <CONTAINER_ID>> /bin/bash

覚えておいた方がいい用語

イメージ

作成したコンテナを共有可能な形にしたもの、
イメージはdocker images でローカルにあるものを一覧確認する事が出来る。

docker hub に沢山のイメージが公開されており、それらを元にアプリケーションにあった環境を作成していく。

イメージを元に実行(docker run)すると、コンテナが作成される。

コンテナ

イメージを実行(docker run)して作成したもの。

作成したコンテナは実行状態と停止状態がある。

docker ps -a で全てのコンテナ状況を確認する事が出来る。

webサーバー作ってみる

Dockerfile

Dockerを使えばwebサーバーを簡単に立ち上げる事ができる。

# 適当なディレクトリを作成しよう。
mkdir docker && cd $_

# Dockerfileを作成する。
vim Dockerfile
FROM centos:centos7
MAINTAINER 0.1 yourname@mail.com

RUN ["yum", "install", "-y", "httpd"]

ENTRYPOINT ["/usr/sbin/httpd","-D","FOREGROUND"]

元となるイメージはDocker-hubに上がっているcentos7を使用。
docker buildの際に自動的にイメージはダウンロードされる。

yumによりhttpdをインストールし、
コンテナ実行時にhttpdを起動するというもの。

実行

# Dockerfileを元にイメージを作成
docker build -t web-server .

# イメージを元にコンテナ作成と実行
docker run -d -p 8080:80 web-server

docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
web-server          latest              437f26bdffcf        21 hours ago        318 MB
centos              centos7             8140d0c64310        3 weeks ago         193 MB

docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
efbf3f89ae49        web-server          "/usr/sbin/httpd -..."   21 hours ago        Up 3 seconds        0.0.0.0:8080->80/tcp   agitated_golick

作成したwebサーバにアクセスする。

http://localhost:8080

コメントを残す