温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Docker容器的介绍和容器的使用

发布时间:2020-06-03 17:11:54 来源:亿速云 阅读:264 作者:Leah 栏目:系统运维

这篇文章的知识点包括:Docker容器的简介、Docker容器的优势、Docker容器的核心理念以及Docker容器的使用,阅读完整文相信大家对Docker容器有了一定的认识。

一、Docker简介

官网 www.docker.com

github  https://github.com/docker/docker.github.io

开源的容器引擎,可以让开发者打包应用以及依赖的库,然后发布到任何流行的linux发行版上,移植很方便。

由go语言编写,基于apache2.0协议发布。

基于linux kernel,要想在win下运行需要借助一个vm(虚拟机)来实现。

自2013年开始,近些年发展迅猛。

docker从1.13x开始,版本分为社区版ce和企业版ee,并且基于年月的时间线形式,比如18.03就是2018年3月,当前最新稳定版为18.09参考。

Docker版本变化说明:http://blog.csdn.net/chenhaifeng2016/article/details/68062414

Docker和传统的虚拟化比较:

Docker容器的介绍和容器的使用

Docker容器的介绍和容器的使用

Docker也叫容器虚拟化,因为少了一层操作系统,所以也是轻量虚拟化。

最下面一层是服务器,硬件,往上一层是host OS,Linux操作系统,再往上,传统的有一个Hypervisor,就比如KVM,需要安装一个KVM的服务来驱动虚拟化,docker需要安装一个docker的服务,第三层是类似的,再往上就不一样了,docker不需要安装客户虚拟机,而传统的安装完KVM以后还需要新建虚拟机,在这个虚拟机上再去安装一个操作系统。

Docker的优势

启动非常快,秒级实现。

资源利用率高,一台高配置服务器可以跑上千个docker容器。

更快的交付和部署,一次创建和配置后,可以在任意地方运行。

内核级别的虚拟化,不需要额外的hypevisor支持,会有更高的性能和效率。不需要虚拟化CPU、内存等等的服务。

易迁移,平台依赖性不强。可以在Linux下搞一个镜像,把这个镜像放到Windows下去运行。

下图是docker和虚拟机的特性对比:

Docker容器的介绍和容器的使用

Docker的核心理念

镜像,是一个只读的模板,类似于安装系统用到的那个iso文件,我们通过镜像来完成各种应用的部署。

容器,镜像类似于操作系统,而容器类似于虚拟机本身。它可以被启动、开始、停止、删除等操作,每个容器都是相互隔离的。

仓库,存放镜像的一个场所,仓库分为公开仓库和私有仓库。 最大的公开仓库是Docker hub(hub.docker.com),国内公开仓库(dockerpool.com)


二、安装Docker

先下载一个官方提供的yum源

# curl https://download.docker.com/linux/centos/docker-ce.repo -o  /etc/yum.repos.d/docker.repo
# yum list |grep docker-ce   可以看到最新版是19.03
docker-ce.x86_64                        3:19.03.5-3.el7                docker-ce-stable
# yum install -y docker-ce

速度比较慢,也可以直接下载rpm包

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

下载完,上传到linux下

也需要用yum安装,可以自动解决依赖关系

# yum install -y docker-ce-xxxx.rpm
# systemctl start docker  启动docker

启动以后,它会帮你自动生成一些iptables规则,但是这个规则不会自动保存,要想保存它,执行service iptables save。一般作为docker的服务器,iptables规则尽量不要去动它。

# iptables -t nat -F
# iptables -t nat -nvL
# systemctl restart docker
# iptables -t nat -nvL
清空规则再重启docker后,规则会回来,但是得要先保存。


三、镜像管理

类似于系统的iso镜像文件。

# docker pull centos  //可以下载centos镜像,速度很慢。直接到官网拉取一个镜像。

docker pull类似于git pull。

配置docker加速器(参考 http://blog.csdn.net/xlemonok/article/details/71403534)

# vi /etc/docker/daemon.json//加入如下内容
{
  "registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]
}

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

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

docker images 查看本地的镜像
[root@fuxi01 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0f3e07c0138f        3 months ago        220MB

TAG:标签,每个镜像可以有很多个标签。latest这个是版本标签。

IMAGE ID:用来区分系统里每个镜像的ID,区分镜像的唯一标识。

# docker search xxx  //官方有哪些镜像,用search搜索镜像,其中xxx是关键词,比如jumpserver,就会把jumpserver相关的docker
# docker tag centos yw_centos //给镜像打标签
# docker tag centos centos:111 
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              549b9b86cb8d        13 days ago         64.2MB
yw_centos           latest              0f3e07c0138f        3 months ago        220MB
centos              111                 0f3e07c0138f        3 months ago        220MB
centos              latest              0f3e07c0138f        3 months ago        220MB

不加冒号,则打的标签在第一列,加了冒号,后面打的标识在TAG那,第二列。

# docker run -itd centos  
43aae89a76aef04cab62efcf6c4ec2f24a29f69db192125b0d72b2e111af69ba

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

# docker ps  //查看运行的容器,加上-a选项后可以查看所有容器,包括未运行的,docker ps -a。
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
43aae89a76ae        centos              "/bin/bash"         About a minute ago   Up 24 seconds                           serene_kare
# docker rmi centos  
# docker rmi centos:111
Untagged: centos:111

//用来删除指定镜像, rm就是删除,i就是images,其中后面的参数可以是tag,如果是tag时,实际上是删除该tag。当后面的参数为镜像ID时,则会彻底删除整个镜像,所有标签也会一同删除。当有同名镜像,而tag不同时,需要把tag加上才能删除。


四、Docker通过容器创建镜像

docker run启动为容器后,可以通过下面命令进入容器

# docker exec -it 43aae89 bash
# docker exec -it infallible_lalande bash

//其中43aae89为容器id,这个id可以用docker ps查看,也可以不写容器ID,写它的names,在docker ps中可以查看到,最后面的bash为进入容器后要执行的命令,这样就可以打开一个终端。

进入到该容器中,做一些变更,比如安装一些东西,然后针对这个容器进行创建新的镜像。


在容器中执行 yum install -y net-tools,然后ctrl d退出容器,ifconfig可以看到有docker0的网卡。

# docker commit -m "change somth"  -a "somebody info" container_id new_image_name

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

例如:

# docker commit -m "install net-tools" -a "aminglinux" 43aae89 centos_with_net

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

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos_with_net     latest              2803335f23a6        33 seconds ago      261MB
ubuntu              latest              549b9b86cb8d        3 weeks ago         64.2MB
centos              latest              0f3e07c0138f        3 months ago        220MB
yw_centos           latest              0f3e07c0138f        3 months ago        220MB

执行docker images就可以看到新的镜像了。

看完上述内容,你们对Docker容器有进一步的了解吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI