摘要:導(dǎo)讀本文系統(tǒng)性介紹安裝組件命令語(yǔ)法和應(yīng)用,通過(guò)上述介紹使我們已經(jīng)對(duì)基本操作有一定了解。二安裝本文以及以上版本為例來(lái)說(shuō)明安裝底層對(duì)應(yīng)的是鏡像,不可寫(xiě)的文件系統(tǒng),它的存儲(chǔ)方式比較多。根據(jù)規(guī)范產(chǎn)生和運(yùn)行容器的工具。
導(dǎo)讀:本文系統(tǒng)性介紹Docker安裝、Docker組件、Docker命令、Dockerfile語(yǔ)法和Docker應(yīng)用,通過(guò)上述介紹使我們已經(jīng)對(duì)docker基本操作有一定了解。
一、前言
本文將系統(tǒng)性的介紹Docker相關(guān)的知識(shí);包含Docker命令,Dockerfile語(yǔ)法,如何用Docker進(jìn)行構(gòu)建運(yùn)行。
二、Docker安裝
本文以centos7及以上版本為例來(lái)說(shuō)明Docker安裝;Docker底層對(duì)應(yīng)的是鏡像,不可寫(xiě)的文件系統(tǒng),它的存儲(chǔ)方式比較多。
AUFS:(AnotherUnionFS)是一種Union FS,是文件級(jí)的存儲(chǔ)驅(qū)動(dòng)
Overlay:是一種Union FS,和AUFS的多層不同的是Overlay只有兩層:一個(gè)upper文件系統(tǒng)和一個(gè)lower文件系統(tǒng),分別代表Docker的鏡像層和容器層
Device mapper:是Linux內(nèi)核2.6.9后支持的,提供的一種從邏輯設(shè)備到物理設(shè)備的映射框架機(jī)制,在該機(jī)制下,用戶可以很方便的根據(jù)自己的需要制定實(shí)現(xiàn)存儲(chǔ)資源的管理策略
Btrfs:被稱為下一代寫(xiě)時(shí)復(fù)制文件系統(tǒng),并入Linux內(nèi)核,也是文件級(jí)級(jí)存儲(chǔ),但可以像Device mapper一直接操作底層設(shè)備
ZFS:文件系統(tǒng)是一個(gè)革命性的全新的文件系統(tǒng),它從根本上改變了文件系統(tǒng)的管理方式,ZFS 完全拋棄了“卷管理”,不再創(chuàng)建虛擬的卷,而是把所有設(shè)備集中到一個(gè)存儲(chǔ)池中來(lái)進(jìn)行管理,用“存儲(chǔ)池”的概念來(lái)管理物理存儲(chǔ)空間
Overlay2:要取代之前overlay的主要原因是它能“支持多個(gè)下層目錄”,能解決原先驅(qū)動(dòng)中inode耗盡的問(wèn)題
本文將以O(shè)verlay2進(jìn)行示例:
1.升級(jí)內(nèi)核CentOS7.0以上?
2.安裝鏡像倉(cāng)庫(kù)
1)清理舊版本
rpm -qa |grep docker
yum -y remove docker*
2)安裝鏡像倉(cāng)庫(kù)
yum install docker-distribution
修改配置文件
vim/etc/docker-distribution/registry/config.yml
重啟鏡像倉(cāng)庫(kù)
systemctl daemon-reload
service docker-distribution restart
service docker-distribution status
訪問(wèn)鏡像倉(cāng)庫(kù)服務(wù):http://x.x.x.x:5000
3)安裝Docker
4)配置Docker存儲(chǔ)
5)啟動(dòng)docker
systemctl start docker
查看docker信息
docker info
三、Docker組件
Docker基礎(chǔ)組件
dockerd: Dockerdaemon進(jìn)程,訪問(wèn)總?cè)肟?br>docker: Docker 客戶端
docker-containerd:一個(gè)控制runC的守護(hù)進(jìn)程,containerd利用runC的高級(jí)功能(如seccomp和用戶名稱空間支持)以及用于容器克隆和實(shí)時(shí)遷移的檢查點(diǎn)和恢復(fù)
docker-containerd-ctr:docker-containerd客戶端,基于gPRC APIs通信
docker-containerd-shim:一個(gè)位于運(yùn)行時(shí)實(shí)現(xiàn)前面的小墊片,它允許它重新分配來(lái)初始化并處理來(lái)自調(diào)用者的重新附加。
docker-runc:根據(jù)OCI規(guī)范產(chǎn)生和運(yùn)行容器的CLI工具。
四、Docker命令
1.創(chuàng)建一個(gè)容器:docker run
2.查看容器列表:docker ps
3.查看所有容器:docker ps -a
4.啟動(dòng)、停止、重啟容器: docker start|stop|restart 容器ID|容器名
5.查看容器日志:docker logs –f容器ID|容器名
6.刪除某個(gè)容器:docker rm –f容器ID|容器名
7.刪除所有容器:docker rm $(docker ps -a -q)
8.查看容器運(yùn)行狀態(tài):docker stats容器ID|容器名
9.進(jìn)入另一個(gè)容器:docker exec–ti 容器ID|容器名
10.進(jìn)入容器觀察運(yùn)行情況: docker attach容器ID|容器名
11.查看容器詳細(xì)信息 docker inspect容器ID|容器名
12.查看當(dāng)前機(jī)器上鏡像 docker images
13.拉取鏡像 docker pull 鏡像名
14.將鏡像推送鏡像倉(cāng)庫(kù) docker push 鏡像名
15.構(gòu)建鏡像 docker build
16.將鏡像倒出成文件 docker save鏡像 > xxx.tar.gz
17.將文件加載成鏡像 docker load < xxx.tar.gz
18.從容器內(nèi)復(fù)制文件到指定的路徑上 docker cp container:path hostpath
19.登錄到Docker registry服務(wù)器 docker login
20.殺掉容器 docker kill 容器ID|容器名
21.移除鏡像 docker rmi
五、Dockerfile介紹
Dockerfile是由一些列命令和參數(shù)構(gòu)成的腳本,這些命令應(yīng)用于基礎(chǔ)鏡像并最終創(chuàng)建一個(gè)新的鏡像
常見(jiàn)命令
1.FROM ——基礎(chǔ)鏡像來(lái)源
2.MAINTAINER——維護(hù)者是誰(shuí)
3.RUN——當(dāng)前基礎(chǔ)鏡像執(zhí)行,并且提交新鏡像
4.ADD——復(fù)制內(nèi)容到容器中;普通文件,壓縮文件,url
5.COPY——本地內(nèi)容復(fù)制到容器中,只能是普通文件及文件夾
6.EXPOSE——告訴Docker服務(wù)端容器暴露的端口號(hào),類似docker -p
7.CMD——容器執(zhí)行命令,每個(gè)容器只能執(zhí)行最后一條命令
8.ENTRYPOINT——容器啟動(dòng)后執(zhí)行的命令,并且不可被 docker run 提供的參數(shù)覆蓋
9.ENV——環(huán)境變量
10.VOLUME——容器需要的掛載卷
11.WORKDIR——后續(xù)的 RUN 、 CMD 、 ENTRYPOINT 指令配置工作目錄
12.ONBUILD——配置當(dāng)所創(chuàng)建的鏡像作為其它新創(chuàng)建鏡像的基礎(chǔ)鏡像時(shí),所執(zhí)行的操作指令
13.USER——指定運(yùn)行容器時(shí)的用戶名或UID,后續(xù)的 RUN 也會(huì)使用指定用戶
六、Docker應(yīng)用
本示例將以平臺(tái)kubernetes集群日志采集fluentd容器來(lái)說(shuō)明docker是如何使用的
1.編寫(xiě)fluentd Dockerfile
FROM debian:stretch-slim
MAINTAINER zhangbins@yonyou.com
?。?copy local file to container
COPY clean-apt /usr/bin
COPY clean-install /usr/bin
COPY Gemfile /Gemfile
#proxy setting, Over the wall
ENV http_proxy=http://10.3.15.206:8888
ENV https_proxy=http://10.3.15.206:8888
# 1. Install & configure dependencies.
# 2. Install fluentd via ruby.
# 3. Remove build dependencies.
# 4. Cleanup leftover caches & files.
RUN BUILD_DEPS=“make patch gcc g++ libc6-dev ruby-dev”
# Expose prometheus metrics.
EXPOSE 80
ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1
# Start Fluentd to pick up our config that watches Docker container logs.
CMD /run.sh $FLUENTD_ARGS
2.構(gòu)建鏡像
docker build –t10.3.15.191:5000/tools/fluentd-http:0.3 .
3.運(yùn)行鏡像
宿主機(jī)上的/var/log目錄映射容器中進(jìn)行日志采集
4.查看容器
5.進(jìn)入容器
6.停止容器
7.查看容器
8.容器日志
9.運(yùn)行狀態(tài)
本次docker介紹到這里,還有很多知識(shí)沒(méi)有涉及到,比如說(shuō)docker網(wǎng)絡(luò)、docker鏡像導(dǎo)入導(dǎo)出等,整個(gè)docker知識(shí)還是比較廣泛的,需要詳細(xì)去了解和實(shí)踐; 通過(guò)上述介紹我們已經(jīng)對(duì)docker基本操作有了一定了解,下一篇我們將介紹基于docker技術(shù)的容器平臺(tái)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/27589.html
摘要:本文是數(shù)人云工程師方志浩在微信群分享的實(shí)錄,與大家聊一聊應(yīng)用容器在配置管理中遇到的問(wèn)題以及解決方法。數(shù)人云分測(cè)試演示生產(chǎn)三種環(huán)境進(jìn)行持續(xù)集成發(fā)布,同時(shí)數(shù)人云組件通過(guò)進(jìn)行應(yīng)用容器的封裝下發(fā)和管理。 本文是數(shù)人云工程師方志浩在DockOne微信群分享的實(shí)錄,與大家聊一聊應(yīng)用容器在配置管理中遇到的問(wèn)題以及解決方法。 隨著Docker技術(shù)的火熱發(fā)展, Docker在代碼構(gòu)建發(fā)布中扮演著越來(lái)越重...
摘要:不過(guò)目前主流的做法包括半自動(dòng)部署方案都是讓主節(jié)點(diǎn)通過(guò)在容器中運(yùn)行等東西。 轉(zhuǎn)載自筆者的博客 kubernetes 容器平臺(tái)分析 Docker 容器算是目前最火的云計(jì)算產(chǎn)品了,因?yàn)樗鉀Q了很多運(yùn)維和開(kāi)發(fā)上的痛點(diǎn)問(wèn)題,比如抹平了開(kāi)發(fā)和生產(chǎn)的環(huán)境區(qū)別,甚至可以做到在生產(chǎn)環(huán)境使用 RHEL,而開(kāi)發(fā)使用 Ubuntu,也能平滑部署,但是想要真正的將其投放到生產(chǎn)環(huán)境中,實(shí)際上還有很多問(wèn)題亟待解決。...
摘要:不過(guò)目前主流的做法包括半自動(dòng)部署方案都是讓主節(jié)點(diǎn)通過(guò)在容器中運(yùn)行等東西。 轉(zhuǎn)載自筆者的博客 kubernetes 容器平臺(tái)分析 Docker 容器算是目前最火的云計(jì)算產(chǎn)品了,因?yàn)樗鉀Q了很多運(yùn)維和開(kāi)發(fā)上的痛點(diǎn)問(wèn)題,比如抹平了開(kāi)發(fā)和生產(chǎn)的環(huán)境區(qū)別,甚至可以做到在生產(chǎn)環(huán)境使用 RHEL,而開(kāi)發(fā)使用 Ubuntu,也能平滑部署,但是想要真正的將其投放到生產(chǎn)環(huán)境中,實(shí)際上還有很多問(wèn)題亟待解決。...
摘要:聯(lián)調(diào)測(cè)試,無(wú)需依賴他人。針對(duì)以上問(wèn)題,有兩種解決方法,一個(gè)是自己搭建私有服務(wù),另一個(gè)是用云服務(wù)的鏡像管理平臺(tái)如阿里云的容器鏡像服務(wù)。利用,先對(duì)阿里云的服務(wù)進(jìn)行登錄。推送后,就能在阿里云的倉(cāng)庫(kù)上看到這個(gè)鏡像。 Docker簡(jiǎn)述 Docker是一種OS虛擬化技術(shù),是一個(gè)開(kāi)源的應(yīng)用容器引擎。它可以讓開(kāi)發(fā)者將應(yīng)用打包到一個(gè)可移植的容器中,并且該容器可以運(yùn)行在幾乎所有l(wèi)inux系統(tǒng)中(Windo...
閱讀 2429·2021-11-24 10:31
閱讀 3487·2021-11-23 09:51
閱讀 2327·2021-11-15 18:11
閱讀 2450·2021-09-02 15:15
閱讀 2514·2019-08-29 17:02
閱讀 2346·2019-08-29 15:04
閱讀 908·2019-08-29 12:27
閱讀 2921·2019-08-28 18:15