手動製作docker映象
docker pull centos:7 # 可以檢視 docker hub 官方以取得名稱
docker run -it --name centos7 centos:7
2. 換源並安裝對應軟體
此處換為阿里雲的源(同時更換 yum 和 epel)
此處安裝 mysql 和 httpd
安裝mysql
見下面的額外內容
安裝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
如果一次需要執行多個命令,可以寫成乙個指令碼並執行指令碼。
額外內容 - 在 docker的 centos 中安裝 mysql
本來以為是個很簡單的過程居然折騰了這麼久,之前部署雲伺服器時也沒有好好地記錄,因此記錄下。
簡要注意點:首次登陸修改密碼、允許從任意 ip 以 root 身份登陸、開啟關閉服務
之後使用:rpm -ivh mysql57-community-release-el7-9.noarch.rpm 安裝源
使用 yum install mysql-server 安裝,並啟動 mysqld --user root (由於雲伺服器預設使用root)。此時可能立刻停止後退出,並報 can't open and lock privilege tables: table 'mysql.user' doesn't exist 錯誤,檢視配置檔案 /etc/my.conf,發現 datadir=/var/lib/mysql,因此使用 mysqld --initialize --user=mysql --datadir=/var/lib/mysql。如果提示目錄中已經有資料,則刪除目錄後重建即可。
使用 cat /var/log/mysqld.log | grep password 檢視臨時密碼,登陸後修改密碼。如果提示密碼不合要求,用 set global validate_password_policy=low; 降低密碼要求
設定允許 root 從任意 ip 登陸
use mysql;
select user, host from user;
update user set host = '%' where user = root; # 原值為localhost
flush privileges;
亦可使用:
grant all privileges on *.* to 'root'@'%' identified by '' with grant option;
flush privileges;
其中 「 *.* 」 代表所有資源所有許可權, 「 'root'@% 」 其中 root 代表賬戶名,% 代表所有的訪問位址,也可以使用乙個唯一的位址進行替換,只有乙個位址能夠訪問。如果是某個網段的可以使用位址與%結合的方式,如 10.0.42.%。identified by 'root',這個 root 是指訪問密碼。with grant option 允許級聯授權。
切記無論什麼時候一定要搞清命令的含義再執行!!!
鄙人就是因為沒有搞清楚此條命令的含義,照抄照搬。別人的 寫 「root」 我也跟著寫 「root」,自然搞得一團糟而且登陸不上去。
這和萌萌新(本人萌新23333)照抄群裡的 rm -rf / 有什麼區別 ???
啟動 mysql 服務。有兩種方式,但必須組合使用,不能混用:
使用 systemctl (針對centos 7.0及以上版本,7.0 以下版本使用 service 命令)
systemctl start mysqld
systemctl stop mysqld
使用 mysql 程式自帶的命令
# 由於雲伺服器預設root登陸,需要加上 --user root
# & 號表示後台執行,否則會阻塞
mysqld start --user root &
mysqladmin -u root -p shutdown
終於完成!
額外內容 - 原先的啟動 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的安裝
標籤:安裝,手動,使用,user,https,mysql,映象,docker,root
系統製成docker映象 手動製作Docker映象
手動製作 docker 映象 前言b.環境為 centos 7.0 雲伺服器 用來用去感覺 windows 的 docker 出各種問題,比如使用 privileged 和 usr sbin init 會直接出錯暫停,因此還是使用 linxu 作業系統的雲伺服器了,不過之前的內容在 linux 下也...
基於在用系統製作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...