柚子快報(bào)激活碼778899分享:運(yùn)維 docker容器技術(shù)
柚子快報(bào)激活碼778899分享:運(yùn)維 docker容器技術(shù)
什么是docker
Docker 使用 Google 公司推出的 Go 語(yǔ)言 進(jìn)行開(kāi)發(fā)實(shí)現(xiàn),基于 Linux 內(nèi)核的 cgroup,namespace,以及 OverlayFS 類(lèi)的 Union FS 等技術(shù),對(duì)進(jìn)程進(jìn)行封裝隔離,屬于 操作系統(tǒng)層面的虛擬化技術(shù)。由于隔離的進(jìn)程獨(dú)立于宿主和其它的隔離的進(jìn)程,因此也稱(chēng)其為容器。最初實(shí)現(xiàn)是基于 LXC,從 0.7 版本以后開(kāi)始去除 LXC,轉(zhuǎn)而使用自行開(kāi)發(fā)的 libcontainer,從 1.11 版本開(kāi)始,則進(jìn)一步演進(jìn)為使用 runC 和 containerd。
簡(jiǎn)單來(lái)說(shuō)就是,用golang語(yǔ)言開(kāi)發(fā)的一項(xiàng)基于linux的lxc技術(shù)的容器管理軟件
docker結(jié)構(gòu)
Docker本身架構(gòu)
發(fā)展歷史
物理機(jī)->虛擬機(jī)->虛擬機(jī)容器技術(shù)(LXC,linux container)->docker為代表的容器管理技術(shù)。
linux本身是支持lxc的,用于資源隔離(基于namespace + cgroup)
相比虛擬機(jī),容器更加輕量級(jí)
容器
linux本身是支持lxc的,用于資源隔離(基于namespace + cgroup) 容器和其他傳統(tǒng)的環(huán)境相比
容器的作用
運(yùn)行鏡像,可以直接多外提供服務(wù)
隔離進(jìn)程,隔離資源限制資源直接和硬件對(duì)接,無(wú)虛擬機(jī)格外的消耗
相關(guān)概念
1. 鏡像
打包了代碼和運(yùn)行環(huán)境的包,是靜態(tài)文件,不能直接對(duì)外提供服務(wù)
2. 容器
3. 倉(cāng)庫(kù)
公有倉(cāng)-docker registry私有倉(cāng)(企業(yè))-harbor
docker使用
1. 創(chuàng)建一個(gè)容器運(yùn)行一個(gè)鏡像
docker run xxx[nginx,mysql] [-d]
它表示如下
下載鏡像,如果不存在的話初始化容器,分配隔離資源,如訪問(wèn)ip等
2. 如何進(jìn)入docker下的某個(gè)容器
docker exec [-ti] docker-case sh
3. 如何刪除容器
docker rm -f [container name] 或者 docker rm [conatiner id]
4. 宿主機(jī)如何訪問(wèn)容器
docker run --name xxxx -d -p [宿主機(jī)port]:[容器port] image-name
比如:
docker run --name my-ubuntu-nginx -d -p 8080:80 asx-nginx:ubunt
讓后執(zhí)行curl localhost:容器端口就好了,可以通過(guò)公網(wǎng)訪問(wèn)了
5. 拉鏡像
docker pull image@tag 比如 docker pull ubuntu@latest
5. 構(gòu)建對(duì)象
docker build [.](當(dāng)前路徑)[-t] image-name:tage [-f] dockerfile-name
dockerfile-name是一些列docker可識(shí)別的腳本文件,比如
docker build . -t asx-nginx:ubunt -f Dockerfile
鏡像的相關(guān)操作
鏡像的操作和流程圖如下
相關(guān)命令
1. 刪除鏡像
docker rmi [image-name]
1. 刪除鏡像
docker rmi [image-name]
2. 導(dǎo)出鏡像到文件
docker save -o file-name.file_type image@tag
比如 docker save -o nginx.tar nginx:latest
3. 從文件中導(dǎo)入鏡像
docker load -i file-name.file_type
比如docker load -i nginx-ubuntu.tar
倉(cāng)庫(kù)的相關(guān)操作
倉(cāng)庫(kù)分為本地倉(cāng)庫(kù)和公共倉(cāng)庫(kù),通常是使用公共倉(cāng)庫(kù),除非建立自己的倉(cāng)庫(kù)
1. 建立私有倉(cāng)
docker run -d -p 5000:5000 --restart always --name registry registry:2
2. 推送image
tag image 的倉(cāng)庫(kù)地址為本地倉(cāng)
docker tag ubuntu localhost:5000/ubuntu
push tag后的image
docker push localhost:5000/ubuntu
3. 下載image
docker pull localhost:5000/ubuntu
4. 容器數(shù)據(jù)持久化
掛機(jī)主機(jī)目錄
docker run --name xxx -d -v /var/log:/var/log nginx:alpine
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d -v /opt/mysql/:/var/lib/mysql mysql:5.7
使用valomue卷
docker volume ls
docker volume create vol-name
docker run --name xxx -d -v vol-name:/var/log:vol-name/var/log nginx:alpine
訪問(wèn)case: curl -x http://[localhost|public-ip]:port/v2/ubuntu/tags/list 訪問(wèn)
5. 查看私有倉(cāng)的images
容器和宿主機(jī)的交互
文件容器->宿主機(jī)
docker cp[operate] file container-name/path
case
docker cp /tmp/test.txt nginx:/tmp
2.容器->宿主機(jī)
docker cp container-name/filepath server/path
case
docker cp nginx:/tmp/file.txt ./tmp
柚子快報(bào)激活碼778899分享:運(yùn)維 docker容器技術(shù)
精彩鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。