写点什么

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

作者:Bug终结者
  • 2022 年 8 月 14 日
    河北
  • 本文字数:4287 字

    阅读完需:约 14 分钟

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

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



@[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 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的或操作系统的机器上,也可以实现。容器是完全使用机制,相互之间不会有任何接口。


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# 启动dockersudo systemctl restart docker
复制代码


新建文件夹



配置内容,并重启服务



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

✅测试启动 Docker

查看 Docker 启动状态


systemctl status docker
复制代码



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



运行 hello-world 镜像


docker run hello-world
复制代码



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


下载完毕后查看镜像文件


docker images
复制代码


五、Docker 常用命令

Docker常用API

😀基础命令

docker version # 查看docker版本
docker info # 查看docker系统信息,包括镜像和容器的数量
docker 命令 --help # 查看命令的帮助文档,可选参数
docker COMMAND --help
复制代码

💻镜像命令

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 mysqlUsing default tag: latest    # 下载最新版本MySQLlatest: Pulling from library/mysql  72a69066d2fe: Pull complete    # 分层下载,docker image的核心-联合文件系统93619dbc5b36: Pull complete  99da31dd6142: Pull complete626033c43d70: Pull complete37d5d7efb64e: Pull completeac563158d721: Pull completed2ba16033dad: Pull complete688ba7d5c01a: Pull complete00e060b6d11d: Pull complete1c04857f594f: Pull complete4d7cfa90e6ea: Pull completee0431212d27d: Pull completeDigest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709Status: Downloaded newer image for mysql:latestdocker.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 rm 容器id                 #删除指定的容器,不能删除正在运行的容器,强制删除使用 rm -fdocker rm -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 容器iddocker 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 入门 -- 阿里云服务器环境下安装 Docker 简单的概述,云原生是趋势,Docker 容器是一个非常好的工具,独立部署,不依赖于 Linux,简化了我们的开发,更高效率的开发,一次部署,提交镜像,再次直接拉取执行即可,省去了不必要的部署工作,可谓是开发利器


如果这篇【文章】有帮助到你,希望可以给【Bug 终结者】点个赞👍,创作不易,如果有对【后端技术】、【前端领域】感兴趣的小可爱,也欢迎关注❤️❤️❤️ 【Bug 终结者】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💝💝💝!

发布于: 刚刚阅读数: 5
用户头像

Bug终结者

关注

励志成为一个优秀的开发者~ 2021.12.09 加入

星星之火,可以燎原

评论

发布
暂无评论
【云原生】Docker入门 -- 阿里云服务器环境下安装Docker_Docker_Bug终结者_InfoQ写作社区