docker 基础

本文介绍了Docker的基本概念、优势,并详细讲解了Docker的安装过程、镜像管理,包括如何下载、搜索、打标签、启动容器以及镜像的创建和删除。此外,还提到了Docker的容器管理和网络模式,如数据卷、网络桥接以及Dockerfile和docker-compose的使用。
摘要由CSDN通过智能技术生成

25.1 docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,移植很方便;
docker由go语言编写,基于apache2.0协议发布基于linux kernel,要想在win下运行需要借助一个vm(虚拟机)来实现

官网 www.docker.com
docker从1.13x开始,版本分为社区版ce和企业版ee,并且基于年月的时间线形式,当前最新稳定版为17.09

参考
http://blog.csdn.net/chenhaifeng2016/article/details/68062414

Docker和传统的虚拟化比较:
在这里插入图片描述在这里插入图片描述
Docker的优势:
启动非常快,秒级实现
资源利用率高,一台高配置服务器可以跑上千个docker容器
更快的交付和部署,一次创建和配置后,可以在任意地方运行
内核级别的虚拟化,不需要额外的hypevisor支持,会有更高的性能和效率
易迁移,平台依赖性不强
在这里插入图片描述
Docker核心概念:

  • 镜像,是一个只读的模板,类似于安装系统用到的那个iso文件,我们通过镜像来完成各种应用的部署。
  • 容器,镜像类似于操作系统,而容器类似于虚拟机本身。它可以被启动、开始、停止、删除等操作,每个容器都是相互隔离的。
  • 仓库,存放镜像的一个场所,仓库分为公开仓库和私有仓库。最大的公开仓库是Docker hub(hub.docker.com),国内公开仓库(dockerpool.com

25.2 安装docker

下载docker的repo源:
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo

yum安装:

yum install -y docker-ce

如果以上这种安装方式的速度比较慢的话,也可以直接下载rpm包: https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
下载完之后也需要使用yum安装,

yum install -y docker-ce-xxxx.rpm

安装完成之后,启动docker

[root@server ~]# systemctl start docker
[root@server ~]# ps aux |grep docker
root     15799  1.0  5.1 469280 52052 ?        Ssl  09:27   0:00 /usr/bin/dockerd -H unix://
root     15804  0.6  2.9 391232 30240 ?        Ssl  09:27   0:00 containerd --config 
/var/run/docker/containerd/containerd.toml --log-level info
root     15951  0.0  0.0 112720   984 pts/0    S+   09:27   0:00 grep --color=auto docker

启动docker后,会自动生成一些iptables规则:

[root@server ~]# iptables -nvL
[root@server ~]# iptables -nvL
Chain INPUT (policy ACCEPT 55 packets, 3910 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DOCKER-USER  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 DOCKER-ISOLATION-STAGE-1  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0            ctstate 

RELATED,ESTABLISHED
    0     0 DOCKER     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  docker0 !docker0  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  docker0 docker0  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 29 packets, 3108 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain DOCKER (1 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DOCKER-ISOLATION-STAGE-2  all  --  docker0 !docker0  0.0.0.0/0            0.0.0.0/0           
    0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      docker0  0.0.0.0/0            0.0.0.0/0           
    0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-USER (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

保存docker的iptables规则;

[root@server ~]# service iptables save

对于iptables规则,因为重启docker服务,就会自动生成,没有必要保存,但是它涉及很多容器,因此docker一般为专用服务器;

25.3 镜像管理

docker pull centos//可以下载centos镜像,因是国外资源,速度很慢

配置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会快很多

查看本地的镜像:

[root@server ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              75835a67d134        7 weeks ago         200MB
  • REPOSITORY 仓库

  • TAG 标签,相当于给这个镜像标上一个版本,用于区分这是新版本还是旧版本,或者用于区分这是什么环境的版本,总是就是作为一个标识符的存在

  • IMAGE ID是这个镜像的唯一标识,用于区分系统中不同的镜像

  • CREATED ,什么时候创建的

  • SIZE,这个镜像的大小

    docker search xxx //搜索镜像,其中xxx是关键词
    docker tag centos test_centos //给镜像打标签

[root@server ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              75835a67d134        7 weeks ago         200MB
test_centos         latest              75835a67d134        7 weeks ago         200MB
[root@server ~]# docker tag centos test_centos:181129
[root@server ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              75835a67d134        7 weeks ago         200MB
test_centos         181129              75835a67d134        7 weeks ago         200MB
test_centos         latest              75835a67d134        7 weeks ago         200MB

把镜像启动为容器

[root@server ~]# docker run -itd centos
8e3ff98afc9e609a3448985497591a85a1d8b3e04fc59a3790b66015a5c9d791

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

查看运行中的容器,加上-a选项后可以查看所有容器,包括未运行的

[root@server ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS  

             NAMES
8e3ff98afc9e        centos              "/bin/bash"         20 seconds ago      Up 19 seconds   

删除指定镜像

[root@server ~]# docker rmi test_centos
Untagged: test_centos:latest
[root@server ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test_centos         181129              75835a67d134        7 weeks ago         200MB
centos              latest              75835a67d134        7 weeks ago         200MB

其中后面的参数可以是tag,如果是tag时,实际上是删除该tag。当后面的参数为镜像ID时,则会彻底删除整个镜像,所有标签也会一同删除。

25.4 通过容器创建镜像

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

[root@server ~]# docker ps
CONTAI
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值