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

質問項目

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

環境構築手順

  1. 基本システムのインストール

    % apt-get install php composer apache2 mysql-server supervisor
    
  2. デーモンを起動

    % service apache2 start
    % service supervisor start
    
  3. PHPの追加機能のインストール

    % apt-get install php7.0-mysqlなど 
    
  4. Apache module有効

    % a2enmod ssl
    % a2enmod php7.0
    % a2enmod rewrite
    % service apache2 restart
    
  5. /etc/apache2/apache2.confの該当部分を以下に変更

    <Directory /var/www/>
            AllowOverride All
    </Directory>
    
  6. nodejsのインストール

    % curl -sL https://deb.nodesource.com/xxxxxx.x | bash -
    % apt-get install nodejs
    
  7. xvfb関連ライブラリをインストール

    % apt-get install libgtk xvfb
    
  8. xvfb起動

    $ Xvfb 。。。。。。。
    
  9. 各種ライブラリをインストール

    $ cd /var/www/。。。。。
    $ npm install
    $ cd /var/www/。。。。。
    $ composer install
    
  10. envファイルを作る

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

    $ chmod 1777
    
  12. supervisorの設定(リンク?)

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

    DocumentRoot /var/www/。。。。。