微服务必备技能Docker容器基础

本文详细介绍Docker的基础知识,包括镜像、容器和仓库的概念,以及如何使用Docker进行Nginx服务器的部署。同时,文章还讲解了在公司环境中使用Docker镜像的方法,以及如何构建和使用私有镜像仓库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微服务必备技能Docker容器基础

目录

微服务必备技能Docker容器基础

Docker仓库、镜像、容器核心知识

Docker容器常见命令

当有相同的镜像ID时删除方法

使用Docker部署Nginx服务器

公司中Docker镜像的使用

构建自己的镜像仓库

开发者平台镜像仓库无法登陆



Docker介绍和使用场景

       1、什么是Dokcer

       百科:一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口;

使用go语言编写,在LCX(linux容器)基础上进行的封装

简单来说:

              1)就是可以快速部署启动应用(之前要很多依赖等等  docker只需一个镜像 就能够快速到另一台部署了)

              2)实现虚拟化,完整资源隔离

              3)一次编写,四处运行(有一定的限制,比如Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用)

       2、为什么要用

       1、提供一次性的环境,假如需要安装Mysql,则需要安装很多依赖库、版本等,如果使用Docker则通过镜像就可以直接启动运行  

       2、快速动态扩容,使用docker部署了一个应用,可以制作成镜像,然后通过Dokcer快速启动

       3、组建微服务架构,可以在一个机器上模拟出多个微服务,启动多个应用

       4、更好的资源隔离和共享

       一句话:开箱即用,快速部署,可移植性强,环境隔离

之前每一个服务都有有一个单独的服务器进行部署,docker  类似于VMware虚拟机(docker前身)

一个很强大的物理机,可以给不同的微服务 (根据需求)分配核数


安装

阿里云ECS服务安装Docker实战

Linux Standard Base的缩写,lsb_release命令用来显示LSB和特定版本的相关信息

命令: lsb_release -a

阿里云Docker的安装_探索的小白-优快云博客

常见问题:

https://blog.youkuaiyun.com/daluguishou/article/details/52080250            


Docker仓库、镜像、容器核心知识


Dokcer基础知识,

       1、概念:

       Docker 镜像 - Docker images:

                      容器运行时的只读模板,操作系统+软件运行环境+用户程序

                                    class User{

                                           private String userName;

                                           private int age;

                                    }

       Docker 容器 - Docker containers:(通过镜像生成容器   类  new使用之前的类(镜像))

                     容器包含了某个应用运行所需要的全部环境

                                    User user = new User()

       Docker 仓库 - Docker registeries:

                     hub.docker.com

                     用来保存镜像,有公有和私有仓库,好比Maven的中央仓库和本地私服

                     镜像仓库:   

                                   (参考)配置国内镜像仓库:https://blog.youkuaiyun.com/zzy1078689276/article/details/77371782

                     对比面向对象的方式

                     Dokcer 里面的镜像 : Java里面的类 Class

                     Docker 里面的容器 : Java里面的对象 Object

                     通过类创建对象,通过镜像创建容器


Docker容器常见命令


1、 常用命令(安装部署好Dokcer后,执行的命令是docker开头),xxx是镜像名称

       搜索镜像:docker search xxx

       列出当前系统存在的镜像:docker images

       拉取镜像:docker pull xxx

              xxx是具体某个镜像名称(格式 REPOSITORY:TAG)

              REPOSITORY:表示镜像的仓库源,TAG:镜像的标签

       运行一个容器:docker run -d --name "xdclass_mq" -p 5672:5672 -p 15672:15672 rabbitmq:management

             

遇见的错误

docker 启动容器报错:Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "write parent: broken pipe"

其实原因还是,linux与docker版本的兼容性问题

解决Error response from daemon: oci runtime error: container_linux.go:247: starting container process_时光匆匆的博客文化-优快云博客

