容器化-Docker实战

代码跃动师
• 阅读 1883

导读:本文系统性介绍Docker安装、Docker组件、Docker命令、Dockerfile语法和Docker应用,通过上述介绍使我们已经对docker基本操作有一定了解。
一、前言
  本文将系统性的介绍Docker相关的知识;包含Docker命令,Dockerfile语法,如何用Docker进行构建运行。
二、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以上?

容器化-Docker实战

2.安装镜像仓库
  1)清理旧版本
  rpm -qa |grep docker
  yum -y remove docker*
  2)安装镜像仓库
  yum install docker-distribution
  修改配置文件
  vim/etc/docker-distribution/registry/config.yml

容器化-Docker实战

  重启镜像仓库
  systemctl daemon-reload
  service docker-distribution restart
  service docker-distribution status
  访问镜像仓库服务:http://x.x.x.x:5000
  3)安装Docker

容器化-Docker实战

  

  4)配置Docker存储

容器化-Docker实战

  5)启动docker
  systemctl start docker
  查看docker信息
  docker info
三、Docker组件
  Docker基础组件

容器化-Docker实战

dockerd: Dockerdaemon进程,访问总入口
docker: Docker 客户端
docker-containerd:一个控制runC的守护进程,containerd利用runC的高级功能(如seccomp和用户名称空间支持)以及用于容器克隆和实时迁移的检查点和恢复
docker-containerd-ctr:docker-containerd客户端,基于gPRC APIs通信
docker-containerd-shim:一个位于运行时实现前面的小垫片,它允许它重新分配来初始化并处理来自调用者的重新附加。
docker-runc:根据OCI规范产生和运行容器的CLI工具。
四、Docker命令
  1.创建一个容器:docker run

容器化-Docker实战

  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
五、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 也会使用指定用户
六、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” \

容器化-Docker实战

 

  # 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 .
容器化-Docker实战
  3.运行镜像
  宿主机上的/var/log目录映射容器中进行日志采集
容器化-Docker实战
  4.查看容器
容器化-Docker实战
  5.进入容器
容器化-Docker实战
  6.停止容器
容器化-Docker实战
  7.查看容器
容器化-Docker实战
  8.容器日志
容器化-Docker实战
  9.运行状态
容器化-Docker实战
  本次docker介绍到这里,还有很多知识没有涉及到,比如说docker网络、docker镜像导入导出等,整个docker知识还是比较广泛的,需要详细去了解和实践; 通过上述介绍我们已经对docker基本操作有了一定了解,下一篇我们将介绍基于docker技术的容器平台。  

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Docker安装JIRA和Confluence(破解版)
一、准备工作1、docker环境部署2、破解插件:https://gitee.com/pengzhile/atlassianagent(https://gitee.com/pengzhile/atlassianagent)二、安装jira2.1制作Docker破解容器编写Dockerfile文件:FROMcptac
Stella981 Stella981
3年前
Minikube之Win10单机部署
Kubernetes(k8s)是自动化容器操作的开源平台,基于这个平台,你可以进行容器部署,资源调度和集群扩容等操作。如果你曾经用过Docker部署容器,那么可以将Docker看成Kubernetes底层使用的组件,Kubernetes是Docker的上层封装,通过它可以很方便的进行Docker集群的管理。今天我们使用minikube在单机上进行Kubern
Stella981 Stella981
3年前
Docker容器使用jenkins部署web项目
(1)需要安装Docker容器,在Docker容器内安装jenkins,gogs,tomcat。  新建maven项目,添加findbugsplugin。使用docker启动jenkins,gogs,Tomcat的命令gogs:dockerrunitdp10022:22p10080:3000restarta
Stella981 Stella981
3年前
Spring Boot demo系列(五):Docker部署
2021.2.24更新1概述本文讲述了如何使用Docker部署SpringBoot应用,首先介绍了Docker的安装过程,接着介绍了Docker的一些基础知识,最后讲述了Dockerfile的编写以及部署过程。2环境服务器:aarch64CentOS8
Stella981 Stella981
3年前
Docker实践
前言本文并非一篇Docker的入门文章,而是面向对Docker有一定了解的开发人员,文章不会介绍如何安装Docker,以及什么是Docker镜像,什么是Docker容器这些概念,如果需要了解请前往Docker官方文档(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fdoc
Stella981 Stella981
3年前
Docker容器化【Docker镜像与容器相关命令】
\Docker学习目标:掌握Docker基础知识,能够理解Docker镜像与容器的概念完成Docker安装与启动掌握Docker镜像与容器相关命令掌握TomcatNginx等软件的常用应用的安装掌握docker迁移与备份相关命令能够运用Dockerfile编写创建容器的脚本能
Stella981 Stella981
3年前
Docker:dockerfile构建php项目 [八]
一、把项目封装成docker镜像的步骤把项目封装成docker镜像的步骤:1、先运行一个基础容器,手动制作docker镜像2、编写dockerfile,构建镜像3、测试运行二、dockerfile常用指令参考1、dockerfile常用指令:
Stella981 Stella981
3年前
Docker Swarm资源管理
DockerSwarmDockerSwarm是Docker官方项目之一,是使用SwarmKit构建的Docker引擎内置的集群管理和编排工具,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案。使用它,用户可以将多个Docker主机封装为单个大型虚拟Docker主机,快速打造一套容器云平台。节点运
Stella981 Stella981
3年前
Docker 容器健康检查
!DOCKERHEALTHCHECK(https://imgblog.csdnimg.cn/20210120134741738.jpg)Docker容器健康检查指的是在Dockerfile中使用HEALTHCHECK指令对容器的运行状态进行检查,并在dockerps的STATUS栏显示healthy/unhealt
Stella981 Stella981
3年前
Docker 最常用的镜像命令和容器命令
  本文列出了Docker使用过程中最常用的镜像命令和容器命令,以及教大家如何操作容器数据卷,实现容器数据的备份。熟练练习这些命令以后,再来一些简单的应用部署练习,大家就可以学习Docker的镜像构建、备份恢复迁移、镜像仓库、网络、集群等等更多的内容。镜像相关命令  官方文档:https://docs.docker.com/r
3A网络 3A网络
2年前
docker中启动所有的容器命令
docker中启动所有的容器命令前提:在3A服务器上部署docker环境docker中启动所有的容器命令javascriptdockerstart$(dockerpsa|awk'print$1'|tailn2)docker中关闭所有的容器命令javascriptdockerstop$(dockerpsa|a
代码跃动师
代码跃动师
Lv1
春色边城动,客思故乡来。
文章
3
粉丝
0
获赞
0