柚子快報邀請碼778899分享:容器 運維 Docker
柚子快報邀請碼778899分享:容器 運維 Docker
概念:docker就是一個開源的容器引擎
?? ? ? ? ? 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的LInux機器上
?? ? ? ? ? 容器是完全使用沙箱機制,呼吸隔離
安裝:
配置docker鏡像加速器docker hub
阿里云每個人都有免費的鏡像加速器
啟動docker:systemctl start docker
查看docker狀態(tài):systemctl status docker
停掉docker:stop docker
開機啟動docker:systemctl enable docker
?查看鏡像命令:docker images
搜索鏡像命令:docker search redis:5.0(版本和名稱用:隔開)
拉取鏡像命令(下載redis):docker pull redis(可以看官方鏡像docker hub里面支持redis的版本)
官方連接:Docker
刪除鏡像命令:docker rmi (image id)鏡像id
查看所有鏡像:docker images -q
刪除所有鏡像:docker rmi docker images -q
?創(chuàng)建容器命令(創(chuàng)建完運行并進入容器內(nèi)部):docker run -it --name=c1 centos:7 /bin/bash
(i表示一直運行,t表示分配終端接受命令;--name=c1也可以--name c1,name后面是名稱;centos:7:鏡像名稱:鏡像版本)
創(chuàng)建容器命令(創(chuàng)建完運行 不進入容器內(nèi)部):docker run -id --name=c2 centos:7
(-id:d表示創(chuàng)建完不進入容器;/bin/bash不需要進入就不加)
退出容器(容器就不運行):exit
查看正在運行的容器:docker ps
查看歷史運行的容器:docker ps -a
進入容器命令:docker exec -it c2 /bin/bash
關(guān)閉容器:docker stop c2(容器名稱)
刪除容器:docker rm c1(容器名稱/容器id)
查看所有容器id:docker ps -aq(q:表示可以查看所有容器id)
刪除所有容器:docker rm docker ps -aq(不能刪除正在運行的容器)
查看容器信息:docker inspect c2(容器名稱)
docker容器的數(shù)據(jù)卷
目錄映射
數(shù)據(jù)卷概念:數(shù)據(jù)卷是宿主機中的一個目錄或文件
? ? ? ? ? ? ? ? ? ? ? 當(dāng)容器目錄和數(shù)據(jù)卷目錄綁定后,對方的修改回立即同步
? ? ? ? ? ? ? ? ? ? ? 一個數(shù)據(jù)卷可以被多個容器同時掛載
? ? ? ? ? ? ? ? ? ? ? 一個容器也可以被掛載多個數(shù)據(jù)卷
容器和數(shù)據(jù)卷通過掛載進行同步目錄(目錄名稱可以不一樣,就可以理解為備份)
數(shù)據(jù)卷作用:容器數(shù)據(jù)持久化
? ? ? ? ? ? ? ? ? ? ? 外部機器和容器間接通信
? ? ? ? ? ? ? ? ? ? ? 容器之間數(shù)據(jù)交換
? 配置數(shù)據(jù)卷
創(chuàng)建啟動容器時設(shè)置數(shù)據(jù)卷:docker run -it —name=c1 -v ~/data:/root/datatime condos:7 /bin/basn
(宿主機目錄可以用~代表/root,但是容器目錄不可以;/bin/bsh可以不寫;沒有改目錄會自動創(chuàng)建)
?數(shù)據(jù)卷容器
多容器進行數(shù)據(jù)交換
1.多個容器掛載同一個數(shù)據(jù)卷
2.數(shù)據(jù)卷容器
?docker應(yīng)用部署
mysql部署
1.搜索mysql鏡像
2.拉取mysql鏡像
3.創(chuàng)建容器
4.操作容器中的mysql
容器內(nèi)的網(wǎng)絡(luò)服務(wù)和外部機器不能直接通信
外部機器和宿主機可以之間通信
宿主機和容器可以之間通信
容器和外部機器通信方式:端口映射
Tomcat部署
?Nginx部署
?
Dockerfile-鏡像原理
鏡像制作
1.容器轉(zhuǎn)為鏡像
docker commit 容器id 鏡像名稱:版本號
壓縮文件:docker save -o 壓縮文件名稱 鏡像名稱:版本號
解壓文件:docker load -i 壓縮文件名稱
2.dockerfile?
概念:Dockerfile是一個文本文件;包含了一條條的指令;
每一條指令構(gòu)建一層,基于基礎(chǔ)鏡像,最終構(gòu)建出一個新的鏡像;
對于開發(fā)人員:可以為開發(fā)團隊提供一個完全一致的開發(fā)環(huán)境;
對于測試人員:可以直接拿開發(fā)時所構(gòu)建的鏡像或者通過dockerfile文件構(gòu)建一個新的鏡像開始工作了;
對應(yīng)運維人員:在部署時,可以實現(xiàn)應(yīng)用部署
?
dockerfile關(guān)鍵字
Dockerfile關(guān)鍵字大全_野玩家的博客-CSDN博客
FROM:指定父鏡像:指定dockerfile基于那個image構(gòu)建
MAINTAINER:作者信息:用來標明這個dockerfile誰寫的
LABEL:標簽:用來標明dockerfile的標簽,可以使用Label代替Maintainer最終都是在docker image基本信息中可以查看
RUN:執(zhí)行命令:執(zhí)行一段命令,默認是/bin/sh 格式:RUN command 或者RUN [“command”,”param1”,”param2”]
CMD:容器啟動命令:提供啟動容器時候的默認命令和ENTRYPOINT配合使用格式CMD command param1 param2 或者 [“command”,”param1”,”param2”]
ENTRYPOINT:入口:一般在制作一些執(zhí)行就關(guān)閉的容器中會使用
COPY:復(fù)制文件:build的時候復(fù)制文件到image中
ADD:添加文件:build的時候添加文件到image中,不僅僅局限于當(dāng)前build上下文可以來源于遠程服務(wù)
ENV:環(huán)境變量:指定build時候的環(huán)境變量,可以在啟動的容器的時候通過-e覆蓋格式ENVname=value
ARG:構(gòu)建參數(shù):構(gòu)建參數(shù)只在構(gòu)建的時候使用的參數(shù)如果ENV那么ENV的相同名字的值始終覆蓋的arg參數(shù)
服務(wù)編排dockerCompose
微服務(wù)架構(gòu)的應(yīng)用系統(tǒng)中一般包含若干個微服務(wù),每個微服務(wù)一般都會部署多個實例,如果每個微服務(wù)都要手動啟停,維護的工作量會很大
概念:是一個編排多容器分布式部署的工具,提供命令集管理容器化應(yīng)用的完整開發(fā)周期,包括服務(wù)工具,啟動和停止。使用步驟:
1.利用dockerile定義運行環(huán)境鏡像
2.使用docker-compose.yml定義組成應(yīng)用的各服務(wù)
3.運行docker-cpmpose up啟動應(yīng)用
docker私有倉庫
私有倉庫構(gòu)建
1.拉取私有倉庫鏡像
docker pull registry
2.啟動私有倉庫容器
docker run -id —name=registry -p 5000:5000 registry
3.打開瀏覽器 輸入地址http://私有倉庫服務(wù)器ip:5000/v2/_catalog,看到{“repositories”:[]}表示私有倉庫搭建成功
4.修改daemon.json
vim? /etc/docker/daemon.json
(在上述文件中添加一個key,保存退出。此步用于讓docker信任私有倉庫地址;注意將私有倉庫服務(wù)ip修改為自己私有倉庫服務(wù)器真實ip)
{“insecure-registries”:[“私有倉庫服務(wù)器ip:5000”]}
5.重啟docker服務(wù)
systemctl restart docker
docker start registry
Docker容器虛擬化與傳統(tǒng)的虛擬機區(qū)別
相同:容器和虛擬機具有相似的資源隔離和分配優(yōu)勢
不同:容器虛擬化是操作系統(tǒng),虛擬機虛擬化的是硬件
?? ? ? ? ? 傳統(tǒng)虛擬機可以運行不同的操作系統(tǒng),容器只能運行同一類型操作系統(tǒng)
容器啟動是秒級,虛擬機啟動是分鐘級;
容器硬盤使用一般為MB,虛擬機硬盤使用一般為GB;
容器性能接近原生,虛擬機性能弱于原生;
容器系統(tǒng)支持量單機支持上千個容器,虛擬機系統(tǒng)支持量一般幾十個
柚子快報邀請碼778899分享:容器 運維 Docker
參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。