docker 容器

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

Ubuntu 16.04安裝docker詳細步驟   http://www.javashuo.com/article/p-roftipbn-my.html
{
sudo apt- get install -y docker-ce 這個步驟以前的命令也要執行,不然會提示找不到docker-ce
}

 

知識體系: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的衍生版-組織優化版本

相關文章
相關標籤/搜索