1. Docker概述
目标:了解Docker是什麼、應用場景及其組成部分
小結:
- Docker是一個應用容器引起;
- 應用場景:web的自動化打包釋出,自動化測試、可持續內建,安裝各種元件;
- 與傳統虛拟機比較:docker啟動速度比較快,占用體積較小;
- 組成:docker守護程序,倉庫,鏡像,容器,docker用戶端
2. Docker安裝與啟動
目标:線上安裝docker并使用指令啟動、停止docker
分析:
- 更新yum源為ustc;
- 安裝docker;
- 更新docker的鏡像源為ustc;
- 使用docker指令操作docker
需求更新yum源和鏡像源安裝docker;安裝之後可以使用
docker -v
# 啟動
systemctl start docker
# 停止
systemctl stop docker
#檢視docker啟動狀态
systemctl status docker
3. 鏡像相關指令
目标:能夠使用鏡像的檢視、搜尋、拉取、删除指令
拉取:docker pull 鏡像名稱:版本号(若不指定則會拉取最新的版本)
删除全部鏡像:docker rmi ` docker images -q ` (慎用)
4. 檢視&建立并啟動互動式容器
目标:使用檢視容器指令;拉取centos:7的鏡像之後結合容器啟動指令和選項 -it 啟動互動式容器
- 拉取鏡像(容器是基于鏡像運作);
- 建立并啟動互動式容器,docker互動式容器(啟動容器之後會直接進入容器的指令行終端,如果退出則容器停止運作)
# 檢視容器
docker ps -a
# 建立并啟動互動式容器
docker run -it --name=mycentos7 centos:7 /bin/bash
啟動互動式容器之後是直接進入容器終端;可以檢視容器的檔案結構;使用exit指令則會退出終端并且停止容器。
5. 建立并啟動守護式容器
目标:結合容器啟動指令和選項 -di 啟動守護式容器
建立并啟動docker容器,可以在背景運作;
在建立互動式容器之後如果退出的話,容器處于停止狀态,可以使用指令再次啟動容器,使用指令進入容器并操作。
# 建立并啟動守護式容器
docker run -di --name=mycentos2 centos:7
# 啟動容器後再進入容器
docker exec -it mycentos2 /bin/bash
守護式容器在啟動之後會一直在背景運作,即使進入容器之後執行exit指令也不會停止容器;
适用于需要長期運作容器的情況
6. 停止&拷貝&挂載&檢視ip&删除容器
目标:能夠使用容器的停止、拷貝檔案、目錄挂載、檢視IP、删除指令
- 容器停止、啟動
- 拷貝檔案:容器與主控端之間的檔案互拷
- 目錄挂載:将主控端的目錄映射到容器對于目錄
- 檢視容器IP
Docker - 容器删除:隻能删除停止狀态的容器;docker rm `docker ps -a -q`
7. MySQL容器部署
目标:拉取mysql鏡像,啟動容器,操作容器中的mysql
- 拉取mysql鏡像;
- 建立并啟動守護式容器;
- 在容器中操作mysql;
-
使用圖形界面工具(windows)操作在docker中安裝的mysql;在建立mysql容器的時候使用-p指定端口映射實作連接配接
在建立容器的時候mysql的root使用者可以指定遠端通路的密碼。
在建立容器的時候指定環境變量MYSQL_ROOT_PASSWORD表示使用root進行遠端連接配接時候的密碼。如果需要進行遠端連接配接的話可以使用-p進行端口映射。
8. Tomcat容器部署
目标:拉取tomcat鏡像,啟動容器,操作容器中的tomcat
-
将項目檔案上傳到容器中的tomcat目錄(webapps)
建立容器的時候可以指定-v進行目錄挂載,tomcat在容器中的目錄(/usr/local/tomcat/webapps)
-
可以通過外部浏覽器通路容器中的項目
建立容器的時候可以指定-p進行端口映射
- 拉取tomcat鏡像;
docker pull tomcat
- 建立并啟動tomcat容器;
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat
-
通路容器中tomcat
http://192.168.76.128:9000
上傳項目檔案可以使用容器的目錄挂載功能,外部通路可以使用端口映射
9. Nginx容器部署
目标:拉取nginx鏡像,啟動容器,通路nginx
nginx的預設通路端口是:80
在建立容器的時候需要進行端口映射,指定-p,映射的端口80
- 拉取nginx鏡像;
- 建立并啟動nginx容器;
- 在浏覽器上通路容器中nginx,http://192.168.76.128
如果被占用了80端口,那麼在指定映射的時候可以改變主控端的端口映射,在通路時也需要帶上端口号。
10. Redis容器部署
目标:拉取redis鏡像,啟動容器,操作容器中的redis
- 拉取redis鏡像;
- 建立并啟動redis容器;預設端口是6379,如果需要外部通路則可以使用端口映射;
- 連接配接redis: ①使用指令行用戶端 ②使用圖形界面工具
# 建立容器
docker run -di --name=myredis -p 6379:6379 redis
# 進入容器
docker exec -it myredis /bin/bash
11. docker-compose簡介&安裝
目标:docker-compose的作用;能夠安裝docker-compose
docker-compose是一個應用工具;可以通過配置docker-compose.yml檔案同時啟動多個容器。
部署項目時可以編寫一個docker-compose.yml檔案作為啟動項目機關,同時啟動項目相關的那些容器。
12. docker-compose應用
目标:編寫模版檔案同時啟動docker容器
docker-compose可以實作一次啟動多個容器;通過配置docker-compose模闆檔案(docker-compose.yml),在這個配置檔案中去配置各個容器及其相關的依賴。
- 編寫模闆檔案;
- 建立并啟動docker-compose項目(模闆檔案所在的目錄,docker-compose.yml)
- 測試
docker-compose可以配置一個模闆檔案實作一次可以啟動多個容器,運作時候可以執行一個up則會建立并啟動模闆檔案中的各個服務。
模闆檔案是yml格式的;編寫的時候需要注意其格式。
13. 遷移與備份
目标:能夠将容器儲存為鏡像,備份,恢複鏡像再啟動以恢複的鏡像作為基礎的容器
在目前的容器中安裝了各種元件;期望在其他伺服器上也能快速擁有該容器的一切環境;可以将目前的容器制作為一個鏡像,再将該獎項複制到其他伺服器,其他伺服器再基于鏡像運作容器。
- 将容器儲存為一個鏡像;
- 備份鏡像;
- 恢複鏡像;
- 基于鏡像運作容器
docker容器可以儲存為一個鏡像;備份為一個鏡像包(*.tar)可以複制遷移到其他伺服器,再恢複該tar包中的鏡像,基于鏡像運作容器實作環境的一緻。
14. 使用Dockerfile建立鏡像
目标:使用Dockerfile建立一個自定義jdk1.8的鏡像
假設在centos7作為基礎鏡像上;添加jdk1.8并建構一個包含jdk1.8的centos7新鏡像。
-- Dockerfile可以實作;Dockerfile是由一系列指令和參數構成的文本檔案,在檔案中可以指定各個元件資源和運作指令等。
實作步驟:
- 拉取centos7鏡像;
- 上傳jdk1.8;
- 編寫Dockerfile檔案;
- 建構鏡像;
- 測試(基于新鏡像建立并運作容器,運作java -version)
Dockerfile可以基于鏡像制作鏡像;
docker build -t='jdk1.8' .
15. 私有倉庫搭建與配置
目标:拉取、啟動私有倉庫鏡像并可以通路私有倉庫
拉取registry鏡像;基于鏡像建立私有倉庫容器;需要去修改docker的一個配置檔案指定私有倉庫位址;再通路私有倉庫:http://ip:5000/v2/_catalog
16. 将鏡像上傳至私有倉庫
目标:将制作的jdk1.8的鏡像上傳到私有倉庫
将本地鏡像打标簽(标記本地鏡像為一個私有倉庫中的鏡像);将打了标簽的鏡像推送到私有倉庫。
17. 從私有倉庫拉取鏡像
目标:将私有倉庫中的jdk1.8鏡像拉取到本地
- 私有倉庫與拉取鏡像的伺服器是在同一台機器上:直接拉取鏡像;
docker pull 私有倉庫位址/鏡像名稱
- 私有倉庫與拉取鏡像的伺服器是不在同一台機器上:需要去修改docker的配置檔案,指定私有倉庫位址;再執行拉取鏡像的指令。
如果本地存在同名的鏡像需要先删除鏡像後拉取