【玩转Docker容器 1】Docker的详解及安装

1,783 阅读9分钟

@TOC


推荐个人Docker文章,讲的非常详细

【玩转Docker容器 1】Docker的详解及安装
【玩转Docker容器 2】基于Docker一分钟搭建完 Jdk、Mysql、Nginx、Redis、Tomcat环境
【玩转Docker容器 3】基于Docker部署SpringBoot项目
【玩转Docker容器 4】基于Docker搭建Docker私服,以及如何使用Docker私服详解
【玩转Docker容器 5】基于Docker搭建Maven私服,以及项目如何使用Maven私服详解
【玩转Docker容器 6】基于Docker构建GitLab管理代码
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、测试、监控项目

1.Docker-简介

Docker官方网址: docs.docker.com/ 英文地址 Docker中文网址: www.docker.org.cn/ 中文地址

Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotClouw公司。Docker 自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐断形成了围Docker的生态体系。dotCloud 公司后来也改名为Docker Ine。 在这里插入图片描述 Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。

2.为什么要使用Docker

在我们开发和运维的过程中,我们经常要给Linux服务器上安装各种各样的环境,比如我们要安装MySQL、Redis、Tomcat等环境,那么以及我们是如何给Linux服务器安装这些环境呢?如果安装MySQL我们就要去MySQL官网下载MySQL的linux版安装包,安装好后再进行相关的环境配置,然后使用类似的方式安装Redis、Tomcat等环境,如此Linux中环境的搭建就暂告一段落。有一天,如果我们又要去另外一台linux服务器上安装MySQL、Redis、Tomcat等环境,那么我们又要老路子走一遍,这样还是太麻烦了。那么有没有更便捷的方式呢?有,那就是使用Docker。

Docker它是支持将你已经安装并配置好后的环境(如MySQL),打包进行一个镜像文件如MySQL-Docker镜像。比如张三将自己安装并配置好的MySQL打包成一个镜像文件,如果李四想给自己的Linux服务器安装MySQL,那么他只要在自己的Linux服务器安装了Docker,然后使用Docker运行张三打包的MySQL镜像文件,最后产生MySQL容器。使用这种方式我们就可以快速将Linux服务器的环境给搭建好。

3.总结

Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;

运行中的这个镜像称为容器,容器启动是非常快速的。而且现在各大云计算平台都支持Docker容器技术,如百度云,阿里云,腾讯云。所以我们很有必要将Docker学习一下。

总之Docker实现可以方便快捷安装环境,以及快捷的打包、测试以及部署应用程序

例如使用Docker可实现秒级的安装mysql、jdk等环境,例如我之前的文章安装mysql等是非常复杂的,要配置各种东西,使用Docker可完全简化安装(自定义的配置就需要自己动手啦)

4.Docker-核心概念

在这里插入图片描述 1.docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);

如上图所示,local host是本机,即在本机安装Docker程序,这个本机就为docker主机,另外我们也可以在remote host远程机器上安装Docker程序。Docker主机是可以运行Docker镜像生成Docker容器。

2.docker客户端(Client):客户端通过命令行或其他工具连接docker主机进行操作;类似于我们使用SQLyog客户端连接MySQL服务器进行操作MySQL。

3.docker仓库(Registry):用来保存各种打包好的软件镜像;

4.docker镜像(Images):软件打包好的镜像;放在docker仓库中;

5.docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用。

基本流程:如Docker仓库中有张三配置好后的MySQL、Nginx、Tomcat、Redis镜像,这时我们把这些个镜像下载到local host本机,然后使用Docker命令去行动这些个镜像,镜像运行完后就会生成对应的容器。比如我们到Docker仓库中下载MySQL镜像,到local host本机,然后再使用Docker命令运行这个MySQL镜像,运行完后就会启动一个MySQL容器(就好比启动了一个MySQL)。 docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用。

