1、docker是什麼?
虛擬化容器技術。Docker基於鏡像,可以秒級啟動各種容器。每一種容器都是一個完整的運行
環境,容器之間互相隔離。
2、Linux下docker安裝
進入docker官網,查看對應linux系統的docker安裝文檔
centos為例:
https://docs.docker.com/engine/install/centos/
- 卸載舊版本的docker
<code>sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
/<code>
- 安裝docker依賴庫
<code>$ sudo yum install -y yum-utils $ sudo yum-config-manager \ --add-repo \https:
//download.docker.com/linux
/centos/docker
-ce.repo/<code>
[sudo] 表示啟動管理員身份執行,如果是root賬戶,可以不加此關鍵字
- 安裝docker
<code>$ sudo yum install docker-ce docker-ce-cli containerd.io
/<code>
- 啟動docker
<code>$ sudo systemctl start docker/<code>
- 檢查啟動狀態
<code>$ sudo docker -v/<code>
- 設置開機自啟
<code>sudo systemctl
enable
docker/<code>
- 查看當前docker安裝的鏡像資源
<code>$ sudo docker images/<code>
查看正在docker中運行的應用
<code>$ sudo docker ps/<code>
重啟/關閉docker
<code>systemctl
restart docker
systemctl
stop docker
/<code>
3、環境-配置docker阿里雲鏡像加速
由於docker hub 是外國網站訪問速度慢,這裡需要配置國內的docker鏡像,我們採用阿里雲的加速
登陸阿里雲https://www.aliyun.com/ — 控制檯 — 左側產品服務 — 容器鏡像服務 — 鏡像加速器 — CentOS
<code>sudomkdir
-p /etc/docker sudo tee /etc/docker/daemon.json "registry-mirrors": ["https://mdf000mb.mirror.aliyuncs.com"
] } EOF sudo systemctl daemon-reload sudo systemctl restart docker/<code>
4、docker安裝mysql
- 下載鏡像文件
docker hub 搜索mysql 點擊官方(Official字樣)— Tags 查看版本號
<code>$sudo
docker pull mysql:5.7/<code>
- 創建實例並啟動
<code>$ sudo docker run -p3306
:3306
--name mysql -v /mydata/mysql/conf:/etc/my
sql -v /mydata/mysql/logs:/var/
log/mysql -v /mydata/mysql/data:/var/
lib/mysql -e MYSQL_ROOT_PASSWORD=123456
-d mysql:5.7
/<code>
參數說明
-p 33063306:將容器的3306端口映射到主機的3306端口
-v
/mydata/mysql/conf:/etc/mysql :將配置文件夾掛載到主機
-v
/mydata/mysql/logs:/var/log/mysql :將日誌文件夾掛載到主機
-v
/mydata/mysql/data:/var/ib/mysql :將配置文件夾掛載到主機
-e MYSQL ROOT PASSWORD =123456 :初始化root用戶的密碼為123456
-d mysql:5.7 : 後臺運行mysql5.7
- 添加mysql配置文件my.cnf
<code>vi
/mydata/mysql/conf/my.cnf/<code>
<code>[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
= utf8collation
-server
=utf8_unicode_ciskip
-character
-set
-client
-handshakeskip
-name
-resolve/<code>
- 進入到docker mysql容器中檢查
<code>docker
exec -it mysql /bin/bash
cd
/etc/mysql/
cat
my.cnf
/<code>
- 重啟docker中的mysql
<code>docker
restart mysql/<code>
- 設置docker啟動後mysql自啟動
<code>dockerupdate
mysql /<code>
5、docker安裝redis
- 下載鏡像文件
<code>docker
pull redis/<code>
- 創建實例並啟動創建redis.conf文件,用於redis配置文件掛載(默認redis配置目錄下沒有該文件,會導致第二步驟執行將redis.conf當作文件夾創建)
<code>mkdir
-p /mydata/redis/conf
touch
/mydata/redis/conf/redis.conf
/<code>
啟動,端口映射並掛載文件
<code>docker
run -p6379
: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/<code>
- 測試
<code> dockerexec
-it redis redis-cli/<code>
- 設置數據持久化(按需)當前redis數據存儲默認為內存中,當docker重啟後,redis數據會丟失,可以配置redis.conf配置文件,改變存儲方式appendonly yes
- docker重啟後redis自啟動
<code>dockerupdate
redis /<code>
6、docker安裝tomcat並部署應用運行
- 下載鏡像文件docker pull tomcat:8
- 啟動tomcatdocker run --name yoyotomcat -p 8080:8080 -v /usr/local/tomcat/webapps/demo:/usr/local/tomcat/webapps/demo -d tomcat:8 --name yoyotomcat 容器重命名yoyotomcat-p 8090:8080 容器的8080端口映射到主機的8090端口-v /usr/local/tomcat/webapps/demo:/usr/local/tomcat/webapps/demo容器的/usr/local/tomcat/webapps/demo 目錄掛載到本機 /usr/local/tomcat/webapps/demo,前面是本機地址,後面是docker鏡像地址-d 掛後臺運行