【云原生 · Docker】入门篇:安装、镜像加速

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【云原生 · Docker】入门篇:安装、镜像加速

Docker是什么

       Docker 是一个基于Go语言实现的开源的容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上

Docker网站

官网:Docker: Accelerated, Containerized Application Development

中文网站:docker中文社区,docker帮助,docker手册,docker教程,docker安装手册 - docker中文社区

Docker概念

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

       Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

       容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

       Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)。

打包:把服务运行所需的依赖、第三方库、打包成一个安装包。

分发:把你打包好的安装包上传到一个镜像仓库,其他人可以很方便的安装部署。

部署:使用分发下来的安装包,一条命令就可以运行起来,自动模拟出一模一样的运行环境,不管是在 Windows/Mac/Linux。

Docker的应用场景

1. Web 应用的自动化打包和发布。

2. 自动化测试和持续集成、发布。

3. 在服务型环境中部署和调整数据库或其他的后台应用。

4. 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Docker 的优点

       Docker 是一个用于开发,交付和运行应用程序的开放平台。

       Docker 能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,可以与管理应用程序相同的方式来管理基础架构。

       通过利用 Docker 的方法来快速交付,测试和部署代码,大大减少编写代码和在生产环境中运行代码之间的延迟。

1、快速,一致地交付您的应用程序

       Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:

       您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。

2、响应式部署和扩展 Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。

3、在同一硬件上运行更多工作负载 Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。

Docker 安装

适用版本

Docker 支持以下的 64 位 CentOS 版本:

CentOS 7

CentOS 8

安装方法

一、官方脚本安装

       两种安装方法任选其一即可。安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

         国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

二、手动安装

(1)卸载旧版本 较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。

[root@doc ~]# yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

(2)安装 Docker Engine-Community

       安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

