Docker基本概念与实践(一)-镜像
Docker镜像
镜像是运行容器的前提
Docker镜像是Docker三大核心概念最为关键一环,简单来说镜像就是把业务代码和可运行环境进行整体的打包。 |
---|
镜像可以看作是一个特殊而且只可读的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。(例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了Mysql或用户需要的其它应用程序。) |
从下图可以看出,Docker 包含三个基本概念,分别是镜像(Image)、容器(Container)和仓库(Repository)。镜像是 Docker 运行容器的前提,仓库是存放镜像的场所,可见镜像更是Docker的核心。 |
拉取镜像前准备工作
为了方便以后的管理,新增docker用户并赋予执行docker命令的权限
#增加docker分组 groupadd docker #创建docker用户的同时直接加入docker组 useradd -d /home/docker -g docker docker #使用root用户为docker用户设置密码 passwd docker #使用root用户 添加sudo文件写权限 chmod u+w /etc/sudoers #编辑sudoers文件加入docker用户并保存 vi /etc/sudoers #执行这步后找到文件里root ALL=(ALL) ALL 在下面一行添加docker ALL=(ALL) ALL #恢复sudo文件的只读权限 chmod 440 /etc/sudoers #重启Docker systemctl restart docker
国内的服务器由于拉取镜像速度感人QAQ,因此博主采用阿里云作为加速地址(也可使用网易蜂巢等)
需在阿里云注册个人专属加速地址
yum安装docker默认配置文件在 /etc/docker/ 下,在daemon.json文件中加
"registry-mirrors": ["xxx"] #xxx为专属加速地址
拉取镜像
1.通过dockerfile构建:dockerfile是用命令行文本的方式构建生成镜像 2.doacker pull拉取镜像:docker pull是从仓库里拉取镜像到本地 区别在于一个生产新的 一个从已有仓库获取
以拉取官方ubuntu镜像为例
#搜索带星的ubuntu镜像 docker search ubuntu--s #拉取镜像 (默认版本最新标签为latest 【docker inspect ubuntu可以查看具体信息包含版本号】) docker pull ubuntu #拉取后可以随时使用镜像 -t为开启连接终端 -i为开启input输入功能通常一起使用 可以用该操作系统镜像启动容器 执行bash应用等 以执行bash应用为例 docker run -t -i ubuntu /bin/bash #查看刚刚镜像启动的容器 docker -ps a #修改镜像标签 例如生成一个名为myubuntu标签为garwer的镜像 此时会多出一个刚创建id相同的镜像(实际指向的镜像文件相同,只是名称不同,docker tag起了类似连接作用 docker ubuntu:latest myubuntu:garwer
执行结果
创建镜像的三种方式
1.基于已有镜像的容器创建 2.基于本地模板导入 3.dockerfile创建
1.基于已有镜像的容器创建
docker commit
例如现在已经有ubuntu镜像 使用ubuntu安装命令安装apache2
依次执行
docker run -i -t ubuntu /bin/bash apt-get -yqq update apt-get -y install apache2 #安装完成后退出 exit
启动了一个容器,并在里面安装了Apache。我们会将这个容器作为一个Web服务器来运行,所以我们想把它的当前状态保存下来。这样我们就不必每次都创建一个新容器并再次在里面安装Apache了。为了完成此项工作,需要先使用exit命令从容器里退出,之后再运行docker commit命令:
#查看刚刚创建并退出的容器 docker ps -a #其中 -m为提交信息 -a为作者信息 testapache为起的标签名 会生成一串很长的镜像id fa1a4c0cccb0为你的ubuntu容器id docker commit -m "added a new file" -a "Docker linjw" fa1a4c0cccb0 testapache #查看镜像 包含了个刚刚创建安装有apache2的ubuntu镜像 docker images
基于本地模板导入(没试过)
使用Dockerfile创建
内容较多,下篇单独讲解
提交镜像到官方镜像DockerHub上
1.https://hub.docker.com/ 先在官网注册 2.上传自制镜像,例如上传创建的testapache镜像(修改标签后上传) 3.更改标签后然后docker push自制镜像(docker push默认提交到docker仓库,需要登陆)
#更改要提交的镜像的标签,规范格式为 user/imagename:tag,例如: docker tag testapache:latest linjiawei10086/testapache:garwer #登陆docker官网并输入账号密码 docker login #将刚刚修改标签的镜像提交dockerhub docker push linjiawei10086/testapache:garwer
成功后登陆dockerhb个人仓库可看到自己自制提交的镜像
删除镜像
#删除镜像 根据镜像命或标签删除单个 例如docker rmi testapache:v1、docker rmi 0cadef2b6ac8 docker rmi name:tag/imageid #当有该镜像创建的容器时,镜像文件无法删除,可用docker rmi -f name:tag/imageid强制删除,但建议先删掉容器再删镜像 docker rmi -f name:tag/imageid #删除全部镜像 docker rmi $(docker images -q)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Logtail从入门到精通(二):开启日志采集之旅
Logtail相关概念 为了更好的了解日志采集,这里我们首先对日志采集中遇到的基本概念进行简要的介绍。 概念介绍 项目: 项目(Project)是日志服务中的资源管理单元,用于资源隔离和控制。您可以通过项目来管理某一个应用的所有日志及相关的日志源。它管理着用户的所有日志库(Logstore),采集日志的机器配置等信息,同时它也是用户访问日志服务资源的入口。 日志库: 日志库(Logstore)是日志服务中日志数据的采集、存储和查询单元。每个日志库隶属于一个项目,且每个项目可以创建多个日志库。 Logtail客户端: Logtail是一款执行日志收集工作的Agent,一般安装在需要收集日志的服务器上,作为独立软件运行。 机器组: 一个机器组包含一或多台需要收集一类日志的机器。通过绑定一组Logtail配置到一个机器组,可以让日志服务根据同样的L
- 下一篇
centos下利用docker搭建hbase集群过程记录
安装docker #查看你当前的内核版本(Docker 要求 CentOS 系统的内核版本高于 3.10 ) uname -r #安装 Docker yum -y install docker #启动 Docker 后台服务 service docker start #测试运行 hello-world,由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。 docker run hello-world #测试完成删除hello-word镜像
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8编译安装MySQL8.0.19