Docker系列:Docker的简介与使用

171 阅读7分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

作者平台:

本文一共2215字,预计阅读7分钟

前言

一个系统从开发到上线与用户见面,中间有很多的环节,一般来说开发主要做的就是负责开发产品,而产品的部署主要是由运维负责。作为开发和运维之间的协作我们需要关心很多东西,比如版本信息、兼容性、环境等等。

在Docker出现之前在服务器配置一个系统和应用的运行环境,往往需要安装各种各样的软件,比如jdk、Tomcat、MySQL等等。

这些配置和软件的安装不仅麻烦,而且还不能跨平台。如果是在 Windows服务器上安装的这些环境,那么在Linux上又得重新安装。

当然这些麻烦事的前提是docker还没有出现,那么docker有什么神奇的功能呢?Docker目前在很多公司的招聘职位的jd上都是要求技能之一,所以掌握Docker也是找到好工作的加分项,今天一起简单学习下!

Docker是什么

1、Docker是一个基于Go语言开发并且遵从Apache2.0协议的一款开源的应用容器引擎。

2、Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。类似于虚拟机技术,但不是虚拟机,它实现了虚拟机中的资源隔离,它的性能远远高于虚拟机

3、容器是完全使用沙箱机制,各个容器之间不会有任何接口,更重要的是容器性能开销极低。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是可以通过对应用组件的封装、分发、部署、运行等生命周期的管理, 使应用以及运行环境能够做到“一次封装,到处运行”的目的。‍

Docker的几个重要概念

要想弄清楚docker,必须先明白docker中的三个重要的概念:

镜像(Image):Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数,比如匿名卷、环境变量、用户等;镜像不包含任何动态数据,其内容在构建之后也不会被改变。比如mysql镜像就包含了一套完整的mysql最小系统的文件系统。

容器(Container):镜像和容器的关系,可以理解为类和对象的关系,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。Docker镜像是Docker容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。

仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker的简单使用

更多Docker的相关知识可以移步Docker官网:www.docker.com,以及Docker文档:https://docs.docke…

本文安装的步骤是在Linux平台。

如果需要卸载旧版本可以执行下述命令:

sudo dnf remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

安装docker,需要先安装docker的依赖包,然后安装docker:

sudo yum install -y yum-utils
sudo yum install docker-ce docker-ce-cli containerd.io

输入下面命令查看版本信息:

docker -v

启动docker:

sudo systemctl start docker

关闭docker:

sudo systemctl stop docker

重启docker:

sudo systemctl restart docker

设置docker随服务启动而自启动

sudo systemctl enable docker

查看docker镜像列表:

docker images

每次拉取镜像之前,可以搜索镜像:

docker search 镜像名

拉取镜像:

docker pull 镜像名 

运行镜像:

docker run 镜像名

如果需要删除镜像,可以执行下述命令:

#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可 
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像  -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)

但是前提是当前镜像没有被任何容器使用才可以删除。

查看正在运行容器列表命令:

docker ps

docker ps -a

上面命令是查看所有容器,包含正在运行和已经停止的。

如果需要进入容器内部,修改其配置文件,可以使用下述命令:

docker exec -it 容器名/容器ID /bin/bash

退出则可以使用:

exit

或者:

Ctrl + p + q

卸载docker:

systemctl stop docker

yum -y remove docker-ce

rm -rf /var/lib/docker

Docker的优点和用途

传统的虚拟机就是一个普通文件,当我们不需要的时候就可以删掉,并且是对其他部分没有任何影响的。但是它仍然存在比如资源占用多、冗余步骤多、启动慢这类的缺点。

和传统虚拟化方式比较,docker具有更快速的应用交付和部署、更便捷的升级和扩缩容、更简单的系统运维以及更高效的计算资源利用的优点。

因为Docker 提供轻量的虚拟化,能够从Docker获得一个额外抽象层,并且在单台机器上运行多个Docker容器,每个容器里面都有一个微服务或独立的应用,比如可以将redis运行在一个Docker,而MySQL运行在另外一个Docker,两者可以运行在一个或者多个服务器上。

Docker的出现使得项目的部署和运维的工作量和效率大大提高,主要体现在以下的几个方面:

简化配置:这也是Docker初始目的,docker能将环境和配置放入代码然后部署,同样的Docker配置能够在各种环境中使用。

快速部署:Docker可以通过创建流程的容器,无须重启操作系统,能够快速启动关闭。

代码管道化管理:对代码以流式管道化进行管理,从开发者的机器到生产环境机器这个流程中都能有效管理,从而实现从开发到部署实现流畅发布。

应用隔离:将多个应用服务部署在多个Docker中能实现应用之间的解耦。

服务合并:Docker能以更加紧密资源提供更有效的服务合并,以降低开销减少资源浪费。

即可以理解为:Docker解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

总结

这篇文章主要对于docker进行简单介绍, 什么是docker,docker的用途和优点,以及如何安装docker!自己也是一个学习的过程,所以如有任何问题或者不正确的地方,欢迎指正讨论!更多关于docker学习的内容后续分享!

相关推荐