【云原生】Docker入门 -- 阿里云服务器Linux环境下安装Docker

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【云原生】Docker入门 -- 阿里云服务器Linux环境下安装Docker
📢📢📢📣📣📣

哈喽!大家好,我是【 Bug 终结者,【CSDN新星创作者】🏆,阿里云技术博主🏆,51CTO人气博主🏆,INfoQ写作专家🏆 <br/>
一位上进心十足,拥有极强学习力的【 Java领域博主】😜😜😜 <br/>
🏅【Bug 终结者】博客的领域是【面向后端技术】的学习,未来会持续更新更多的【后端技术】以及【学习心得】。 偶尔会分享些前端基础知识,会更新实战项目,面向企业级开发应用
🏅 如果有对【后端技术】、【前端领域】感兴趣的【小可爱】,欢迎关注【Bug 终结者】💞💞💞


❤️❤️❤️ 感谢各位大可爱小可爱! ❤️❤️❤️

在这里插入图片描述
@[TOC]

一、什么是云原生?

技术的变革,一定是思想先行,云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。

Pivotal公司的Matt Stine于2013年首次提出云原生(CloudNative)的概念;2015年,云原生刚推广时,Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、扛脆弱性;到了2017年,Matt Stine在接受InfoQ采访时又改了口风,将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质;而Pivotal最新官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器

在这里插入图片描述

云原生是一种构建和运行程序的方法,是一套技术体系和方法论!

二、什么是Docker?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的 镜像中,然后发布到任何流行的 LinuxWindows操作系统的机器上,也可以实现 虚拟化。容器是完全使用 沙箱机制,相互之间不会有任何接口。 [1]

Docker官网

Docker是一个开源的应用容器引擎

三、Docker的好处

⌚模块化

Docker 容器化方法非常注重在不停止整个应用的情况下,单独截取部分应用进行更新或修复的能力 除了这种基于微服务的方法,您还可以采用与面向服务的架构(SOA)类似的使用方法,在多个应用间共享进程。

⌚层和镜像版本控制

每个 Docker 镜像文件都包含多个层。这些层组合在一起,构成单个镜像 每当镜像发生改变时,就会创建一个新的镜像层。用户每次发出命令(例如 runcopy)时,都会创建一个新的镜像层。

Docker 重复使用这些层来构建新容器,借此帮助加快流程构建。镜像之间会共享中间变化,从而进一步提升速度、规模以及效率。版本控制是镜像层本身自带的能力。每次发生新的更改时,您大都会获得一个内置的更改日志,实现对容器镜像的全盘管控。

⏰回滚

回滚也许是层最值得一提的功能。每个镜像都拥有多个层。举例而言,如果您不喜欢迭代后的镜像版本,完全可以通过回滚,返回之前的版本。这一功能还支持敏捷开发方法,帮助持续实施集成和部署(CI/CD),使其在工具层面成为一种现实。

⏰快速部署

启动和运行新硬件、实施部署并投入使用,这在过去一般需要数天时间。投入的心力和成本往往也让人不堪重负。基于 Docker 的容器可将部署时间缩短到几秒。通过为每个进程构建容器,您可以快速将这些类似进程应用到新的应用程序中。而且,由于无需启动操作系统即可添加或移动容器,因此大幅缩短了部署时间。除此之外,得益于这种部署速度,您可以轻松无虞、经济高效地创建和销毁容器创建的数据。

因此,Docker 技术是一种更加精细可控基于微服务的技术可为企业提供更高的效率价值

四、Linux下安装Docker

🖥️环境准备

查看Linux系统内核

uname -r

在这里插入图片描述

查看系统配置

cat /etc/os-release

在这里插入图片描述

系统为CentOS 7 最好!

♻️安装Docker

先查看本机是否存在Docker,删除旧版本Docker

查看docker 版本

docker version

在这里插入图片描述

没有docker,我们执行以下命令,删除残余文件

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

进入Linux根目录,安装Docker

# 安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定的存储库。
yum install -y yum-utils

# 安装阿里云配置
yum-config-manager \
     --add-repo \
     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker 最新引擎

yum install docker-ce docker-ce-cli containerd.io

在这里插入图片描述

输入y确认即可!

🗳️配置阿里云加速镜像

打开阿里云控制台,弹性计算 --> 容器与镜像服务

在这里插入图片描述

打开之后选择 镜像工具 --> 镜像加速器,复制内容即可
在这里插入图片描述


进入Linux服务器根据步骤配置镜像加速器
# 创建docker文件夹
sudo mkdir -p /etc/docker

# 打开文件并配置内容
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://pfjide5p.mirror.aliyuncs.com"]
}
EOF

# 重启服务
sudo systemctl daemon-reload
# 启动docker
sudo systemctl restart docker

新建文件夹

在这里插入图片描述

配置内容,并重启服务

在这里插入图片描述

根据步骤一步步创建即可!

✅测试启动Docker

查看Docker启动状态

systemctl status docker

在这里插入图片描述

查看Dockers版本,没有发生错误就是启动成功!

在这里插入图片描述

运行 hello-world镜像

docker run hello-world

在这里插入图片描述

可以看到没有在本地没有找到镜像 hello-world,docker会去远程仓库 DockerHub下载镜像

下载完毕后查看镜像文件

docker images

在这里插入图片描述

五、卸载Docker

# 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
# 删除资源  . /var/lib/docker是docker的默认工作路径
rm -rf /var/lib/docker

# 卸载docker
sudo yum remove docker

六、Docker常用命令

Docker常用API

✨基础命令

docker version # 查看docker版本

docker info # 查看docker系统信息,包括镜像和容器的数量

docker 命令 --help # 查看命令的帮助文档,可选参数

