快速了解使用Docker

Docker

Docker是一个用于开发,交付和运行应用程序的开放平台。 Docker能够将应用程序与基础架构分开,从而可以快速交付软件。 借助Docker,可以以与管理应用程序相同的方式来管理基础架构。 通过利用Docker的快速交付,测试和部署代码的方法,可以大大减少编写代码和在生产环境中运行代码之间的延迟。

Docker属于Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

简单概括来说:

  • 使用最广泛的开源容器引擎

  • 一种操作系统级的虚拟化技术

  • 依赖于Linux内核特性:Namespace(资源隔离)和Cgroups(资源限制)

  • 一个简单的应用程序打包工具

Docker设计目标

  • 提供简单的应用程序打包工具

  • 开发人员和运维人员职责逻辑分离

  • 多环境保持一致性

Docker基本组成

Docker Client:客户端,输入docker的一些操作指令

Ddocker Daemon:守护进程, Docker是C/S架构的程序,Docker的客户端向守护进程发起请求,守护进程处理完成后返回结果。Docker客户端既可以在本地访问守护进程,也可以远程访问守护进程。

Docker Images:镜像, 镜像是容器的基石,容器基于镜像启动,镜像就像是容器的源代码,保存了用于容器启动的各种条件 。

镜像不是一个单一的文件,而是有多层构成。我们可以通过docker history <ID/NAME> 查看镜像中各层内容及大小,每层对应着Dockerfile中的一条指令。Docker镜像默认存储在/var/lib/docker/<storage-driver>中。

容器其实是在镜像的最上面加了一层读写层,在运行容器里做的任何文件改动,都会写到这个读写层。如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。

Docker使用存储驱动管理镜像每层内容及可读写层的容器层。

 Docker Container:容器,通过镜像启动:容器是docker的执行单元。

启动和执行:镜像如果是构建和打包阶段,则容器是启动和执行阶段。

容器启动过程:启动时在镜像的最顶层加一个可写的文件系统,即可写层。Docker中运行的程序就是在这个层中执行的。docker第一次启动一个容器时,可写层是空的,当文件系统发生变化,都会应用到这一层。如果想修改一个文件,该文件首先会从可读写层下边的只读层复制到该读写层,该文件的只读版本依然存在,但是已经被读写层中的该文件副本所隐藏。这个是docker的重要机制,写时复制(copy on write),当创建一个新容器时,docker构建出一个镜像栈,在栈的最顶层添加可写层,这个读写层加上下边的镜像层及配置数据就构成了一个容器。

 Docker Registry:镜像仓库,存放用户构建的镜像,仓库分为公有和私有,共有是指Docker Hub。

Docker Hub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。

 

容器 VS 虚拟机

 

VM是一个运行在宿主机之上的完整的操作系统,VM运行自身操作系统会占用较多的CPU、内存、硬盘资源。Docker不同于VM,只包含应用程序以及依赖库,基于libcontainer运行在宿主机上,并处于一个隔离的环境中,这使得Docker更加轻量高效,启动容器只需几秒钟之内完成。由于Docker轻量、资源占用少,使得Docker可以轻易的应用到构建标准化的应用中。但Docker目前还不够完善,比如隔离效果不如VM,共享宿主机操作系统的一些基础库等;网络配置功能相对简单,主要以桥接方式为主;查看日志也不够方便灵活。

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多;Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。

 

Docker应用场景

  • 应用程序打包和发布

  • 应用程序隔离

  • 持续集成

  • 部署微服务

  • 快速搭建测试环境

  • 提供PaaS产品(平台即服务)

Docker安装

docker版本:

  • 社区版(Community Edition,CE),白嫖版

  • 企业版(Enterprise Edition,EE),收费版

支持平台:

  • Linux(CentOS,Debian,Fedora,Oracle Linux,RHEL,SUSE和Ubuntu)

  • Mac

  • Windows

这里介绍CentOS7.x安装Docker:

官网也有安装步骤:https://docs.docker.com/engine/install/centos/

关闭防火墙:

systemctl stop firewalld

systemctl disabled firewalld

 

关闭selinux:

vim /etc/selinux/config

改成,SELINUX=disabled,然后重启系统。

如果安装其他版本可以先卸载:

 

yum remove docker \                 

​docker-client \                 

docker-client-latest \                 

docker-common \                 

docker-latest \                

 docker-latest-logrotate \                 

docker-logrotate \                 

docker-engine

 

安装依赖包:

yum install -y yum-utils device-mapper-persistent-data lvm2

添加Docker软件包源:

yum-config-manager \    --add-repo \    https://download.docker.com/linux/centos/docker-ce.repo

安装Docker CE:

yum install -y docker-ce

启动Docker服务并设置开机启动:

systemctl start docker systemctl enable docker

修改配置国内镜像仓库:

vi /etc/docker/daemon.json

#添加如下配置

"registry-mirrors": [ "https://registry.docker-cn.com"]

}

重启docker:

systemctl restart docker

至此docker安装完成了,运行命令查看安装的docker的信息:

docker info

 

 


运行一个hello world:

 

Docker指令

镜像管理的常用指令:

 

容器管理常用指令:

 

创建容器常用选项:

 

拉取一个nginx镜像:

docker pull nginx

查看下载的镜像:

docker images

查看镜像的详细信息:

docker image inspect nginx

创建一个容器:

docker container  run -itd nginx

-d :分离模式: 在后台运行

-i :即使没有附加也保持STDIN 打开

-t :分配一个伪终端

查看运行的容器:

docker ps -a

进入容器,在运行的容器中执行命令:

docker container exec -it 6905cb519547  bash

6905cb519547:容器id

运行容器,映射端口80到宿主机端口8080上面:

docker container run -itd -p 8080:80 --name nginx01 nginx

 

 

查看容器负载情况:

docker stats nginx01

查看容器日志:

docker logs nginx01

查看容器的端口:

docker port nginx01

删除所有容器:

docker stop $(docker ps -a -q);docker rm $(docker ps -a -q)

删除所有镜像:

docker rmi -f `docker images -q`

删除已存在的镜像:

docker image rm nginx:lastest

容器日志保存地址:

ls /var/lib/docker/containers/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值