Docker容器化技术(上)
Docker容器化技术
一、介绍
- 开源的应用容器引擎,基于Go语言开发
- 容器是完全使用沙箱,容器开销极低
- Docker就是容器化技术代名词
- Docker也具备一定虚拟化职能
- 标准的应用打包

二、Docker的发展

三、Docker安装
1.安装utils
yum install -y yum-utils device-mapper-persistent-data lvm2
后两个工具是持久化工具,yum-utils是省去安装源配置过程
2.yum-config-manager 是yum-utils的命令,如果没有,则会采用去复制repo到某目录,然后刷新yum(比较麻烦)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.让yum检测最快的源并使用
yum makecache fast
4.安装docker,ce是社区版本
yum -y install docker-ce
5.启动服务
service docker start
或者
systemctl start docker
6.查看docker版本
由于docker是CS架构,所以我们这次查看有Server和Client,在第四步安装,我们就已经安装了Server和Client
docker version
7.拉取hello-world
docker pull hello-world
8.执行hello-world
docker run hello-world
注意:
第七步如果下载失败,则可以使用阿里云的加速代理,加速代理的教程四。
目前Windows 10 64bit也支持了docker,其他版本windows均不支持。
四、阿里云Docker镜像加速
登录阿里云,进入后台

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["你的码"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
使用tee进行输出{}这段json文本
辅助进程重载
重启docker
五、Docker的基本概念
- Docker是提供应用打包,部署与运行应用的容器化平台

总体架构
- Docker引擎分为3个,内层是一个docker daemon,中间层REST API进行通讯,最外层是CLI,我们通过REST API进行与server进行通讯。
- 因为通讯是REST API,所以我们使用协议是HTTP 协议

Docker引擎
- 容器与镜像
镜像:镜像是文件,只读的,提供了运行完整软硬件应用程序的集装箱
容器:是镜像的实例,由Docker负责创建,容器之间彼此隔离
- Docker执行流程
客户端来向服务端发送命令,服务端由Docker daemon来负责管理Containers和Images,最右边是注册中心,用来保存各种各样的镜像文件
docker执行流程
六、命令
- docker pull imageName<:tags> 远程仓库抽取镜像
- docker images 查看远程抽取镜像
- docker run 创建容器,启动应用
- docker ps 查看正在运行的镜像
- docker rm 删除容器
- docker rmi 删除镜像
七、Docker宿主机与容器通信
我们可以使用docker进行端口映射

ip运行原理
容器正常启动,内部8080映射到8000端口
docker run -p 8000:8080 tomcat
容器后台运行
docker run -p 8000:8080 -d tomcat
杀死后台容器
docker kill containerID
八、容器内部结构
- 以tomcat为例,Tomcat容器内部组件

Tomcat组件
- 思考:为什么有个linux文件还这么小?
理由:linux仅支持这个应用,其他组件一律没有安装,所以占用资源较少
- 容器中执行命令
docker exec [-it] 容器id 命令
例子
docker exec -it 098988czcd /bin/bash
退出命令
exit
九、容器生命周期

容器生命周期图
docker run = docker create + docker start
docker create 单执行,则会进入停止状态
- 执行docker start 进入开始状态
- docker destroy 删除容器
docker kill 或者 docker stop 都置die状态,紧接着进入stop状态
- docker kill 后进行docker start 创建新进程
- docker stop 后进行docker start 进入恢复
docker restart 可以重启
docker pause 进行暂停状态
内存溢出OOM,会置die
查看状态 docker ps -a 我们会发现更多子状态
十、Dockerfile构建镜像
- Dockerfile是一个包含用于组合镜像命令的文本文件
- Docker读取Dockerfile中指令,进行自动生成镜像
- docker build -t 机构/镜像名<:tags> Dockerfile目录
案例dockerfile
from tomcat:latest //设置基准镜像
MAINTAINER xxx.com //拥有者
WORKDIR /opt/tomcat/webapps //结合web容器路径进行放置打包,如果目录不存在,则创建
ADD docker-web ./docker-web //添加 docker-web ./docker-web
实际案例
创建dockerweb文件夹,内部放一个index.html
在外部书写Dockerfile,无扩展名
FROM consol/tomcat-7.0
MAINTAINER steveyu.com
WORKDIR /opt/tomcat/webapps
ADD docker-web ./docker-web
执行 docker build -t steveyu/mywebapp:1.0 /usr/local
- 镜像分层

镜像构件图
我们在处理的时候,每一层都是一个镜像,处理过的镜像不必要重新处理,极大加快了构建镜像的速度
Docker容器化技术(上)的更多相关文章
- Docker容器化技术(下)
Docker容器化技术(下) 一.Dockerfile基础命令 1.1.FROM - 基于基准镜像 FROM centos #制作基准镜像(基于centos) FROM scratch #不依赖任何基 ...
- 新一代Java程序员必学的Docker容器化技术基础篇
Docker概述 **本人博客网站 **IT小神 www.itxiaoshen.com Docker文档官网 Docker是一个用于开发.发布和运行应用程序的开放平台.Docker使您能够将应用程序与 ...
- Docker容器化技术
1. 初始Docker 1.1 Docker概念 Docker概念:Docker是一个开源的应用容器引擎 诞生于2013年初,基于Go实现,dotCloud公司出品(后改名为Docker Inc) D ...
- Java 服务 Docker 容器化最佳实践
转载自:https://mp.weixin.qq.com/s/d2PFISYUy6X6ZAOGu0-Kig 1. 概述 当我们在容器中运行 Java 应用程序时,可能希望对其进行调整参数以充分利用资源 ...
- 通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署
通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署 Intro Azure DevOps Pipeline 现在对于公开的项目完全免费,这对于开源项目来讲无疑是个巨大的 ...
- [ci]jenkins-slave-ssh docker容器化-用户名密码
jenkins-slave-ssh docker容器化 架构 参考:https://www.youtube.com/watch?v=OxrBCt1JLuQ https://github.com/Dav ...
- spring boot本地开发与docker容器化部署的差异
spring boot本地开发与docker容器化部署的差异: 1. 文件路径及文件名区别大小写: 本地开发环境为windows操作系统,是忽略大小写的,但容器中区分大小写 2. docker中的容器 ...
- docker容器化python服务部署(supervisor-gunicorn-flask)
docker容器化python服务部署(supervisor-gunicorn-flask) 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-furt ...
- 利用 ELK 搭建 Docker 容器化应用日志中心
利用 ELK 搭建 Docker 容器化应用日志中心 概述 应用一旦容器化以后,需要考虑的就是如何采集位于 Docker 容器中的应用程序的打印日志供运维分析.典型的比如SpringBoot应用的日志 ...
随机推荐
- MUD游戏开发教程视频
MUD游戏开发教程视频 https://space.bilibili.com/476328540/channel/detail?cid=91187
- 170道python面试题(转)
作者:麋鹿链接:https://www.zhihu.com/question/54513391/answer/779646691来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- [LeetCode] 316. Remove Duplicate Letters 移除重复字母
Given a string which contains only lowercase letters, remove duplicate letters so that every letter ...
- SVN 本地文件锁/服务端文件锁清除步骤
1.本地文件锁,直接cleanup,cleanup界面选择break locks即可 2.服务端文件锁,本地文件右击没有release lock或者break lock的选项时 方法1:右键,svn选 ...
- Python下numpy的使用
首先:当然是欢迎大家了! Numpy : NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structur ...
- Apache Kafka主题 - 架构和分区
1.卡夫卡话题 在这篇Kafka文章中,我们将学习Kafka主题与Kafka Architecture的整体概念.Kafka中的体系结构包括复制,故障转移以及并行处理.此外,我们还将看到创建Kafka ...
- 通过Anaconda安装的jupyter notebook,打开时,未能启动默认浏览器
问题:通过Anaconda安装的jupyter notebook,通过开始菜单的快捷方式打开时,未能启动网页,需要复制url,粘贴到浏览器中才会出现工作面板. 解决方法: 修改jupyter_note ...
- PAT(B) 1050 螺旋矩阵(Java:24分)
题目链接:1050 螺旋矩阵 (25 point(s)) 题目描述 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上 ...
- Codeblocks中文乱码解决方法。
如需安装包请后台留言!! Codeblocks中文乱码解决方法: 特别提示:出现中文乱码情况才执行以下操作,未出现请勿随意修改!!!! 打开Codeblocks -> 设置 -> 编辑器: ...
- 雪花算法,生成分布式唯一ID
2.3 基于算法实现 [转载] 这里介绍下Twitter的Snowflake算法——snowflake,它把时间戳,工作机器id,序列号组合在一起,以保证在分布式系统中唯一性和自增性. snowfla ...