docker COMMAND --help 

systemctl status docker # 查看Docker启动状态

# 关闭docker时如果提示docker.socket 那就执行此命令再关闭docker
sudo systemctl stop docker.socket # 停止docker连接,很人性化,自动启动

systemctl stop docker # 关闭Docker

systemctl start docker # 启动docker

✨镜像命令

DockerHub上查看镜像文件详细信息!

查看镜像文件
docker images

在这里插入图片描述

REPOSITORY    # 镜像的仓库源

TAG # 镜像的标签

IMAGE ID # 镜像id

CREATED # 镜像的创建时间

SIZE # 镜像的大小

### 可选的参数
-a/-all    # 列出所有的镜像
-q/--quiet # 只显示镜像的id
搜索Docker镜像
docker search

在这里插入图片描述

# 可选的参数
Search the Docker Hub for images

Options:
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print search using a Go template
      --limit int       Max number of search results (default 25)
      --no-trunc        Don't truncate output

我们可以根据stars数来过滤镜像

# 搜索mysql镜像stars数大于5000的
docker search mysql --filter=STARS=5000

在这里插入图片描述

下载镜像
docker pull 镜像名    # 下载最新镜像
docker pull 镜像名:5    # 下载指定版本镜像

在这里插入图片描述

[root@iZ2zejargdc3umcg1is2mcZ /]# docker pull mysql
Using default tag: latest        # 下载最新版本MySQL
latest: Pulling from library/mysql    
72a69066d2fe: Pull complete        # 分层下载,docker image的核心-联合文件系统
93619dbc5b36: Pull complete    
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
删除镜像
# 根据镜像id删除指定镜像
docker rmi -f 镜像id

# 根据镜像id删除多个镜像
docker rmi -f 镜像id 镜像id 镜像id

# 删除全部的镜像
docker rmi -f $(docker images -aq)

✨容器命令

拉取一个CentOS镜像
docker pull centos

运行容器命令

docker run 【参数】 image

#参数说明
--name="名字"           指定容器名字
-d                     后台方式运行
-it                    使用交互方式运行,进入容器查看内容
-p                     指定容器的端口
(
-p ip:主机端口:容器端口  配置主机端口映射到容器端口
-p 主机端口:容器端口
-p 容器端口
)
-P                     随机指定端口(大写的P)

运行并进入容器centos

docker run -it centos /bin/bash

在这里插入图片描述

退出容器

exit

在这里插入图片描述

Linux 内有安装了一个centos,区分了系统文件,文件颜色不同

我们可以看到,使用exit退出会直接停止容器,那怎么才能不停止容器退出呢

ctrl + p + q    # 退出容器但不停止容器

列出运行过的容器命令

docker ps
      # 列出当前正在运行的容器
-a   # 列出所有容器的运行记录
-n=? # 显示最近创建的n个容器
-q   # 只显示容器的编号

删除容器命令

docker rmi 容器id                 #删除指定的容器,不能删除正在运行的容器,强制删除使用 rm -f
docker rmi -f $(docker ps -aq)   #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器

启动和停止容器命令

docker start 容器id          #启动容器
docker restart 容器id        #重启容器
docker stop 容器id           #停止当前运行的容器
docker kill 容器id           #强制停止当前容器

✨其它常用命令

查看容器日志
docker logs --help

docker logs -tf 容器id
docker logs --tail number 容器id #num为要显示的日志条数

# docker容器后台运行,必须要有一个前台的进程,否则会自动停止

编写shell脚本循环执行,使得centos容器保持运行状态

docker run -d centos /bin/sh -c "while:true; do echo xiaowang; sellp 2; done"

在这里插入图片描述

查看容器中的进程信息
docker top 容器id

在这里插入图片描述

查看容器元数据
docker inspect

在这里插入图片描述

进入当前正在运行的容器
docker exec -it 容器id /bin/bash    # 进入容器新开终端,可操作

docker attach 容器id  # 进入当前容器正在执行的进程,不会启动新的线程

在这里插入图片描述

拷贝文件
#拷贝容器的文件到主机中
docker cp 容器id:容器内路径  目的主机路径

#拷贝宿主机的文件到容器中
docker cp 目的主机路径 容器id:容器内路径

在这里插入图片描述

Docker命令图解

在这里插入图片描述

⛵小结

以上就是【Bug 终结者】对 【云原生】Docker入门 -- Linux环境下安装Docker Docker是一个非常好的容器工具,使用它,可以大大的提高系统的性能,DevOps,开发,运维,测试,Linux下安装Docker,我们将程序部署在Docker容器,可减少不必要的麻烦,提高性能,效率!

如果这篇【文章】有帮助到你,希望可以给【 Bug 终结者】点个赞👍,创作不易,如果有对【 后端技术】、【 前端领域】感兴趣的小可爱,也欢迎关注❤️❤️❤️ 【 Bug 终结者】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💝💝💝!
相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
26天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
84 2
|
21天前
|
缓存 Linux Docker
【最新版正确姿势】Docker安装教程(简单几步即可完成)
之前的老版本Docker安装教程已经发生了变化,本文分享了Docker最新版安装教程,其他操作系统版本也可以参考官 方的其他安装版本文档。
657 2
【最新版正确姿势】Docker安装教程(简单几步即可完成)
|
11天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
31 3
|
18天前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
25 4
|
20天前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
28天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
67 3
|
28天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
35 3
|
28天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
21天前
|
Kubernetes Linux Docker
容器化技术Docker入门与实践
容器化技术Docker入门与实践
44 0
|
23天前
|
Kubernetes Docker 容器
掌握Docker容器化技术:从入门到实战
掌握Docker容器化技术:从入门到实战
25 0