前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 基础配置安装(Ⅰ)

Docker 基础配置安装(Ⅰ)

作者头像
老七Linux
发布2018-05-31 10:45:56
6530
发布2018-05-31 10:45:56
举报
文章被收录于专栏:Laoqi's Linux运维专列
一、初识Docker

docker近几年非常火,因为它是容器虚拟化,更能够充分提高硬件资源的使用率。其实利用率高不算什么,它最大的优势是能给让运维人员或者开发人员快速部署和交付资源,大大提高了工作效率。几乎所有的大企业都在使用docker,所以我们没有理由不去了解它,不去学习它。

  • 容器虚拟化,比传统的虚拟化轻量。
  • 2013年出现,发展非常迅猛。
  • Redhat在6.5版本开始支持docker。
  • 使用go语言开发,基于apache2.0协议。
  • 开源软件,项目代码在github维护。
  • docker从1.13x开始,版本分为社区版ce和企业版ee,并且基于年月的时间线形式。

三篇资料,助你加深理解什么是Docker?

如通何俗懂易释解Docker是什么?

大白话Docker入门(一)

大白话Docker入门(二)

容器虚拟化和传统虚拟化比较:
容器虚拟化:
传统虚拟化:

也就是说,让我们创建一个新的虚拟机的时候,如果使用Vmware,首先我们需要分配一定的硬件资源去运行虚拟出来的系统,如果一台电脑例如我的win7 配置一般,也就顶多可以跑10个centos,但是如果使用Docker就可以创建成千上百个centos系统,且每个系统都是独立的,隔离开来的,硬件资源也是隔离开来的。这就是根本区别!

不难看出Docker的优势是:
  • 启动非常快,秒级实现。
  • 资源利用率很高,一台机器可以跑上千个docker容器。
  • 更快的交付和部署,一次创建和配置后,可以在任意地方运行。
  • 内核级别的虚拟化,不需要额外的hypevisor- – 支持,会有更高的性能和效率。
  • 易迁移,平台依赖性不强。
