设为首页 收藏本站
查看: 992|回复: 0

[经验分享] Docker安装以及镜像、容器的管理操作

[复制链接]

尚未签到

发表于 2019-2-21 08:01:05 | 显示全部楼层 |阅读模式
Docker简介

  Docker是在Linux容器里运行应用的开源工具,是一种轻量级的虚拟化方式。Docker的设计宗旨是通过对应用软件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别“一次封装,到处运行”的目的。这里的组件可以是一个应用,也可以是一套服务,甚至可以使一个完整的操作系统。


Docker的优势



  • Docker的容器技术可以在一台主机上轻松地为任何应用创建个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,简化了重新部署、调试这些琐碎的重复工作,极大地提高了工作效率。采用Docker容器技术,迁移只需要在新的服务器上启动需要的容器就可以。
  • Dockerer容器很快,启动和停止可以在秒级实现,比传统虚拟机要快很多。
  • Docker核利用容器来实现类似VM的功能,从而以更加节省的硬件资源提供,使得在一台主机上同时运行数干个Docker容器成为可能。
  • Docker 操作方便,还可以通过Dockerfle配置镜像文件,支持灵活的自动化创建和部署。


Docker核心概念

1、镜像(image)

  Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为是一个面向Docker容器引擎的只读模板,比如一个镜像可以是一个完整的centos操作系统,也可以是一个安装了MySQL的应用程序,称之为一个镜像。
镜像文件用户可以自己创建和更新现有镜像,也可以从网上下载已经做好的应用镜像直接使用。


2、容器(Container)

  容器是镜像的另一个运行实例,是独立运行的一个或一组应用以及他们所必须的运行环境,包括文件系统、系统库类、shell环境等。镜像是只读模板,而容器会给这个只读模板一个额外的可写层。


3、仓库(Repository)

  仓库是用来集中存放镜像的地方,当自己创建了镜像后,可以使用push命令将它上传到公共仓库(Public)或者私有仓库(Private),这样,当其他机器想要使用时,直接下载下来即可使用。仓库注册服务器(Registry)是存放仓库的地方,其中包含了多个库,每个仓库集中存放某一类镜像,并且使用不同的标签来区分它们。


安装Docker
  安装docker有两种方式:其一:使用curl获得docker的安装脚本进行安装;其二:使用docker自己的Yum源来安装。这里以yum源为例安装docker。

1.仓库配置

vim /etc/yum.repos.d/docker.repo
[docker-repo]
name=Doker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
2.安装docker

yum install docker-engine -y
3.启动服务

systemctl start docker
systemctl enable docker.service    #开机自启动
4.镜像加速

vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com"  #官方提供的国内镜像加速器地址
],
"insecure-registries": []
}
5.重启服务

systemctl daemon-reload
systemctl restart docker
6.查看docker版本

docker version


7.查看docker的默认存储目录


Docker镜像操作:
  Docker运行容器前需要本地存在对应的镜像。如果不存在本地镜像,docker就会尝试从默认镜像仓库(官方仓库)https://hub.docker.com下载

1.搜索镜像

命令格式:docker search 关键字
  例如搜索关键字为lamp的镜像


2.获取镜像
  下载镜像不指定标签,默认下载最新版本的镜像,也可以通过指定的标签下载特定版本的镜像。这里的标签(tag)是用来区分镜像版本的。

命令格式:docker pull 仓库名称[:标签]
  例如下载镜像nickistre/centos-lamp

  整个下载过程可以看出,镜像文件由若干层(Layer)组成,我们称之为AUFS(文件联合系统),是实现增量保存与更新的基础,下载过程中会输出镜像的各层信息

3.查看镜像信息

命令格式:docker images 仓库名称[:标签]
  例如查看本地所有镜像


  REPOSITORY ---镜像属于的仓库
TAG ---镜像的标签信息,标记同一个仓库中不同镜像
IMAGE ID ---镜像的唯一ID号,唯一标识了该镜像
CREATED ---镜像创建时间
SIZE ---镜像大小


