skillup

技術ブログ

サーバー・ネットワーク

dockerでの環境構築 〜コンテナ作成し、実作業ができるまで(mac編)

投稿日:2019年4月28日 更新日:

今や環境構築の保存や移行などが比較的自由にできるようにはなってきていると思います。

自分の場合は未だにvagrantのイメージフォルダを移行してやっていますが(汗)。

参考リンク

vagrantで仮想環境を別PCにコピー

やってみるとわかるんですけどvagrantの場合、非常に重いんですよね、boxを移行すると何Gも取られることが多いため、複数の環境を気軽に移行したりはできないんではないかなと思います。
(そういう用途では使わない気もしますし。)

そんなこともあり、仮想環境ツールとしてdockerを復習してます。

以前は2年ぐらい前に勉強してましたね・・・

やたらエラーがボコボコ出て結局断念した記憶があります。今回は数時間程度ですが、そこまでトラブルはなく無事にすすめられました(と言っても超基本的なことしかやってませんが。)

以前の学習リンク

dockerインストール

dockerメモ

docker上でミニサービスを起動させるまで

Dockerfileでのコンテナ作成

vagrantとdockerの違い

vagrant

  • VirtualBox起動の代理(これを使うことでVirtualBoxの起動や設定が楽になる)
    【決定版】仮想環境ってなに?Vagrantってなんなの?に答える!
  • カーネル(OSの中核部分)を含めて仮想環境を丸ごと構築
  • イメージでいうとサーバーを丸ごと作るのに近い
  • vagrantの内で全て完結
  • ホスト環境に依存しないため、丸ごと環境を移管したい時に便利かも。
  • かなり重く、起動時間も時間がかかる。複数のvagrantを入れたりするとPC自体を圧迫する

docker

  • カーネル部分はホスト環境の物を使うため、比較的軽量
  • 比較的素早く環境を建てたいor壊したい時などに便利
  • Windowsだと動かないことが結構あるらしい
  • Linux上でしか使えないため、使用する場合はVirtualBoxで仮想環境を作るか、Windows or Mac用のdockerツールを使う。

Web系のDocker民から見たVagrantについて

Macでのインストール

docker.hub(https://hub.docker.com/)でアカウントを作成後、

https://hub.docker.com/editions/community/docker-ce-desktop-mac

上記リンクの「Get Docker Desktop for Mac (Stable)」からダウンロードすればOKです。

その後、docker version で下記のようにdockerの情報が表示されればOKです。

おおまかな一連のプロセス

imageのpull

例えばCentOS6に環境を作りたいとき、CentOS6のイメージ(CentOS6のテンプレート的なもの)を取得します。

Dockerではイメージから作られた実環境のことを「コンテナ」と言います。基本的にはrunコマンドからコンテナを作成します。

必要な作業を色々

例えばhttpd,php,mysqlを実際にyumで入れるなど

適当なところでコミット&プッシュ

ある程度色々な作業をしたところでcommitをします。

このコマンドによってコンテナの状態をイメージとして登録することができます。後述しますが、この時点でDockerHubに登録することを前提としてアカウント名/リポジトリ名にします。

この時点でDockerHubに入ってリポジトリ(centos6)を作成します。

pushコマンドとはDockerHubに作成したイメージをpushします。gitのpushと全く同じです。

pushしようとしたところusername,passwordが正しくないと出ました。

Docker for macでログインはしているんですが・・・

調べたところemail、passwordでログインしてしましたが、docker loginで再度username,passwordを入力します。

docker login での Sign in について

コンテナ削除&再作成

vagrantでもそうですが、

  1. 実ホストからアクセス
  2. エディタで編集をするために実ホスト上で共有フォルダを作る

が必要になります。(準備ができていたら最初のrunコマンドからでもいいですが・・・)

1ですが、vagrantは別環境なのでipでアクセスしますが、dockerの場合はコンテナのポートを割り当てます。そのオプションが-p 8080:80です。これはコンテナの80番を実ホストの8080に割り当てるという処理です。

これによりlocalhost:8080でアクセスした時にコンテナ上の/var/www/htmlを見に行くようになります。

2ですがコンテナ上でソースを編集する場合、共有するフォルダがなければ延々とvimで作業することになります。そのため共有フォルダを作るために-v /Users/*****/docker_dev:/var/www/htmlというオプションで共有できるようにします。

ソース自体はコンテナではなくホスト上においておきましょう。同期を取るので、ホスト上のものが基本的に優先されます。(これはvagrantも一緒です。)

-サーバー・ネットワーク
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

mod_rewriteについて

本日はapacheのmod_rewriteについて。 例えばget句に郵便番号を付けて、住所を出力するWEBプログラムがあるとします。 この場合、そのままだとhttp://sampledomain.c …

no image

MariaDBインストール

CentOS7からはyumでmysqlをインストールするとMariaDBがディフォルトになるようです。 せっかくなので、これを機にMariaDBを使ってみました。といってもMySQLとほとんど一緒でし …

no image

障害調査フロー

実務でサーバーの障害が発生した時のフローなどをメモしおこうかと。 行ってしまうと「ログに始まり、ログにおわる」といった感じでしょうか。 サーバーエンジニアの方の作業をみてたんですが、基本的にはプログラ …

no image

nginxインストール(サブディレクトリでcakePHPを使いたいとき)

以前nginxのインストールを行いましたが、理解が浅かったようで今回すげーはまりました(汗) ガチンコ塾でもいっていますが、覚え始めの時はコピペでもいいですが(最初から100%の理解は非現実的)、慣れ …

no image

SELinuxによるファイル制限+MySQLアクセスエラー

新サーバーにApacheをいれて特定のファイルにアクセスしようとしたところ、 以下のようなエラーがでてしまいました。

ただPermis …