docker run - 运行一个容器

              -d 后台运行

              -p 端口映射

       rabbitmq:management  (格式 REPOSITORY:TAG),如果不指定tag,默认使用最新的

                     --name "xxx"

                     列举当前运行的容器:docker ps

                     检查容器内部信息:docker inspect 容器名称  容器里面运行的程序 端口资源等情况

                     删除镜像:docker rmi -f IMAGE_NAME()

                             强制移除镜像不管是否有容器使用该镜像 增加 -f 参数,


刚在新的Centos上安装Docker-CE,后运行docker run hello-world报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

解决办法
$ systemctl daemon-reload
$ sudo service docker restart
$ sudo service docker status (should see active (running))
$ sudo docker run hello-world


                     停止某个容器:docker stop 容器名称

                     启动某个容器:docker start 容器名称

                     移除某个容器: docker rm 容器名称 (容器必须是停止状态)

                                    镜像                rmi

当有相同的镜像ID时删除方法

              用REPOSITORY和TAG  进行删除

docker rmi xdclass/docker_test:latest

OK!

文档:

                     https://blog.youkuaiyun.com/permike/article/details/51879578


使用Docker部署Nginx服务器

       1、获取镜像

       docker run (首先会从本地找镜像,如果有则直接启动,没有的话,从镜像仓库拉起,再启动)

              docker search nginx

       2、列举

                     docker images

       3、拉取

                     docker pull nginx

       4、启动

启动多个nginx

                     docker run -d --name "xdclass_nginx" -p 8088:80 nginx

                     docker run -d --name "xdclass_nginx2" -p 8089:80 nginx

                     docker run -d --name "xdclass_nginx3" -p 8090:80 nginx

       5、访问

              如果是阿里云服务,记得配置安全组,腾讯云也需要配置,这个就是一个防火墙


公司中Docker镜像的使用


1、为啥要用镜像仓库

2、官方公共镜像仓库和私有镜像仓库

       公共镜像仓库:

              官方:https://hub.docker.com/,基于各个软件开发或者有软件提供商开发的

              非官方:其他组织或者公司开发的镜像,供大家免费试用

       私有镜像仓库:

                     用于存放公司内部的镜像,不提供给外部试用;

SpringCloud 开发了一个支付系统 -》做成一个镜像 (操作系统+软件运行环境+用户程序)redis mysql等都有的

jenknis持续构建


构建自己的镜像仓库


使用阿里云搭建自己的镜像仓库

       1、阿里云镜像仓库:https://dev.aliyun.com/search.html

              点击管理控制台-》初次使用会提示开通,然后设置密码

              xdclass.net123

登录镜像成功


开发者平台镜像仓库无法登陆

docker login --username=xxx@yyy.com registry.aliyuncs.com
用这个命令登录提示如下
Error response from daemon: Get https://registry.aliyuncs.com/v2/: unauthorized: authentication required
密码是正确的,而且尝试改密码再试,还是这个错误,换了个登录软件就行了 不懂


把镜像推到仓库中去:

       2、使用阿里云私有镜像仓库

                     1)登录: docker login --username=794666918@qq.com registry.cn-shenzhen.aliyuncs.com                  

                     2) 推送本地镜像:

                     docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:[镜像版本号]

                                      6ffc11daa8d0

docker tag 6ffc11daa8d0 registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:[镜像版本号]

    

docker tag 6ffc11daa8d0 registry.cn-shanghai.aliyuncs.com/ligangxijie/cloud_reporsity:gang_ribbitmq

             

docker push registry.cn-shanghai.aliyuncs.com/ligangxijie/cloud_reporsity:[镜像版本号]


            

                     例子:

                     docker tag 2f415b0e9a6e registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2

                     docker push registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2

                     3)拉取镜像

                            线上服务器拉取镜像:

                                   docker login --username=794666918@qq.com registry.cn-shenzhen.aliyuncs.com

                                   docker pull registry.cn-shenzhen.aliyuncs.com/xdclass/xdclass_images:xd_rabbitmq-v1.0.2

                                   启动容器:

                                   docker run -d --name "xdclass_mq" -p 5672:5672 -p 15672:15672 2f415b0e9a6e


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智达教育‍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值