1. 程式人生 > >建立帶httpd服務的CentOS Docker映象

建立帶httpd服務的CentOS Docker映象

一、拉取帶sshd服務的centos docker映象到本地

命令:
  docker pull freedoms1988/centos7-sshd
解釋:
  docker pull【拉取命令】 freedoms1988/centos7-sshd【遠端映象名】

二、啟動帶sshd服務的centos docker容器

命令:
  docker run -p 10022:22 -d freedoms1988/centos7-sshd /usr/sbin/sshd -D
解釋:
  docker run【執行命令】 -p 10022:22【對映埠:宿主機10022到docker22】 -d freedoms1988/centos7-sshd【本地映象名】 /usr/sbin/sshd -D【啟動sshd命令】

三、登入容器

命令:
  ssh root@localhost -p 10022
解釋:
  ssh root【使用者】@localhost【主機名】 -p 10022【埠號】

四、安裝openssh-clients

命令:
  yum install openssh-clients
解釋:
  yum install【安裝命令】openssh-clients【軟體名稱】

五、安裝wget

命令:
  yum install wget
解釋:
  yum install【安裝命令】wget【軟體名稱】

六、下載httpd

命令:
  1、cd /usr/local/src
  2、wget [http://apache.01link.hk//httpd/httpd-2.4.29.tar.gz](http://apache.01link.hk//httpd/httpd-2.4.29.tar.gz)
  3、tar -zxvf httpd-2.4.29.tar.gz
  4、cd httpd-2.4.29
解釋:
  1、進入原始碼暫存路徑
  2、下載httpd2.4.29
  3、解壓
  4、進入httpd2.4.29原始碼路徑

七、安裝gcc、make、apache依賴

命令:
  yum install -y gcc make apr-devel apr apr-util apr-util-devel pcre-devel
解釋:
  yum install【安裝命令】 -y【自動確認引數】 gcc make apr-devel apr apr-util apr-util-devel pcre-devel【軟體名稱】

八、編譯、安裝httpd

命令:
  1、./configure --prefix=/usr/local/apache2 --enable-mods-shared=most --enable-so
  2、make && make install
解釋:
  1、配置編譯引數,安裝路徑
  2、編譯並安裝

九、修改httpd配置

命令:
  sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/g' /usr/local/apache2/conf/httpd.conf
解釋:
  sed【查詢命令】 -i【替換引數】 's/#ServerName www.example.com:80/ServerName localhost:80/g' 【待替換引數/替換引數】/usr/local/apache2/conf/httpd.conf【檔案路徑】

十、啟動httpd

命令:
  1、/usr/local/apache2/bin/httpd
  2、systemctl enable httpd.service
解釋:
  1、啟動httpd
  2、設定開機自啟動

十一、編輯ssh、httpd啟動指令碼

操作:
  1、cd /usr/local/sbin
  2、vim httpd.sh
  3、編輯內容:
      #!/bin/bash
      /usr/sbin/sshd &
      /usr/local/apache2/bin/httpd -D FOREGROUND
  4、儲存退出
  5、更改檔案許可權
    chmod 755 httpd.sh

十二、生成支援ssh的centos映象

命令:
  1、docker ps -a
  2、docker commit 6c40d0d2d8e centos7-sshd
  3、docker images
解釋:
  1、docker ps【列出容器列表】 -a【可選引數,列出未啟動容器列表】
  2、docker commit【提交】6c40d0d2d8e【上一步中容器id】 centos7-httpd2.4-sshd【自定義映象名稱】
  3、docker images【列出本地映象列表】

十三、使用生成的映象執行容器

命令:
  docker run -d -p 10022:22 -p 8080:80 freedoms1988/centos7-httpd2.4-sshd /usr/local/sbin/httpd.sh
解釋:
  docker run【執行命令】 -d【後臺程序引數】 -p 10022:22【埠對映:宿主機10022到docker22】 -p 8080:80 【埠對映:宿主機8080到docker80】freedoms1988/centos7-httpd2.4-sshd【映象名稱】 /usr/local/sbin/httpd.sh【執行映象時執行指令碼路徑】

十四、測試httpd

操作:
  瀏覽器中輸入localhost:8080
結果:
  看到it'work

十五、測試sshd

操作:
  ssh root@localhost -p 10022
結果:
  成功進入容器

十六、掛載宿主機專案目錄到容器httpd服務目錄

命令:
  docker run -d -p 10022:22 -p 8080:80 -v /Users/freedoms/work/Docker/httpd/www:/usr/local/apache2/htdocs freedoms1988/centos7-httpd2.4-sshd /usr/local/sbin/httpd.sh
解釋:
  docker run【執行命令】 -d -p 10022:22【埠對映:宿主機10022到docker22】 -p 8080:80【埠對映:宿主機8080到docker80】 -v /Users/freedoms/work/Docker/httpd/www:/usr/local/apache2/htdocs 【目錄對映:宿主機目錄:docker目錄】freedoms1988/centos7-httpd2.4-sshd 【映象名稱】 /usr/local/sbin/httpd.sh 【執行映象時執行指令碼路徑】

十七、測試宿主機專案目錄掛載有效性

操作:
  1、在宿主機專案目錄中建立index.html檔案,並輸入任意內容
  2、在宿主機或容器內 curl localhost:8080
結果:
  應列印index.html檔案內容