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

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


相关文章
|
6天前
|
NoSQL 关系型数据库 应用服务中间件
docker基础篇:安装tomcat
docker基础篇:安装tomcat
111 64
|
9天前
|
Ubuntu 应用服务中间件 nginx
docker入门-快速学会docker
本文介绍了Docker的基本概念,包括镜像、容器、tar文件、Dockerfile和仓库,并通过实际操作演示了如何使用Docker。从拉取Nginx镜像、运行容器、修改容器内容、保存容器为新镜像,到使用Dockerfile构建自定义镜像,最后讲解了如何保存和恢复镜像。文中还推荐了一个在线实践平台Play with Docker,方便读者快速上手Docker。
44 4
docker入门-快速学会docker
|
8天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
66 24
|
9天前
|
NoSQL 算法 Redis
docker高级篇(大厂进阶):安装redis集群
docker高级篇(大厂进阶):安装redis集群
61 24
|
7天前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
94 11
|
20天前
|
Kubernetes Cloud Native API
云原生入门:从理论到实践的探索之旅
本文旨在为初学者提供一个关于云原生技术的全面介绍,包括其定义、核心原则、关键技术组件以及如何将这些概念应用于实际项目中。我们将通过一个简易的代码示例,展示如何在云原生环境下部署一个简单的应用,从而帮助读者更好地理解云原生技术的实践意义和应用价值。
|
22天前
|
运维 Cloud Native 开发者
云原生技术入门与实践
在云计算的浪潮中,云原生技术以其独特的优势和魅力吸引了越来越多的开发者和企业。本文将从云原生技术的基本概念、核心组件以及实际应用三个方面进行详细介绍,帮助读者更好地理解和掌握这一新兴技术。同时,文章还将分享一些实际案例和经验教训,让读者能够更深入地了解云原生技术的应用场景和发展趋势。
37 5
|
27天前
|
Kubernetes Cloud Native 开发者
云原生入门:从容器到微服务
本文将带你走进云原生的世界,从容器技术开始,逐步深入到微服务架构。我们将通过实际代码示例,展示如何利用云原生技术构建和部署应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
29天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
1月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。

热门文章

最新文章