4.获取镜像详细信息

命令格式:docker inspect 镜像ID号
  例如获取镜像的详细信息


5.为本地镜像添加新标签

命令格式:docker tag 名称[:标签] 新名称[:标签]
  例如本地镜像 添加新的名称为lamp,新的标签为lamp


6.删除镜像

命令格式:docker rmi 仓库名称:标签 或者docker rmi 镜像ID号
  例如删除镜像lamp:lamp


  注意:当一个镜像有多个标签的时候,docker rmi 命令只是删除该镜像多个标签中的指定标签,不会影响镜像文件。但当该镜像只剩下一个标签的时候,此时删除该标签的时候会彻底删除该镜像。



  使用docker rmi 镜像ID号命令时,必须确保该镜像没有被容器使用才能进行,删除时系统会先删除掉指向该镜像的所有标签,然后删除镜像本身。如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再删除镜像


7.存出镜像和载入镜像(镜像迁移)
  存出镜像,也就是将镜像保存成本地文件。

命令格式:docker save -o 存储文件名 存储的镜像
  例如将本地的镜像存出为文件lamp

载入镜像,也就是将导出的文件导入到其他机器的镜像库中

命令格式:docker load < 存出的文件 或者docker --input 存出的文件
  例如从文件lamp中载入镜像本地镜像库


8.上传镜像
  本地存储的镜像越来越多,就需要指定一个专门的地方存放这些镜像-仓库。

命令格式:docker push 仓库名称:标签
  例如在公共仓库上成功注册了一个账号,这个账号叫做xiang10,新增的镜像的标签为xiang10/lamp:centos7

docker tag nickistre/centos-lamp  xiang10/lamp:centos7

成功登陆后上传镜像


Docker容器操作

1.创建容器
  创建容器就是将镜像加载到到容器,新创建的容器默认处于停止状态,不运行任何程序。

命令格式:docker create [选项] 镜像 运行的程序
-i 让容器对的输入保持打开
-t 让Docker分配一个伪终端


2.查看容器的运行状态

docker ps       #查看所有容器的运行状态
docker ps -a   #查看最近一次启动的容器的运行状态


3.创建并启动容器
  可以直接执行docker run命令

  其运行过程:
1.检查本地是否存在指定的镜像,当镜像不存在时,会从公共仓库下载;
2.利用镜像创建并启动容器;
3.执行用户指定的应用程序;
4.执行完毕后容器被中止运行

  例如创建容器并启动执行一条shell命令

docker run centos /usr/bin/bash -c ls /



  但有时候需要在后台持续运行这个容器,就要让docker以守护态在后台运行,可以在docker run命令后添加“-d”选项实现。那么,容器运行的程序就不能结束。


docker run -d centos /usr/bin/bash -c "while true;do echo hello;done"


4.运行、中止容器

命令格式:docker start 容器的ID/名称  #启动停止状态的容器
命令格式:docker stop 容器的ID/名称  #中止运行状态的容器



5.进入容器
  当不进入容器时,容器运行完所执行的程序后会自动停止,为了避免这样的情况,我们需要进入容器执行,且退出容器后,容器并不会停止。

命令格式:docker exec -it 容器的ID/名称 /bin/bash
-i 让容器对的输入保持打开
-t 让Docker分配一个伪终端


6.导出与导入容器
  导出容器,也就是将已经创建好的容器容器导出为文件

命令格式:docker export 容器的ID/名称 > 文件名
  例如导出容器到文件centos7tar

导入容器,也就是将导出文件传输到其他机器

命令格式:cat 文件名| docker import - 生成的镜像名称:标签
  例如导入文件centos7tar成为本地镜像


7.删除容器
  将一个已经处于中止状态的容器删除

命令格式:docker rm 容器的ID/名称

  如果要删除一个正在运行的容器,可以添加-f选项强制删除,但建议先将容器停止再做删除操作。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-675068-1-1.html 上篇帖子: CentOS 7 上搭建 Docker 和基础管理 下篇帖子: Docker创建镜像以及私有仓库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表