手動製作 docker 映象
前言b. 環境為 centos 7.0 雲伺服器(用來用去感覺 windows 的 docker 出各種問題,比如使用 --privileged 和 /usr/sbin/init 會直接出錯暫停,因此還是使用 linxu 作業系統的雲伺服器了,不過之前的內容在 linux 下也都適用)
d. 過了n久以後突然想到,在 docker 容器裡面直接安裝資料庫的情況似乎並不多見,而是更傾向於直接使用資料庫的容器。因為整個服務平台需要的是一套資料庫而不是每個容器搞一套。本文僅作為使用容器技術的演示,作為生產環境的部署方案是極不合適的。本例中安裝 mysql 就當是自己的一些嘗試吧(還有踩坑,擦)
docker pull centos:7 # 可以檢視 docker hub 官方以取得名稱
docker run -it --name centos7 centos:7
2. 換源並安裝對應軟體
此處換為阿里雲的源(同時更換 yum 和 epel)
此處安裝 mysql 和 httpd
安裝httpd
安裝網路工具(netstat 等)
yum install net-tools
使用命令 cp /usr/share/zoneinfo/asia/shanghai /etc/localtime 修改時區為東八區
3. 將容器儲存為映象
docker commit
最後執行該映象(啟動對應服務的命令,並阻塞),如:
docker run -d -p 81:80 nginx -g 'daemon off;'
apache 為 httpd -d foreground
如果一次需要執行多個命令,可以寫成乙個指令碼並執行指令碼,如:
#!/bin/bash
mysqld --user root 此命令不阻塞
額外內容 - 原先的啟動 centos7 的 docker 映象方式(坑)
我原先的啟動命令為:
docker run -it --privileged --name centos7 centos:7 /usr/sbin/init
因為啟動時如果不加 --privileged 和 /usr/sbin/init,則無法使用 systemctl 命令來啟動和停止服務。而使用此方式後,會呼叫 /usr/sbin/init 來載入映象,當前視窗會直接無法操作,如下:
而儲存該容器為映象後,如果啟動時不加這兩個引數,則會報錯:
然而比較奇怪的是,以此種方式啟動的容器,安裝 mysql 時不需要執行其它操作,yum install mysql 安裝後就可以正常使用;且修改密碼時有密碼強度的驗證。猜測是 mysql 安裝時需要呼叫系統的命令執行一些服務,而不加 --privileged 和 /usr/sbin/init 無法正常使用系統服務。
參考:後記
原本本篇的內容裡還有如何在容器中安裝 mysql 的內容,但感覺內容太長,耦合性太高(doge),而且這篇主要的內容是怎麼把容器提交為映象,還是拆到了另一篇部落格中。這也算是有點啟發吧:呼叫棧再長,還是要回到主函式上!
系統製成docker映象 手動製作Docker映象
手動製作docker映象 docker pull centos 7 可以檢視 docker hub 官方以取得名稱 docker run it name centos7 centos 7 2.換源並安裝對應軟體 此處換為阿里雲的源 同時更換 yum 和 epel 此處安裝 mysql 和 httpd...
基於在用系統製作docker基礎映象
為了便於測試,需要建立乙個基於在用的自身系統docker基礎映象,具體操作如下 tar numeric owner exclude proc exclude sys exclude home clusteruser exclude home centos7 exclude home centos e...
Docker容器學習梳理 手動製作系統映象
以下記錄了在centos7上做docker映象的操作記錄 1 映象製作指令碼 mkimage yum.sh 提取密碼 qsss 或者直接wget 2 執行指令碼 root linux node2 chmod 755 mkimage yum.sh root linux node2 mkimage yu...