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

wordpressでのnginx設定

ここ1年、apacheではなく、nginxでサービスを作ることが多いため、設定にだいぶ慣れてきました。 今回はwordpressの設定です。 バーチャルホストでsample.comとアクセスをするとw …

no image

シェルスクリプトテキストファイルから配列&プロセス監視シェル

またまたシェルスクリプトネタなどを。 今回はtxtファイルの文字列を読み込んで配列に入れる処理ですね。 例えば aaa bbb ccc こんな文字列がテキストファイルに格納されていたとして、これを配列 …

no image

nginx上でのcakePHP

cakePHP上をCentOS,nginx上で公開するときのメモなどを。 cakeのversionは2.5です。 /var/www/html/sampleapp直下にプログラムを配置するものとします。 …

no image

Webの高速化に関して

Webの高速化に関してメモ。 高速化って言っても幅広いんですけどね。自分が行なっている対策に関して。 一応LAMP環境を前提にしてます。 Contents1 一番大事なのは測定2 DB対策3 フロント …

no image

正規表現その2

10/28に書いた正規表現に関しての追記です。 Contents1 覚えておきたいメタ文字2 留意点 覚えておきたいメタ文字 よく出るメタ文字の復習です。 メタ文字 メタ文字の説明 [] いずれかの1 …