容器化-Docker實戰

導讀:本文系統性介紹Docker安裝、Docker組件、Docker命令、Dockerfile語法和Docker應用,經過上述介紹使咱們已經對docker基本操做有必定了解。
1、前言
  本文將系統性的介紹Docker相關的知識;包含Docker命令,Dockerfile語法,如何用Docker進行構建運行。
2、Docker安裝
  本文以centos7及以上版本爲例來講明Docker安裝;Docker底層對應的是鏡像,不可寫的文件系統,它的存儲方式比較多。
AUFS:(AnotherUnionFS)是一種Union FS,是文件級的存儲驅動
Overlay:是一種Union FS,和AUFS的多層不一樣的是Overlay只有兩層:一個upper文件系統和一個lower文件系統,分別表明Docker的鏡像層和容器層
Device mapper:是Linux內核2.6.9後支持的,提供的一種從邏輯設備到物理設備的映射框架機制,在該機制下,用戶能夠很方便的根據本身的須要制定實現存儲資源的管理策略
Btrfs:被稱爲下一代寫時複製文件系統,併入Linux內核,也是文件級級存儲,但能夠像Device mapper一直接操做底層設備
  ZFS:文件系統是一個革命性的全新的文件系統,它從根本上改變了文件系統的管理方式,ZFS 徹底拋棄了「卷管理」,再也不建立虛擬的卷,而是把全部設備集中到一個存儲池中來進行管理,用「存儲池」的概念來管理物理存儲空間
  Overlay2:要取代以前overlay的主要緣由是它能「支持多個下層目錄」,能解決原先驅動中inode耗盡的問題
本文將以Overlay2進行示例:
1.升級內核CentOS7.0以上?node

clipboard.png

2.安裝鏡像倉庫
  1)清理舊版本
  rpm -qa |grep docker
  yum -y remove docker*
  2)安裝鏡像倉庫
  yum install docker-distribution
  修改配置文件
  vim/etc/docker-distribution/registry/config.ymllinux

clipboard.png

  重啓鏡像倉庫
  systemctl daemon-reload
  service docker-distribution restart
  service docker-distribution status
  訪問鏡像倉庫服務:http://x.x.x.x:5000
  3)安裝Dockerdocker

clipboard.png

  

  4)配置Docker存儲vim

clipboard.png

  5)啓動docker
  systemctl start docker
  查看docker信息
  docker info
3、Docker組件
  Docker基礎組件centos

clipboard.png

dockerd: Dockerdaemon進程,訪問總入口
docker: Docker 客戶端
docker-containerd:一個控制runC的守護進程,containerd利用runC的高級功能(如seccomp和用戶名稱空間支持)以及用於容器克隆和實時遷移的檢查點和恢復
docker-containerd-ctr:docker-containerd客戶端,基於gPRC APIs通訊
docker-containerd-shim:一個位於運行時實現前面的小墊片,它容許它從新分配來初始化並處理來自調用者的從新附加。
docker-runc:根據OCI規範產生和運行容器的CLI工具。
4、Docker命令
  1.建立一個容器:docker runruby

clipboard.png

  2.查看容器列表:docker ps
  3.查看全部容器:docker ps -a服務器

4.啓動、中止、重啓容器: docker start|stop|restart  容器ID|容器名

  5.查看容器日誌:docker logs –f容器ID|容器名
  6.刪除某個容器:docker rm –f容器ID|容器名
  7.刪除全部容器:docker rm $(docker ps -a -q)
  8.查看容器運行狀態:docker stats容器ID|容器名
  9.進入另外一個容器:docker exec–ti 容器ID|容器名
  10.進入容器觀察運行狀況: docker attach容器ID|容器名
  11.查看容器詳細信息 docker inspect容器ID|容器名
  12.查看當前機器上鏡像 docker images
  13.拉取鏡像 docker pull 鏡像名
  14.將鏡像推送鏡像倉庫 docker push 鏡像名
  15.構建鏡像 docker build
  16.將鏡像倒出成文件 docker save鏡像 > xxx.tar.gz
  17.將文件加載成鏡像 docker load < xxx.tar.gz
  18.從容器內複製文件到指定的路徑上 docker cp container:path hostpath
  19.登陸到Docker registry服務器 docker login
  20.殺掉容器 docker kill 容器ID|容器名
  21.移除鏡像 docker rmi
5、Dockerfile介紹
  Dockerfile是由一些列命令和參數構成的腳本,這些命令應用於基礎鏡像並最終建立一個新的鏡像
  常見命令
  1.FROM ——基礎鏡像來源
  2.MAINTAINER——維護者是誰
  3.RUN——當前基礎鏡像執行,而且提交新鏡像
  4.ADD——複製內容到容器中;普通文件,壓縮文件,url
  5.COPY——本地內容複製到容器中,只能是普通文件及文件夾
  6.EXPOSE——告訴Docker服務端容器暴露的端口號,相似docker -p
  7.CMD——容器執行命令,每一個容器只能執行最後一條命令
  8.ENTRYPOINT——容器啓動後執行的命令,而且不可被 docker run 提供的參數覆蓋
  9.ENV——環境變量
  10.VOLUME——容器須要的掛載卷
  11.WORKDIR——後續的 RUN 、 CMD 、 ENTRYPOINT 指令配置工做目錄
  12.ONBUILD——配置當所建立的鏡像做爲其它新建立鏡像的基礎鏡像時,所執行的操做指令
  13.USER——指定運行容器時的用戶名或UID,後續的 RUN 也會使用指定用戶
6、Docker應用
  本示例將以平臺kubernetes集羣日誌採集fluentd容器來講明docker是如何使用的
  1.編寫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」 \網絡

clipboard.png

 

  # 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.構建鏡像
  docker build –t10.3.15.191:5000/tools/fluentd-http:0.3 .
clipboard.png
  3.運行鏡像
  宿主機上的/var/log目錄映射容器中進行日誌採集
clipboard.png
  4.查看容器
clipboard.png
  5.進入容器
clipboard.png
  6.中止容器
clipboard.png
  7.查看容器
clipboard.png
  8.容器日誌
clipboard.png
  9.運行狀態
clipboard.png
  本次docker介紹到這裏,還有不少知識沒有涉及到,好比說docker網絡、docker鏡像導入導出等,整個docker知識仍是比較普遍的,須要詳細去了解和實踐; 經過上述介紹咱們已經對docker基本操做有了必定了解,下一篇咱們將介紹基於docker技術的容器平臺。  app

相關文章
相關標籤/搜索