天天看點

六、Docker常用安裝及推送至阿裡雲

Docker常用安裝

7.1 總體步驟

搜尋鏡像->拉取鏡像->檢視鏡像->啟動鏡像->停止容器->移除容器

docker search xxx` -> `docker pull xxx:TAG` -> `docker images xxx` -> `docker run [-itd -p port:port] [--name yyy] xxx:TAG` -> `docker stop 容器ID/yyy` -> `docker rm [-f] yyy
           

7.2 安裝mysql

mysql5.7

docker pull mysql:5.7

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=10086 \
-d mysql:5.7
           

指令說明:

-p 12345:3306:将主機的3306端口映射到docker容器的3306端口。

--name mysql:運作服務名字

-v /mydata/mysql/conf:/etc/mysql :将主機/mydata/mysql/conf目錄,挂載到容器的/etc/mysql目錄

-v /mydata/mysql/data:/var/lib/mysql:将主機的/mydata/mysql/data目錄,挂載到容器的/var/lib/mysql目錄

-v /mydata/mysql/log:/var/log/mysql:将主機的/mydata/mysql/log目錄,挂載到容器的/var/log/mysql目錄

-e MYSQL_ROOT_PASSWORD=10086:初始化 root 使用者的密碼。

-d mysql:5.7 : 背景程式運作mysql5.7

使用windows上的sqlyog進行遠端連接配接:

記得關閉主控端防火牆或者開啟3306端口

# 檢視防火牆資訊,看哪些端口可以通路
firewall-cmd --list-all
# 關閉防火牆
systemctl stop firewalld

# 或者開啟3306端口通路(推薦)
firewall-cmd --permanent --zone=public --add-port=3306/tcp
systemctl restart firewalld
           
六、Docker常用安裝及推送至阿裡雲

使用docker對mysql容器中的資料進行備份

将docker mysql容器中的所有資料庫導出到主控端的/mydata/mysql8/all-databases.sql檔案中

docker exec myql服務容器ID sh -c ' exec mysqldump --all-databases -uroot -p"10086" ' > /mydata/mysql8/all-databases.sql

# 如果使用UTF-16編碼 用--result-file= 替換>
docker exec myql服務容器ID sh -c ' exec mysqldump --all-databases -uroot -p"10086" ' --result-file=/mydata/mysql8/all-databases.sql
           

mysqldump是mysql自帶的邏輯備份工具。指令格式:官網mysqldump

mysqldump [選項] 資料庫名 [表名] > /路徑/filename.sql
mysqldump [選項] --資料庫名 [選項 表名] > /路徑/filename.sql
mysqldump [選項] --all-databases [選項] > /路徑/filename.sql
           

常用選項說明:

參數名 縮寫 含義
--host -h 伺服器IP位址
--port -P 伺服器端口号
--user -u mysql使用者名
--password -p mysql密碼
--database 指定要備份的資料庫
--all-databases 備份mysql上的所有資料庫
--compact 壓縮模式,産生更少的輸出
--comments 添加注釋資訊

7.3 安裝redis

docker pull redis

docker run -p 6379:6379 -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf  -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
           

--appendonly yes 表示使用AOF進行持久化 (redis預設使用rdb進行持久化)

redis.conf是個檔案夾,不是個檔案 (小聲BB:這個redis.conf檔案夾是不是太容易引起歧義了?還有redis-server啟動的時候,後面跟的那串不是指定的配置檔案的路徑嗎,講道理redis.conf應該就是個配置檔案才對);

在主機/mydata/redis/conf/redis.conf目錄下建立redis.conf檔案

vim /mydata/redis/conf/redis.conf

📎redis.conf.txt

測試redis-cli連接配接:

docker exec -it redis容器ID redis-cli

六、Docker常用安裝及推送至阿裡雲

測試生成持久化檔案:

六、Docker常用安裝及推送至阿裡雲

八、本地鏡像釋出到阿裡雲

六、Docker常用安裝及推送至阿裡雲

8.1 鏡像的生成方法

  • 前面講過的DockerFile
  • 從容器建立一個新的鏡像:

    docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]]

    • OPTIONS選項說明:-a:送出的鏡像作者、-m:送出時的說明文字

我們之前自己做了一個包含vim和ifconfig的centos——mycentos:0.1,現在我們把它更新到0.2,并生成一個0.2的鏡像。

先看看mycentos:0.1有沒有容器

docker ps -a

,沒有就建立一個容器,

docker run -itd mycentos:0.1

docker commit -a mrlinxi -m "new contos 0.2 from 0.1" 容器ID mycentos:0.2
           

這樣就得到了mycentos:0.2的鏡像

六、Docker常用安裝及推送至阿裡雲

8.2 将本地鏡像推送到阿裡雲

登陸阿裡雲,進入控制台

六、Docker常用安裝及推送至阿裡雲

左上角菜單,點開搜尋容器鏡像服務:

六、Docker常用安裝及推送至阿裡雲

執行個體清單—>個人/企業(要錢) 沒有的需要建立一下,建立需要設定一個repository密碼

六、Docker常用安裝及推送至阿裡雲

然後建立一個鏡像倉庫

六、Docker常用安裝及推送至阿裡雲

然後下一步,選擇本地倉庫建立:

六、Docker常用安裝及推送至阿裡雲

建立好倉庫後,會有相應的操作指南:

六、Docker常用安裝及推送至阿裡雲
# 登陸倉庫 首次登陸需要輸入之前我們設定的倉庫密碼
docker login --username=阿裡雲賬戶 registry.cn-hangzhou.aliyuncs.com

docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/mrlinxi/mycentos:[鏡像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/mrlinxi/mycentos:[鏡像版本号]
           
六、Docker常用安裝及推送至阿裡雲
六、Docker常用安裝及推送至阿裡雲

送出後,本地也會有一份送出的鏡像。

六、Docker常用安裝及推送至阿裡雲

我們嘗試從阿裡雲拉取我們剛才push的鏡像。

# 删除本地送出的鏡像
docker rmi -f registry.cn-hangzhou.aliyuncs.com/mrlinxi/mycentos:0.2.1

dokcer pull registry.cn-hangzhou.aliyuncs.com/mrlinxi/mycentos:0.2.1
           
六、Docker常用安裝及推送至阿裡雲