5.Docker的使用步骤

  1. 安装Docker

  2. 去Docker仓库找到这个软件对应的镜像(等于应用市场,下载安装包) (可以是公共镜像也可以是自己私有的镜像文件);

  3. 使用Docker运行这个镜像,这个镜像就会生成一个Docker容器(等于安装软件) (每个容器是独立的,等于每个软件都是独立的)

  4. 对容器的启动停止就是对软件的启动停止;

  5. 或者创建自定义项目镜像,上传至Docker Bub仓库去,给自己或别人下次使用

总之Docker的目的就是一次构造处处运行

6.Docker架构

在这里插入图片描述 DOCKER-HOST(宿主机,一般为Linux) 可通与 Docker客户端之间进行通信。

Client( Docker客户端) Docker客户端是 Docker的用户界面,它可以接受用户命令与 Docker daemon通信。图中, docker build、docker pull、docker run等都是 Docker的相关命令。

Images( Docker镜像) Docker镜像是一个只读模板,它包含创建 Docker容器的说明。它和系统安装光盘有点像,使用系统安装光盘可以安装系统,同理,使用Docker镜像可以运行 Docker镜像中的程序。

Containers(容器集合,里面包含多个容器) 容器是镜像的运行实例,一个容器可以称为一个应用程序

Registry Docker Registry是一个集中存储与分发镜像的服务。可以称之为应用市场,构建完 Docker镜像后,就可在当前宿主机上运行。但如果想要在其他机器上运行这个镜像,就需要手动复制。此时可借助 Docker Registry来避免镜像的手动复制。

一个 Docker Registry可包含多个 Docker仓库,每个仓库有可包含多个镜像(Images)标签,每个镜像(Images)又可运行成一个容器示例。


2.Linux上安装docker

Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到

Docker 要求 CentOS 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

1、通过 uname -r 命令查看你当前的内核版本

uname -r

在这里插入图片描述

2、 使用 root 权限登录,一定要是root权限。确保 yum 包更新到最新

yum -y update

这个有可能要等一会 问题不大 在这里插入图片描述

3、 如果安装过旧版本的话,先卸载旧版本(没有跳过)

yum remove docker docker-common docker-selinux docker-engine

4、 安装依赖

为了防止报错,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

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

在这里插入图片描述

5、 设置yum源

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

在这里插入图片描述

6、 可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

在这里插入图片描述

7、 安装docker

sudo yum install -y docker-ce    		#安装的是最新稳定版

在这里插入图片描述

8、 启动并加入开机启动

systemctl start docker
systemctl enable docker

在这里插入图片描述

9、 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

docker version

在这里插入图片描述 成功!

3.Docker常用命令

Docker基本命令

docker version (查看版本) systemctl start docker (启动Docker) systemctl restart docker (重启Docker) systemctl stop docker (停止Docker)

卸载docker 1、查询docker安装过的包: yum list installed | grep docker 2、删除安装包 yum remove docker-ce.x86_64 docker-ce-cli.x86_64 -y 3、删除镜像/容器等 rm -rf /var/lib/docker 在这里插入图片描述

Docker镜像基本命令

docker search 镜像名称(搜索镜像,去docker hub上检索镜像的详细信息) docker pull 镜像名:tag (拉去镜像,:tag是可选的,tag为版本,默认是latest) docker images (查看镜像文件) docker rmi 镜像id (删除镜像)

Docker容器基本命令

docker ps (查看正在运行的容器) docker ps –a (查看所有的容器) docker rm 容器id (删除容器) docker logs 容器id/容器名称 (查看容器运行日志) docker exec -it 容器id bash (进入容器) exit (退出容器)

Docker的启动命令,docker run 与docker start的区别

注释:docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)。

docker run --name 自定义容器名 -d 镜像模板 (示例:docker run --name redis -d redis。 -d 表示为后台运行,不加-d默认为前台启动) docker stop 容器id 或者容器名称 (停止当前你运行的容器) docker start 容器id 或者容器名称(启动容器)

Docker 的端口映射

端口映射,因为Docker容器和Linux系统的端口一个在内一个在外,所以要映射到外部Linux系统的端口上,如果不映射就只能在容器中使用

-p 6379:6379 示例:docker run -d -p 6379:6379 --name redis

第一个端口号为Linux的端口号,第二个端口号为容器内部的端口号