Docker快速入门

Docker是一个用来快速构建、运行和管理应用的工具。  

Docker技术能够避免对服务器环境的依赖,减少复杂的部署流程,有了Docker以后,可以实现一键部署,项目的部署如丝般顺滑,大大减少了运维工作量。

即使你对Linux不熟悉,你也能轻松部署各种常见软件、Java项目。

学习目标:

  • 能利用Docker部署常见软件
  • 能利用Docker打包并部署Java应用
  • 理解Docker数据卷的基本作用
  • 能看懂DockerCompose文件

1. 快速入门

要想让Dockert帮我们安装和部署软件,首先要保证你的机器上有Docker,我们可以在CentOS的虚拟机中安装Docker。

Docker安装的官方文档: 

Install Docker Engine on CentOS | Docker DocsLearn how to install Docker Engine on CentOS. These instructions cover the different installation methods, how to uninstall, and next steps.icon-default.png?t=N7T8https://docs.docker.com/engine/install/centos/首先使用SSH客户端连接到我们的Linux虚拟机:

1.1 卸载旧版

首先如果系统中已经存在旧的Docker,则先卸载:

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

Docker快速入门_第1张图片

1.2 配置Docker的yum库

首先要安装一个yum工具

yum install -y yum-utils

安装成功后,执行命令,配置Docker的yum源: 

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

Docker快速入门_第2张图片1.3 安装Docker

  • 最后,执行命令,安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Docker快速入门_第3张图片

验证Docker是否安装成功,输入:docker -v,查看Docker的安装版本
  • Docker快速入门_第4张图片

docker image命令:用于列出本地系统中存在的Docker镜像! 

  • 在Docker中,镜像是用于运行Docker容器的构建块,镜像是Docker容器的基础,即容器运行时所需要使用的文件系统。 

Docker也是一个服务,需要启动起来! 

1.4 启动和校验

# 启动Docker
systemctl start docker

# 停止Docker
systemctl stop docker

# 重启
systemctl restart docker

# 设置开机自启
systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

输入systemctl enable docker命令,让Docker开启自启: 

Docker快速入门_第5张图片输入systemctl start docker,启动Docker:

1.5 配置镜像加速

  • 这里以阿里云镜像加速为例 

5.1 首先访问阿里云网站,注册一个阿里云账号:

阿里云-计算,为了无法计算的价值阿里云——阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司之一。提供免费试用、云服务器、云数据库、云安全、云企业应用等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。免费备案,7x24小时售后支持,助企业无忧上云。icon-default.png?t=N7T8https://www.aliyun.com/

5.2 开通镜像服务

1. 在首页的产品中,找到阿里云的容器镜像服务:

Docker快速入门_第6张图片

5.3 点击管理控制台
Docker快速入门_第7张图片5.4 找到镜像工具下的镜像加速器
Docker快速入门_第8张图片
具体命令如下: 
# 创建目录
mkdir -p /etc/docker

# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF

# 重新加载配置
systemctl daemon-reload

# 重启Docker
systemctl restart docker

Docker快速入门_第9张图片

2. 部署MySQL

  • Docker部署  VS  传统的Linux部署
回忆,利用传统方式部署MySQL,大概的步骤有:
  • 搜索并下载MySQL安装包
  • 上传至Linux环境
  • 编译和配置环境
  • 安装 

步骤一:先检测系统是否自带安装mysql:yum list installed | grep mysql 

步骤二:删除系统自带的MySQL及其依赖(防止后面安装发生冲突)

  • yum -y remove mysql-libs.x86_64 

而我们利用Docker来安装一个MySQL软件,仅仅需要一步即可: 

首先需要先停掉虚拟机中的MySQL,确保你的虚拟机已经安装Docker,且网络开通的情况下,执行下面的命令即可安装Docker:

  • \ 表示换行的意思! 
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql

Docker快速入门_第10张图片

MySQL安装完毕,通过任意客户端工具即可连接到MySQL! 

大家可以发现,当我们执行命令后,Docker做的第一件事情,是去自行搜索并下载了MySQL,然后会自动运行MySQL,我们完全不用插手,非常方便~! 

而且,这种安装方式你完全不用考虑运行的操作系统环境,它不仅在CentOS系统是这样,在Ubuntu系统、MacOS系统,甚至是安装了WSL的Windows下,都可以使用这条命令来安装MySQL。

要知道,不同操作系统下的安装包、运行环境都是不相同的,如果是手动安装,必须手动解决安装包不同、环境不同、配置不同的问题。

镜像和容器 

  • 当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image),镜像不仅包含应用本身,还包含应用运行时所需要的环境、配置、系统函数库,Docker会在运行镜像时创建一个隔离(的)环境,称为容器(Container)。
  • Docker的镜像能够做到跨平台,忽略不同的操作系统之间的差异!

使用Docker,这些完全不要考虑,就是因为Docker会自行搜索并下载MySQL,注意:这里下载的不是安装包,而是镜像!镜像中不仅包含了MySQL本身,还包含了其运行所需要的环境、配置、系统级函数库,因此它在运行时就有自己独立的环境,就可以跨系统运行,也不需要手动再次配置环境了,这套独立运行的隔离环境我们称为容器。

