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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
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有兴趣的小伙伴可以点个关注,一起学习、进步。


相关文章
|
2天前
|
Linux Docker 索引
docker(二):Centos安装docker
docker(二):Centos安装docker
55 0
|
6天前
|
持续交付 开发工具 git
阿里云云效产品使用问题之在云效代码域中gitlab使用docker安装的,迁移时遇到“获取企业信息失败”,是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
6天前
|
JavaScript 前端开发 数据安全/隐私保护
阿里云云效操作报错合集之流水线中获取不到CI_COMMIT_REF_NAME变量,导致docker镜像打包失败,什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
6天前
|
运维 Serverless 文件存储
函数计算产品使用问题之在利用Docker镜像部署应用时,容器内的应用如何能访问函数计算配置的NAS挂载
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
7天前
|
IDE Serverless 开发工具
函数计算产品使用问题之如何使用Docker镜像作为执行环境
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
7天前
|
存储 Serverless 对象存储
函数计算产品使用问题之项目打包为docker镜像,该如何部署上去
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
7天前
|
应用服务中间件 nginx Docker
Docker安装与管理Nginx
Docker安装与管理Nginx
46 0
|
7天前
|
缓存 Linux Docker
CentOS 7 下安装 Docker 及配置阿里云加速服务
CentOS 7 下安装 Docker 及配置阿里云加速服务
152 0
|
11小时前
|
Cloud Native Java 微服务
使用Java构建可伸缩的云原生应用架构
使用Java构建可伸缩的云原生应用架构
|
1天前
|
存储 关系型数据库 分布式数据库
PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题
【7月更文挑战第3天】PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题。此架构让存储层专注数据可靠性,计算层专注处理SQL,提升性能并降低运维复杂度。通过RDMA加速通信,多副本确保高可用性。资源可独立扩展,便于成本控制。动态添加计算节点以应对流量高峰,展示了其灵活性。PolarDB的开源促进了数据库技术的持续创新和发展。
12 2