DockerのUbuntuコンテナでLAMP環境の構築をシェルスクリプトで自動化させたいです


DockerのUbuntuコンテナでLAMP環境の構築をシェルスクリプトで自動化させたいです。  
以下の手順で環境構築するらしいですが、一部質問するために、省略したり、改変している部分（。。。。。にしたり）があります。

**質問項目**

  * それぞれのコードの%と$の違い
  * ②のデーモン起動 ⑧のxvfbの起動って必要な作業ですか？（起動させないと不都合があるのでしょうか）
  * ⑩⑪⑫のやっている内容が知識不足で理解できません
  * ⑤と⑬に関して、通常の手法をコード付きで教えてください（設定ファイルを別に作っておいて上書きするのか、該当部分だけ書き換えるのか）
  * dockerに関して、通常チームで開発する際、どの順序で使うのでしょうか（イメージ作る->イメージをメンバーに配る->各人がそのイメージを使ってコンテナを作成->コンテナで作業した変更内容はcommitで別イメージとして保存->ここからの流れがわかりません。また、ここまでの流れはあってますか？）どのようにして変更内容を統合させるのでしょうか(Gitで言うmerge？)

**環境構築手順**

  1. 基本システムのインストール
[code]     % apt-get install php composer apache2 mysql-server supervisor

    
[/code]

  2. デーモンを起動
[code]     % service apache2 start

    % service supervisor start
    
[/code]

  3. PHPの追加機能のインストール
[code]     % apt-get install php7.0-mysqlなど

    
[/code]

  4. Apache module有効
[code]     % a2enmod ssl

    % a2enmod php7.0
    % a2enmod rewrite
    % service apache2 restart
    
[/code]

  5. `/etc/apache2/apache2.conf`の該当部分を以下に変更
[code]     <Directory /var/www/>

            AllowOverride All
    </Directory>
    
[/code]

  6. nodejsのインストール
[code]     % curl -sL https://deb.nodesource.com/xxxxxx.x | bash -

    % apt-get install nodejs
    
[/code]

  7. xvfb関連ライブラリをインストール
[code]     % apt-get install libgtk xvfb

    
[/code]

  8. xvfb起動
[code]     $ Xvfb 。。。。。。。

    
[/code]

  9. 各種ライブラリをインストール
[code]     $ cd /var/www/。。。。。

    $ npm install
    $ cd /var/www/。。。。。
    $ composer install
    
[/code]

  10. envファイルを作る
[code]     $ cd /var/www/。。。。。

    $ cp .env.example .env
    
[/code]

  11. 一時フォルダのパーミッションを設定  
cdで移動し、別ディレクトリにそれぞれ設定

[code]     $ chmod 1777

    
[/code]

  12. supervisorの設定（リンク？）
[code]     % ln -s 。。。。。。laravel-worker.conf

    
[/code]

  13. Apacheのドキュメントルートを変更   
`/etc/apache2/sites-available/default-ssl.conf`の該当部分をいかに変更

[code]     DocumentRoot /var/www/。。。。。

    
[/code]




回答できるところまで書きます。

> ・それぞれのコードの%と$の違い

実行ユーザーがroot と一般ユーザーの違い。rootが％と一般ユーザー＄です。

> ・②のデーモン起動 ⑧のxvfbの起動って必要な作業ですか？（起動させないと不都合があるのでしょうか）

デーモンプログラムを起動しないと使用するときに動きません。

> ・⑩⑪⑫のやっている内容が知識不足で理解できません

⑪ chmodで実行権限を変更します。書き込みや実行できるようにします。

> ・⑤と⑬に関して、通常の手法をコード付きで教えてください（設定ファイルを別に作っておいて上書きするのか、該当部分だけ書き換えるのか）

両方とも使います。部分的な書き換えはsedコマンド、 ファイルの置き換えはcatコマンドを使用してください。  
sedについて参考になりそうなサイト  
<https://www.ibm.com/support/knowledgecenter/ja/ssw_aix_72/com.ibm.aix.genprogc/manip_strings_sed.htm>

スクリプト全般で参考になりそうなサイト  
<http://blog.hitsujin.jp/entry/2011/03/09/140329>

