关键词:
一、前言
本文将系统性的介绍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以上?
2.安装镜像仓库
1)清理旧版本
rpm -qa |grep docker
yum -y remove docker
2)安装镜像仓库
yum install docker-distribution
修改配置文件
vim/etc/docker-distribution/registry/config.yml
重启镜像仓库
systemctl daemon-reload
service docker-distribution restart
service docker-distribution status
访问镜像仓库服务:http://x.x.x.x:5000
3)安装Docker
4)配置Docker存储
5)启动docker
systemctl start docker
查看docker信息
docker info
三、Docker组件
Docker基础组件
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
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 [email protected]
# 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 8
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 .
3.运行镜像
宿主机上的/var/log目录映射容器中进行日志采集
4.查看容器
5.进入容器
6.停止容器
7.查看容器
8.容器日志
9.运行状态
本次docker介绍到这里,还有很多知识没有涉及到,比如说docker网络、docker镜像导入导出等,整个docker知识还是比较广泛的,需要详细去了解和实践; 通过上述介绍我们已经对docker基本操作有了一定了解,下一篇我们将介绍基于docker技术的容器平台。
21.docker技术入门与实战---libnetwork插件化网络功能
第21章 libnetwork插件化网络功能21.1 容器网络模型 libnetwork中容器网络模型(CNM)十分简洁和抽象,可以让其上层使用网络功能的容器最大程度的忽略底层具体实现。 容器网络模型包括三种基本要素: 1.沙盒 2.接入点 3.网络21.2... 查看详情
21.docker技术入门与实战---libnetwork插件化网络功能
第21章 libnetwork插件化网络功能21.1 容器网络模型 libnetwork中容器网络模型(CNM)十分简洁和抽象,可以让其上层使用网络功能的容器最大程度的忽略底层具体实现。 容器网络模型包括三种基本要素: 1.沙盒 2.接入点 3.网络21.2... 查看详情
16.docker技术入门与实战---容器实战思考
第16章 容器实战思考16.1 Docker为什么会成功16.2 研发人员该如何看待容器16.3 容器化开发模式16.4 容器与生产环境 查看详情
16.docker技术入门与实战---容器实战思考
第16章 容器实战思考16.1 Docker为什么会成功16.2 研发人员该如何看待容器16.3 容器化开发模式16.4 容器与生产环境 查看详情
云原生之docker实战使用docker部署memos碎片化知识管理工具
...态三、下载Memos镜像四、使用docker命令安装Memos1.创建Memos容器2.查看容器3.访问Memos五、安装docker-compose1.下载docker-compose二进制 查看详情
docker实战系列——第四话--将你的spring-boot应用进行容器化的几种常见玩法
...在记录和整理自己在工作和学习过程中,对于应用做容器化并推送到镜像仓库的方案和工具选择以及使用上的一些思考和心得。希望能够帮到大家前置知识docker、Idea、maven、linux容器化方案的选择参考:https://j 查看详情
docker实战总结
一、Docker简介Docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的docker应用中,可以实现快速部署。简单的理解,docker就是一个软件集装箱化平台,就像船只、火车、卡车运输集装箱... 查看详情
对docker了解多少?10分钟带你从入门操作到实战上手
Docker简述Docker是一种OS虚拟化技术,是一个开源的应用容器引擎。它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有linux系统中(Windows10目前也原生支持,Win10前需要内置虚拟机),正所谓“一次... 查看详情
docker实战系列——第四话--将你的spring-boot应用进行容器化的几种常见玩法
...在记录和整理自己在工作和学习过程中,对于应用做容器化并推送到镜像仓库的方案和工具选择以及使用上的一些思考和心得。希望能够帮到大家前置知识docker、Idea、maven、linux容器化方案的选择参考:https://juejin.im/post/5... 查看详情
k8s快速入门:从部署到实战(代码片段)
k8s快速入门介绍容器化部署随着Docker技术的流行,对项目的容器化部署方式越来越流行,容器化部署的优点如下:可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等运行应用程序所需要的资源都被容器包... 查看详情
容器化微服务
本文是<JavaRestService实战>的容器化服务章节实验记录。使用的基础环境ubuntu16.04LTS,实验中的集群都在一个虚拟机上,其实质是伪集群,但对于了解搭建的基本方法已经满足基本要求了。一、构建Zookeeper容器集群1.定义Doc... 查看详情
docker容器实战十:容器网络
本文将讲解关于容器网络的技术原理。一. 容器网络模型在最初的版本中,Docker的网络功能集成在DockerDaemon的代码中,这使得整体架构变得臃肿且缺乏灵活性,无法适应复杂的网络需求。为此,Docker公司在后面提出了CNM(Co... 查看详情
云原生之docker实战使用dokcer部署web端vscode
...载vscode镜像四、部署vscode-server1.创建安装目录2.创建vscode容器3.查看vscode容器状态4.查看vscode容器日志五、访问vscode1.访问vscode首页2.扩展商店使用一、vscode-server介绍1.vscode-server是VS代码服务器的容器化版本。2.VisualStudioCodeServer是... 查看详情
docker容器从入门到实战0826
##docker容器安装和配置####docker的git-hub网站(账号rshare,密rshare520):https://github.com/login#docker官网hub仓库(账号flyer520,密码rhsare520):https://hub.docker.com#docker官网文档和镜像:https://docs.docker.com/samples/centos/#doc 查看详情
云原生之docker实战容器的资源限制使用方法
【云原生之Docker实战】容器的资源限制使用方法一、容器资源限制介绍二、检查本地Docker状态三、查看本地容器系统相关文件1.查看容器配置目录2.查看内存相关文件3.查看cpu相关文件四、容器内存资源的限制1.查看内存限制的选... 查看详情
docker实战系列之快速删除docker中的容器(代码片段)
1、停用全部运行中的容器dockerstop$(dockerps-q)2、删除全部容器dockerrm$(dockerps-aq)3.停用并删除容器dockerstop$(dockerps-q)&dockerrm$(dockerps-aq) 查看详情
容器与容器编排实战系列1--docker安装(代码片段)
CentOS7.4下安装Docker详细步骤 第一步:安装Dockeryuminstall-yyum-utilsdevice-mapper-persistent-datalvm2yum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repoyuminstall-ydocker-cesy 查看详情
docker容器从入门到实战0826(笔记整理)
##docker容器安装和配置####docker的git-hub网站(账号rshare,密rshare520):https://github.com/login#docker官网hub仓库(账号flyer520,密码rhsare520):https://hub.docker.com#docker官网文档和镜像:https://docs.docker.com/samples/centos/#doc 查看详情