说明:

  • 镜像:英文是image
  • 容器:英文是container 

因此,Docker安装软件的过程,就是自动搜索下载镜像,然后创建并运行容器的过程!· 

镜像仓库 

Docker会根据命令中的镜像名称自动搜索并下载镜像image,那么问题来了,它是去哪里搜索和下载镜像的呢?这些镜像又是谁制作的呢? 

  • Docker官方提供了一个专门管理、存储镜像的网站,并对外开放了镜像上传、下载的权利。 
  • Docker官方提供了一些基础镜像,然后各大软件公司又在基础镜像的基础上,制作了自家软件的镜像,全部都存放在这个网站,这个网站就成了Docker镜像交流的社区:

https://hub.docker.com/icon-default.png?t=N7T8https://hub.docker.com/基本上我们常用的各种软件都能在这个网站上找到,我们甚至可以自己制作镜像上传上去。

像这种提供存储、管理Docker镜像的服务器,被称为DockerRegistry,可以翻译为镜像仓库。

  • 镜像仓库:存储和管理镜像的平台,Docker官方维护了一个公共的镜像仓库:Docker Hub。 

DockerHub网站是官方仓库,阿里云、华为云会提供一些第三方仓库,我们也可以自己搭建私有的镜像仓库。

官方仓库在国外,下载速度较慢,一般我们都会使用第三方仓库提供的镜像加速功能提高下载速度,而企业内部的机密项目,往往会采用私有镜像仓库。

总之,镜像的来源有两种:
  • 基于官方基础镜像自己制作
  • 直接去DockerRegistry下载 
总结:
  • Docker本身包含一个后台服务,我们可以利用Docker命令告诉Docker服务,帮助我们快速部署指定的应用。
  • Docker服务部署应用时,首先要去搜索并下载应用对应的镜像,然后根据镜像创建并运行容器,应用就部署完成了。 

Docker快速入门_第11张图片

Docker快速入门_第12张图片

Docker是做什么的?
  • Docker可以帮助我们下载应用镜像,创建并运行镜像的容器,从而快速部署应用。
什么是镜像?
  • 将应用所需的函数库、依赖、配置等与应用一起打包得到的就是镜像。
什么是容器?
  • 为每个镜像的应用进程创建的隔离运行环境就是容器。
什么是镜像仓库?
  • 存储和管理镜像的服务就是镜像仓库。
  • DockerHub是目前最大的镜像仓库,其中包含各种常见的应用镜像。

3. 命令解读

利用Docker快速的安装了MySQL,非常的方便,不过我们执行的命令到底是什么意思呢?
Docker快速入门_第13张图片

  • 所有的Docker命令都是以Docker为前缀! 
解读:

docker run -d:创建并运行一个容器(容器是一个隔离环境),-d则是让容器以后台进程运行

--name mysql:-name给容器命名,给容器起个名字叫mysql,方便我们去区分不同的容器,名字必须唯一,当然也可以叫别的

-p 3306:3306:设置端口映射

  • 容器是隔离环境,外界不可访问(容器它也有自己的IP地址),但是可以将宿主机(容器所在的机器称为宿主机)端口映射到容器内的端口当访问宿主机指定端口时,就是在访问容器内的端口了。
  • 容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内的端口一定是3306而宿主机端口则可以任意指定,一般与容器内保持一致。
  • 格式:-p 宿主机端口:容器内端口,示例中就是将宿主机的3306端口映射到容器内的3306端口 

Docker快速入门_第14张图片

  • MySQL客户端直连容器的端口会被拒绝访问! 

docker  inspect   容器名称:该命令将返回JSON格式的容器的详细信息,例如容器的ID、名称、状态、IP地址等。

Docker快速入门_第15张图片Docker快速入门_第16张图片

​​​-e TZ=Asia/Shanghai

-e MYSQL_ROOT_PASSWORD=123

  • 格式:-e KEY=VALUE,是设置环境变量,配置容器内进程运行时的一些参数KEY和VALUE都由容器内进程决定
  • 案例中,TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123是设置MySQL默认密码

mysql:设置镜像名称 或 指定运行的镜像名称,Docker会根据这个名字搜索并下载镜像

  • 镜像的名称不是随意的,而是要到DockerRegistry中寻找镜像运行时的配置也不是随意的,要参考镜像的帮助文档,这些在DockerHub网站或者软件的官方网站中都能找到。
  • 镜像名称结构的格式:REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是镜像的版本号
  • 在未指定TAG版本号的情况下,默认是latest,代表最新版本的镜像,也就是mysql:latest

docker  ps是一个Docker命令,用于列出正在运行的Docker容器的信息:

  • CONTAINER ID(容器ID):每个容器都有唯一的ID。
  • IMAGE(镜像):容器所使用的镜像
  • COMMAND(命令):容器启动时执行的命令
  • CREATED(创建时间):容器的创建时间
  • STATUS(状态):容器的运行状态 
  • PORTS(端口映射):容器内部服务与宿主机之间的端口映射关系

如果需要显示所有容器(包括已经停止的容器),可以使用docker ps -a命令!

  • Nginx容器的默认端口是80端口! 

 

你可能感兴趣的:(docker,容器,运维)