1. 程式人生 > 實用技巧 >微服務分散式電商專案學習筆記(三)---- docker介紹安裝以及使用docker安裝軟體(2020/7/1)

微服務分散式電商專案學習筆記(三)---- docker介紹安裝以及使用docker安裝軟體(2020/7/1)

其實在介紹docker的使用和安裝之前應該還要介紹虛擬機器的安裝與配置,以及虛擬網路的配置,但是我使用的是vmware,而視訊課使用的是vagrant,這一塊我簡看的,因此沒有過多的介紹,至於vmware的安裝配置和虛擬網路的配置我倒是可以給大家推薦兩篇部落格:

VMware 安裝 Centos7 超詳細過程:https://www.runoob.com/w3cnote/vmware-install-centos7.html

VMware虛擬機器下Centos7 橋接方式網路配置完整步驟:https://blog.csdn.net/u013626215/article/details/88645003

之前就該釋出的,不過那時候還沒有整理好,加上有各種各樣的事情耽誤,今天抽空整理了下,就發表了,如有問題,請多多指教。


一、docker理念

docker的概念:在任何地方釋出執行,一次封裝,到處執行,docker提供了一種標準。 docker解決了執行環境和配置問題軟體容器,方便做持續繼承並有助於整體釋出的容器虛擬化技術

docker三要素:映象+倉庫+容器

docker可以做什麼?docker是容器虛擬技術,可以實現web應用自動化打包釋出、自動化測試和持續整合、在服務型環境中部署和調整資料庫或其他的後臺應用、搭建paas環境。

虛擬機器系統:在一個作業系統上執行另外一個作業系統,應用程式對此毫無感知,如果不需要了就可以刪除這個虛擬機器系統,在底層,虛擬機器就是一個檔案。

虛擬機器的缺點:資源佔用多,冗餘步驟多,啟動慢。

比較docker與傳統虛擬化技術的區別: 傳統虛擬機器技術是虛擬出一整套硬體後,在其上執行一個完整的作業系統,在該系統上再執行所需要的程式。 而docker容器內的應用程序直接運行於宿主的核心,容器內沒有自己的核心,而且也可以進行硬體虛擬,因此容器要比傳統虛擬機器更為輕便。並且每個容器之間互相隔離,每個容器有自己的檔案系統,容器之間程序不會相互影響,能區分計算資源。

docker的優點總結:一次構建、隨處執行。更快捷的應用交付和部署;更便捷的升級和擴縮容;更簡單的系統運維;更高效的計算資源利用。docker更高效:無作業系統的虛擬化開銷;更敏捷,更靈活。

docker的例項應用: 蘑菇街基於docker的優勢:輕量,秒級的快速啟動速度;簡單易用活躍的社群;標準統一打包部署執行方案;映象支援增量分支,易於部署; 易於構建、良好的REST API,也很適合自動化測試和持續整合,;效能高,尤其是記憶體和IO的開銷小

docker下載地址:官網:docker.com ; 中文版:docker-cn.com ; 倉庫:docker hub


二、docker安裝

前提說明:centos6.5以上的版本,系統為64位

檢視自己的核心版本:uname -r
cat /etc/redhat-release

docker的基本組成: Client + DOCKER_HOST + Registry == docker終端+docker主機+docker倉庫

三大要素: 映象:docker映象就是一個只讀的模板,映象可以用來建立docker容器,一個映象可以建立很多容器; 容器:docker利用容器獨立執行的一個或一組應用。容器是用映象建立的執行例項; 倉庫:集中存放映象檔案的場所。
倉庫和倉庫註冊伺服器是有區別的。倉庫註冊伺服器上往往存放著多個倉庫,每個倉庫中又包含了多個映象, 每個映象有不同的標籤。
倉庫分為公開倉庫和私有倉庫兩種形式。最大的公開倉庫是docker hub,存放了數量龐大的映象供使用者下載。國內的公開倉庫包括阿里雲、網易雲等。

安裝步驟
centos6.8安裝步驟:

1、yum install -y epel-release
2、yum install -y docker-io
3、安裝後的配置檔案:etc/sysconfig/docker
4、service docker start  //啟動docker
5、docker version //檢視docker的核心版本

centos7安裝教程: 參考部落格:https://blog.csdn.net/u014069688/article/details/100532774

啟動docker:sudo systemctl start docker   
檢視docker的版本:docker -v   
檢視docker安裝的映象列表:docker images   
設定docker開機自啟動:systemctl enable docker  

三、使用docker安裝mysql和redis 1.docker安裝mysql5.7

docker pull mysql:5.7

1.1建立例項並啟動:docker run -p 3306:3306 --name mysql\ 將容器的3306埠對映到主機的3306埠
-v /mydata/mysql/log:/var/log/mysql\ 將mysql映象日誌資料夾掛載到主機
-v /mydata/mysql/data:/var/lib/mysql\ 將mysql資料資料夾掛載到主機
-v /mydata/mysql/conf:/etc/mysql\ 將配置資料夾掛在到主機
-e MYSQLROOTPASSWORD=root\ 初始化root使用者的密碼
-d 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=root \  
-d mysql:5.7

1.2 docker ps檢視正在執行的映象
使用docker exec -it mysql /bin/bash 訪問容器內部(每一個容器裡面都是一個linux系統 在容器內部可以進行各種命令操作,退出容器回到linux主系統時,exit即可)

另外,由於先前執行了掛載的命令,因此修改主linux裡面對映好的資料夾裡面的內容,映象裡面也會同步更改。

1.3 docker裡面mysql映象的配置檔案修改
vi /mydata/mysql/my.cnf

配置檔案內容:
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

1.4重啟mysql:docker restart mysql
進入到mysql的容器看一看有沒有修改好配置

docker exec -it mysql /bin/bash  
cd /etc/mysql  
cat my.cnf  

2.docker安裝redis

docker pull redis :下載redis映象,不指定版本則下載最新的  
mkdir -p /mydata/redis/conf 建立redis相關的資料夾  
touch redis.conf 建立redis的配置檔案  

掛載命令

docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \  
-v/mydata/redis/conf/redis.conf:/etc/redis/redis.conf \  
-d redis redis-server /etc/redis/redis.conf 

進入docker映象裡面的redis

docker exec -it redis redis-cli

進入後進行set,get操作,但是重啟redis後發現值獲取不到了,說明剛剛redis的值是存在記憶體中的,沒有持久化 docker restart redis 重啟redis

實現持久化:先輸入pwd,再編輯redis.conf 加入:appendonly yes


博主整理實屬不易,請兄臺點個贊再走吧,歡迎評論和多多指教。