Docker學習地址:html
視頻:https://www.bilibili.com/video/av32048704/?p=38java
文檔:http://www.runoob.com/docker/docker-install-mysql.htmlmysql
安裝Docker教程linux
建議安裝Ubuntu系統,CentOS使用CentOS7,CentOS6支持性很差redis
Ubuntu 16.04 Server 版安裝過程圖文詳解 https://www.linuxidc.com/Linux/2017-11/148341.htmspring
知識體系:sql
一、鏡像docker
相關命令:bash
docker images(查看全部鏡像)app
docker pull redis(拉取最新版本的鏡像,redis)
docker pull redis:3(拉取指定版本,redis)
利用私服拉取鏡像
docker rmi 【鏡像名稱】(刪除鏡像)
docker search redis(遠程搜索關於redis的鏡像)
二、容器
docker ps(查看正在運行的容器)
docker ps -a(查看全部容器)
docker create --name 【容器名稱】 -p 【外部暴露端口】:【內部端口】 【鏡像名稱:版本號】
=》docker create --name redis-container -p 16379:6379 redis:3(建立容器,存儲redis鏡像)
docker start 【容器名稱/容器ID】(啓動容器)
=》名稱/ID能夠不寫全,只要能辨認出便可
docker stop 【容器名稱/容器ID】(關閉容器)
docker run -d(建立容器,與create命令一致)
=》create建立成功後返回的是ID,而run成功後返回的是日誌信息
docker rm 【容器名稱/ID】(刪除容器)
docker rm 【容器名稱/ID】 -f(強制刪除容器)
容器至關於一個沙箱,有時咱們須要進入容器內作一些操做,好比修改配置文件等;
-it表明-i和-t
-i指打開容器的標準輸入(容器跟它有交互,能夠輸入東西)
-t指分配一個僞終端,而且綁定到容器的標準輸入上(咱們能夠看到一個界面)
docker exec -it 【容器名稱/ID】 /bin/bash(進入容器內部)
exit(進入容器內部後的退出命令)
docker logs -f 【容器名稱/ID】(查看某容器的日誌輸出)
=》通常配合start使用,
=》docker start redis && docker logs -f redis
三、數據管理,掛載目錄
在create或者run容器時,能夠經過-v參數指定主機的目錄,掛載到容器中的某一個目錄上,這樣容器就在這個目錄讀寫數據了。從而實現了容器和數據的分離。
docker pull percona:5.6
docker pull 域名/percona:5.6(私服下載)
docker create --name percona -v /data/mysql-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root123 percona:5.6
(主機目錄-容器外部目錄:掛載目錄-容器內部目錄,-e就是指定參數,指定ROOT用戶的密碼)
=》percona容器雖然能夠建立成功,可是啓動後在列表中一直看不見
sudo docker run -d percona(建立容器,若是沒有鏡像,則會自動拉取)
四、構建鏡像
docker的鏡像必須基於某一個鏡像
java -jar -Dport=16868(JVM運行參數)jar包名稱 [運行參數:--port=16868]
java -jar -Dport=16868 springcloud-eureka-server-1.0-SNAPSHOT.jar
java -jar springcloud-eureka-server-1.0-SNAPSHOT.jar --port=16890
sudo docker pull java:8
===Dockerfile文件內容===
FROM java:8
COPY ./springcloud-eureka-server-1.0-SNAPSHOT.jar /itcast-eureka/springcloud-eureka-server-1.0-SNAPSHOT.jar
COPY ./app-entrypoint.sh /
RUN chmod +x /app-entrypoint.sh
EXPOSE 3306
ENTRYPOINT ["/app-entrypoint.sh"]
===app-entrypoint.sh文件===
#!/bin/bash
java -jar /itcast-eureka/springcloud-eureka-server-1.0-SNAPSHOT.jar
sudo docker build -t itcast-eureka-container:1.0.0 .(製做鏡像,點"."表明當前目錄)
docker tag 93e5281934c5 itcast-eureka-image:1.0.0(重命名鏡像名稱和版本,原來的不會被刪除)
sudo docker create --name eureka-server-container -t -p 6868:6868 itcast-eureka-image:1.0.0
sudo docker start eureka-server-container && sudo docker logs -f eureka-server-container
Got permission denied while trying to connect to the Docker daemon socket at unix
備註:
一、sudo是指將ROOT管理員權限賦予其餘用戶
二、--help(查看某命令的幫助信息)
三、一個容器只能包含一個鏡像嗎?
四、能夠針對一個內部端口,建立多個容器-改變容器名稱和外部端口便可,如此一來就能夠絕不費勁的裝N個Reids了
五、容器刪掉後,鏡像不會被刪除
六、percona是mysql的衍生版-組織優化版本