系統製成docker映象 手動製作Docker映象

2021-10-16 16:16:00 字數 2742 閱讀 9362

手動製作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...