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對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
測試生成持久化檔案:
八、本地鏡像釋出到阿裡雲
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的鏡像
8.2 将本地鏡像推送到阿裡雲
登陸阿裡雲,進入控制台
左上角菜單,點開搜尋容器鏡像服務:
執行個體清單—>個人/企業(要錢) 沒有的需要建立一下,建立需要設定一個repository密碼
然後建立一個鏡像倉庫
然後下一步,選擇本地倉庫建立:
建立好倉庫後,會有相應的操作指南:
# 登陸倉庫 首次登陸需要輸入之前我們設定的倉庫密碼
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:[鏡像版本号]
送出後,本地也會有一份送出的鏡像。
我們嘗試從阿裡雲拉取我們剛才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