[root@doc ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

1. 安装源

       使用官方源地址,因为官方源比较慢,所以这里使用了【阿里源】

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

可以选择国内的一些源地址:

阿里云

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

清华大学源

yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

2. 安装 Docker Engine-Community

       安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本。

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

(1)默认yum安装docker最新版本,如果希望选择某个旧版本安装,请在安装时写上相应的版本号。

(2)Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。

(3)要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装。

3. 查找版本并安装

(1)列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。

1. [root@doc ~]# yum list docker-ce --showduplicates | sort -r
2. 已加载插件:fastestmirror, langpacks
3. 已安装的软件包
4. 可安装的软件包
5.  * updates: mirrors.aliyun.com
6. Loading mirror speeds from cached hostfile
7.  * extras: mirrors.aliyun.com
8. docker-ce.x86_64            3:23.0.1-1.el7                     docker-ce-stable 
9. docker-ce.x86_64            3:23.0.1-1.el7                     @docker-ce-stable
10. docker-ce.x86_64            3:23.0.0-1.el7                     docker-ce-stable
11. #省略部分内容

(2)通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-23.0.1。

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

4. 启动 Docker

[root@doc ~]# systemctl start docker

       通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community ,也可以查看版本号。

1. [root@doc ~]# docker run hello-world
2. [root@doc ~]# docker -v
3. Docker version 23.0.1, build a5ee5b1

5. 卸载 docker 删除安装包(这一步知道就好,不要操作,否则因为下面的内容需要重新安装docker)

[root@doc ~]# yum -y remove docker-ce

删除镜像、容器、配置文件等内容:

[root@doc ~]# rm -rf /var/lib/docker

Docker的基本概念

       镜像image: 容器运行的基石,一个镜像代表一个软件,只读;

       容器container: 基于某个镜像运行一次之后生成的程序实例,也称为一个容器,可读写;

       仓库repository: 指的是放置image(镜像)的地方,默认指定的是docker官方的仓库:dockerhub仓库地址:Docker

配置Docker镜像加速

       dockerhub是在国外,我们在下载镜像的时候,速度非常慢,且经常会出现timeout的情况,因此,我们这里决定配置一个加速器,能够帮组我们快速的下载镜像,常用的加速器有很多,这里我们说两个。

1.阿里云镜像加速器

       除了上述方法,还可以使用阿里云镜像加速器,当然,前提需要每个人都申请注册一个阿里云账号。注册成功后,在阿里云官网上,找到容器镜像服务。

1. sudo mkdir -p /etc/docker
2. sudo tee /etc/docker/daemon.json <<-'EOF'
3. {
4. "registry-mirrors": ["https://a5jmai7s.mirror.aliyuncs.com"]
5. }
6. EOF
7. sudo systemctl daemon-reload
8. sudo systemctl restart docker

2.道云加速器

       道云官方下载地址:DaoCloud | Docker 极速下载

       执行下面命令在/etc/目录下,创建一个docker的目录,且在此目录下生产2个文件:一个是daemon.json ,key.json。

1. [root@doc ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
2. [root@doc ~]# systemctl daemon-reload
3. [root@doc ~]# systemctl restart docker
4. [root@doc ~]# docker info        #查看docker系统信息
5. #省略部分内容

Docker使用

1. [root@doc ~]# docker pull nginx      #下载nginx镜像
2. #省略部分内容
3. [root@doc ~]# docker pull mysql:5.7    #下载mysql镜像
4. #省略部分内容
5. [root@doc ~]# docker images        #查看本地镜像
6. REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
7. mysql         5.7       0018a8d83892   4 days ago      455MB
8. nginx         latest    904b8cb13b93   11 days ago     142MB
9. hello-world   latest    feb5d9fea6a5   17 months ago   13.3kB

       ( 或复制镜像文件到虚拟机:docker load -i 镜像文件)

1、使用docker部署nginx服务。

1. [root@doc ~]# docker run -itd --name web1 -p 8080:80 nginx     #部署web1
2. b73d7a86a5bb27e0f1af1e5e5574319523cce923fac9ac03d7258cbae761e6b0
3. [root@doc ~]# docker run -itd --name web2 -p 8081:80 nginx     #部署web2
4. 60439081eebcb12bc6b56614b685dde8e0e28194910eca597e3835f39ba0af0f
5. [root@doc ~]# docker run -itd --name web3 -p 8082:80 nginx     #部署web3
6. 0ba96531f6b36a5326bf949ecd8a7316a163f5c0207258f42c8685a50f4bfd40

交互式进入容器

1. [root@doc ~]# docker exec -it web1 /bin/bash
2. root@b73d7a86a5bb:/# ls
3. bin   docker-entrypoint.d   home   media  proc sbin  tmp
4. boot  docker-entrypoint.sh  lib    mnt   root  srv   usr
5. dev   etc        lib64  opt    run sys   var
6. root@b73d7a86a5bb:/# exit      #退出
7. exit

2、使用docker部署MySQL服务。

1. [root@doc ~]# docker run -d --name test_sql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 mysql:5.7      #部署mysql
2. 3805d896e81790865ddb02e64a4510c3569b9b41302ba5a3cadb9b853e153884

1. 查看镜像

[root@doc ~]# docker images

2. 查看容器

[root@doc ~]# docker ps -a

3. 导入本地镜像文件

[root@doc ~]# docker load -i mysql5.7.tar

例:使用save打包mysql镜像,删除docker中的mysql镜像并再次导入打包后的镜像

1. [root@doc ~]# ls
2. anaconda-ks.cfg  initial-setup-ks.cfg  perl5
3. [root@doc ~]# docker images    #查看镜像
4. REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
5. mysql         5.7       0018a8d83892   4 days ago      455MB
6. nginx         latest    904b8cb13b93   11 days ago     142MB
7. hello-world   latest    feb5d9fea6a5   17 months ago   13.3kB
8. [root@doc ~]# docker save -o mysql-1.0.tar mysql:5.7 #打包到本地root下
9. [root@doc ~]# ls
10. anaconda-ks.cfg  initial-setup-ks.cfg  mysql-1.0.tar  perl5
11. [root@doc ~]# docker rmi -f 0018a8d83892        #强制删除mysql(后面数字为镜像id)
12. Untagged: mysql:5.7
13. Untagged: mysql@sha256:9202fc6bc8fa63615e6bfc0049fc660f712d164220c5c54d86519870c305ea48
14. Deleted: sha256:0018a8d838923d94318aa8dd3195510226b31540901a6f4c643aacec69f7ab62
15. [root@doc ~]# docker images               #再次查看镜像已经删除mysql镜像
16. REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
17. nginx         latest    904b8cb13b93   11 days ago     142MB
18. hello-world   latest    feb5d9fea6a5   17 months ago   13.3kB
19. [root@doc ~]# docker load -i mysql-1.0.tar        #上传镜像
20. Loaded image: mysql:5.7
21. [root@doc ~]# docker images               #查看docker镜像已经上传
22. REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
23. mysql         5.7       0018a8d83892   4 days ago      455MB
24. nginx         latest    904b8cb13b93   11 days ago     142MB
25. hello-world   latest    feb5d9fea6a5   17 months ago   13.3kB

       总结:本篇主要讲的是安装以及加速等,本篇很适合小白从头学起。后续会持续更新,下一篇将根据docker的基础命令讲解,我们从无到有。对docker有兴趣的小伙伴可以点个关注,一起学习、进步。


相关文章
|
9天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
38 2
|
7天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
8天前
|
运维 Kubernetes Cloud Native
云原生技术入门及实践
【10月更文挑战第39天】在数字化浪潮的推动下,云原生技术应运而生,它不仅仅是一种技术趋势,更是企业数字化转型的关键。本文将带你走进云原生的世界,从基础概念到实际操作,一步步揭示云原生的魅力和价值。通过实例分析,我们将深入探讨如何利用云原生技术提升业务灵活性、降低成本并加速创新。无论你是云原生技术的初学者还是希望深化理解的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
9天前
|
Cloud Native 持续交付 云计算
云原生技术入门与实践
【10月更文挑战第37天】本文旨在为初学者提供云原生技术的基础知识和实践指南。我们将从云原生的概念出发,探讨其在现代软件开发中的重要性,并介绍相关的核心技术。通过实际的代码示例,我们展示了如何在云平台上部署和管理应用,以及如何利用云原生架构提高系统的可伸缩性、弹性和可靠性。无论你是云原生领域的新手,还是希望深化理解的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
|
9天前
|
存储 Cloud Native 持续交付
云原生入门:从理论到实践
【10月更文挑战第38天】云原生技术正在重塑软件开发和运维的面貌。本文将带你走进云原生的世界,理解其核心理念,并探索如何将这些理念应用于实际项目中。我们将一起学习容器化、微服务架构、持续集成与持续部署(CI/CD)等关键概念,并通过代码示例加深理解。无论你是云原生新手还是希望深化知识的开发者,这篇文章都将为你提供宝贵的知识和启示。
19 3
|
18天前
|
Cloud Native 持续交付 云计算
云原生入门指南:从容器到微服务
【10月更文挑战第28天】在数字化转型的浪潮中,云原生技术成为推动现代软件开发的关键力量。本篇文章将带你了解云原生的基本概念,探索它如何通过容器化、微服务架构以及持续集成和持续部署(CI/CD)的实践来提升应用的可伸缩性、灵活性和可靠性。你将学习到如何利用这些技术构建和部署在云端高效运行的应用,并理解它们对DevOps文化的贡献。
41 2
|
21天前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
59 2
|
24天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
55 2
|
24天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
35 3
|
23天前
|
运维 Kubernetes Cloud Native
云原生入门:Kubernetes和容器化的未来
【10月更文挑战第23天】本文将带你走进云原生的世界,探索Kubernetes如何成为现代软件部署的心脏。我们将一起揭开容器化技术的神秘面纱,了解它如何改变软件开发和运维的方式。通过实际的代码示例,你将看到理论与实践的结合,感受到云原生技术带来的革命性影响。无论你是初学者还是有经验的开发者,这篇文章都将为你开启一段新的旅程。让我们一起踏上这段探索之旅,解锁云原生技术的力量吧!
下一篇
无影云桌面