Docker容器介绍,镜像管理
介绍
官网:
https://www.docker.com/
github:
https://github.com/docker/docker.github.io
开源的容器引擎,可以让开发者打包应用以及依赖的库,然后发布到任何流行的linux发行版本上,一只很方便。
有go语言编写,基于apache2.0协议发布。
基于linux kernel,win下运行需要借助一个vm来实现
docker从1.13x开始,版本分为社区版ce和企业版ee。
Docker是一个基于Lxc(一种内核虚拟化技术,可以提供轻量级的虚拟化)的高级容器引擎。
docker设想的是交付运行环境如同海运,os如同一个货轮,每一个在os基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以自己定义,亦可以由专业人员组装运行环境。
docker架构:
使用客户端和服务端(c/s)架构模式,使用远程api来管理和创建docker容器。Docker容器通过Docker镜像来创建。容器与镜像的关系类似面向对象编程中的对象与类。
docker优势:
启动非常快,秒级实现
资源利用率高,一台高配置服务器可以跑上千个docker容器。
更快的交付和部署,一次性创建后,可以在任意地方运行
docker核心概念:
镜像:是一个只读的模板,类似于安装系统用到的iso文件,通过镜像来完成各种应用的部署。
容器:镜像类似于操作系统,而容器类似于虚拟机本身。它可以被启动,开始,停止,删除等操作,每个容器都是相互隔离的。
仓库:存放镜像的一个场所,分为公开和私有。最大的公开仓库是Docker hub(hub.docker.com),国内公开仓库(dockerpool.com)。
安装:
首先需要下载一个官方提供的repo的yum源:
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo
安装完成之后,检查docker的版本:
yum list |grep docker
containerd.io.x86_64 1.2.10-3.2.el7 @docker-ce-stable
docker-ce.x86_64 3:19.03.4-3.el7 @docker-ce-stable
可以看出下载的最新版时19.03的社区版。
安装docker:
yum install -y docker-ce
docker安装完成。
因为下载镜像有可能会很慢,需要用到加速器,可以在阿里云上免费申请。
阿里云官方–》产品分类–》容器镜像服务,然后登入,点击加速器,就可以生成一个链接。
然后,复制这个链接做如下操作:
vim /etc/docker/daemon.json
添加:
{"registry-mirrors":["https://v5knntg8.mirror.aliyuncs.com"]}
中括号里面是自己刚才复制的链接,然后启动docker。
docker的启动:
systemctl start docker
它会自动添加一些iptables规则,这些规则如果清除掉,可能会造成docker启动或者运行出错,所以最好不好去删除。当然了,每次重启docker,它会自动生成:
查看防火墙规则:
iptables -nvL
镜像管理:
有了容器之后,怎么下载镜像呢?
下载镜像:
docker pull centos #下载centos镜像
这个镜像是官方的,下载可能有点慢,所以要用到前面提到的加速器。
查看本地镜像,包括自己下载的镜像;
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 0f3e07c0138f 5 weeks ago 220MB
对于官方的镜像,查不到具体由哪些镜像,但是可以搜索,比如搜索redhat:
docker search redhat
NAME DESCRIPTION
hjd48/redhat redhat6.3x86-64 images
fbascheper/redhat-jboss-eap Extensible RedHat JBoss EAP
yjjy0921/redhat7.2 A clean redhat 7.2 image fr
crorvick/redhat RedHat Linux
最上面的是官方的,其他的都是第三方发布上去的,都是公共镜像。
上面查看本地镜像,有几个参数:repository,tag,images id和created
怎么更改repository和tag呢:
更改centos:
docker tag centos lg
查看:
docker images
lg latest 0f3e07c0138f 5 weeks ago 220MB
centos latest 0f3e07c0138f 5 weeks ago 220MB
发现第一个参数被改变了,但是它和centos还是一样的,image id是唯一标识。
tag也可以更改:
docker tag centos lg:222
冒号前面是第一个参数,后面便是tag参数。
查看:
lg 222 0f3e07c0138f 5 weeks ago 220MB
怎么删除镜像呢:
docker rmi lg #删除lg
docker rmi lg:222 #删除lg并且tag为222
如果删除的是image id,那么只要是相同的id,便会被删除。
启动镜像:
docker run -itd centos
-i:表示让容器的标准输入打开,-t表示分配一个为终端,-d表示后台启动,要把-i,-t,-d放到镜像名字前面。
查看启动的镜像:
docker ps
查看全部的,包括停止的:
docker ps -a
进入容器(镜像启动之后就是一个容器):
docker exec -it cc9 bash
-it后面接容器的CONTAINER ID(用docker ps查看),可以不用写全。最后要接一个终端bash才可以进入。
获取容器id:
docker ps -a -q
通过容器创建镜像
docker commit -a "ligen" cc9c8f71b361 centos_with_net
-a:指定作者
-m:改变信息
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_with_net latest 065c1d49bd0e 20 seconds ago 220MB
成功创建。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