Docker核心概念
  • 镜像,是一个只读的模板,类似于安装系统用到的那个iso文件,我们通过镜像来完成各种应用的部署。
  • 容器,镜像类似于操作系统,而容器类似于虚拟机本身。它可以被启动、开始、停止、删除等操作,每个容器都是相互隔离的。
  • 仓库,存放镜像的一个场所,仓库分为公开仓库和私有仓库。 最大的公开仓库是Docker hub(hub.docker.com),国内公开仓库(dockerpool.com
二、Docker的安装与配置
2.1 安装
代码语言:javascript
复制
[[email protected] ~]# curl https://download.docker.com/linux/centos/docker-ce.repo -o  /etc/yum.repos.d/docker.repo
//下载docker的yum源

[[email protected] ~]# yum install -y docker-ce

[[email protected] ~]# systemctl start docker

[[email protected] ~]# ps aux | grep docker

[[email protected] ~]# docker version

当然另外一点,当我们配置完毕后,会自动帮我们创建一些IPtables 规则,其目的就是不影响docker虚拟机的正常运行。(每次重启docker服务会自动把iptables规则添加上,所以不用担心删除!

2.2 镜像管理

docker 由于在国外,国内限制比较大,所以我们一般会使用阿里云的加速器去下载一个镜像:

代码语言:javascript
复制
vi /etc/docker/daemon.json  //加入如下内容
{
  "registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]
}

说明:这个url为加速器地址,需要同学自行到阿里云申请。

配置完加速器,重启docker服务,再次docker pull centos会快很多。

代码语言:javascript
复制
docker pull centos     //从docker.com获取centos镜像

docker images   //查看本地都有哪些镜像

docker search centos  //从docker仓库搜索centos镜像

docker tag centos asd9577     //为centos镜像设置标签为asd9577,再使用docker images查看会多出来一行,改行的image id和centos的一样,类似于更换一个新名字再次展现出来。

★★ 但是 IMAGE ID 是一样的!

docker tag centos test:testmail     //或者一步到位:(直接修改容器为test,tag为testmail)

docker run -itd centos //把镜像启动为容器,-i表示让容器的标准输入打开,-t表示分配一个伪终端,-d表示后台启动,要把-i -t -d 放到镜像名字前面

[[email protected] yum.repos.d]# docker run -itd centos
dbde185fdcd37641f68651080bc67579d8019e87b2f7fb71e6bc63c7c32f01e6

[[email protected] yum.repos.d]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
dbde185fdcd3        centos              "/bin/bash"         7 seconds ago       Up 6 seconds                            flamboyant_tesla

docker ps   //查看正在运行的容器

docker ps -a     //加上-a选项可以查看没有运行的容器

exit    //直接退出容器系统

docker rmi centos   //用来删除指定镜像, 其中后面的参数可以是tag,如果是tag时,实际上是删除该tag,只要该镜像还有其他tag,就不会删除该镜像。当后面的参数为镜像ID时,则会彻底删除整个镜像,连同所有标签一同删除。

所以我们一般在删除的时候一般会指定如下规范:

docker rmi 镜像名:tag

[[email protected] yum.repos.d]# docker rmi asd9577:latest
Untagged: asd9577:latest

[[email protected] yum.repos.d]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
asd9577             aa                  d123f4e55e12        9 days ago          197MB
centos              latest              d123f4e55e12        9 days ago          197MB
2.3 通过容器创建镜像

刚刚我只是说到了如何删除修改一些基础的操作,一旦镜像搭建好了,如何才能通过命令行进入系统呢?

可以通过下面命令进入容器:

代码语言:javascript
复制
docker exec -it xxxxx bash

//其中xxxxx为容器id,这个id可以用docker ps查看,最后面的bash为进入容器后我们要执行的命令,这样就可以打开一个终端。

进入到该容器中,我们可以查看一下基础的设备信息,都是基于宿主机建立起来的。我们也可以做一些变更,比如安装一些东西,然后针对这个容器进行创建新的镜像:

在容器中执行:

代码语言:javascript
复制
yum install -y net-tools
代码语言:javascript
复制
[roo[email protected] /]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 0.0.0.0

docker 容器自动的帮你虚拟出来一个虚拟IP。
而且在外部的虚拟主机我们也是可以看到这个网卡的!

然后ctrl d 退出容器。

把我们刚刚制作的镜像保存成一个新的镜像,下次我们再次需要的时候就可以直接使用(不需要再次安装我们已经安装过的服务!):

代码语言:javascript
复制
docker commit -m "change somth"  -a "somebody info" container_id new_image_name 

//container_id通过docker ps -a获取,后面的new_image_name为新镜像名字

例如:

代码语言:javascript
复制
[root@zhdy01 yum.repos.d]# docker commit -m "installed config command" -a "zhdya" dbde185fdcd3 centos_net-tools
sha256:4e884f915e60977db3e0ab6bb315d9a4b220f1a1910c6cce0ebea1bb188763aa

[root@zhdy01 yum.repos.d]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos_net-tools    latest              4e884f915e60        8 seconds ago       277MB
centos              latest              d123f4e55e12        9 days ago          197MB
asd9577             aa                  d123f4e55e12        9 days ago          197MB

这个命令有点像git的提交,-m 加一些改动信息,-a指定作者相关信息 2c74d这一串为容器id,再后面为新镜像的名字。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/03/13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、初识Docker
  • 容器虚拟化和传统虚拟化比较:
    • 容器虚拟化:
      • 传统虚拟化:
      • 不难看出Docker的优势是:
      • Docker核心概念
      • 二、Docker的安装与配置
        • 2.1 安装
          • 2.2 镜像管理
            • 2.3 通过容器创建镜像
            相关产品与服务
            容器镜像服务
            容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档