docker构建镜像详解!!!

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: 本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。

[TOC]

docker命令复习

1661997269648

又是美好的一天(又是烧脑的一天)

1661998338489

回顾所有容器管理命令

谁复习?我复习?

10.23

增删改查

3.容器

技巧,容器特性,可以当做一个命令去使用。


增

docker run 镜像id   # 基于镜像,生成一个新的容器进程

docker run 
-i
-t
-d
-p
-P
-v

docker start 挂掉的容器id                 # 尝试启动一个容器 



删 ,删除容器记录

docker rm  容器id   # 删除一个容器记录
docker rm -f  容器id  #先stop 容器 ,然后再rm 删除记录



改,修改容器运行记录,状态
    docker commit 容器id  # 提交容器记录为新的镜像
    docker rename  旧容器名  新容器名  




    [root@docker-200 ~]#docker rename cranky_wilbur  bingcheng_docker
    [root@docker-200 ~]#
    [root@docker-200 ~]#docker ps
    CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS     NAMES
    e5cb987f3e72   nginx:1.19.7   "/docker-entrypoint.…"   24 minutes ago   Up 22 minutes   80/tcp    bingcheng_docker
    [root@docker-200 ~]#

    docker stop 容器id  # 停止一个运行中的容器
    [root@docker-200 ~]#docker stop bingcheng_docker 
    bingcheng_docker


    docker restart 容器id  # 重启一个容器进程

    docker kill 等于 docket stop  可以停止单个,多个容器#

    别去看一些老教程,好好听我的课
    docker  export  容器id # 导出容器为
    docker import /opt/bingcheng.tar  






# 你只需要理解 
# 再第一步,知道导出它的意图
#理解 如下命令玩法即可
#  444444444

docker  export  >  docker import >  docker tag >  docker  run > 



# 和docker commit 一个意思,直接将docker容器进程,导出为一个镜像tar包

# 1. docker export 导出当前机器一个运行中的容器,为一个镜像tar文件
[root@docker-200 ~]#docker export bingcheng_docker > /opt/bingcheng.tar

# 2.可以发给其他机器,docker import导入为新镜像
# 然后可以用docker import命令导入tar包为新镜像
[root@docker-201 /opt]#docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
<none>       <none>    c80569235212   8 seconds ago   131MB


# 3.改名字
[root@docker-201 /opt]#docker tag c80569235212   yuchao163/nginx:1.19.7
[root@docker-201 /opt]#
[root@docker-201 /opt]#
[root@docker-201 /opt]#docker images
REPOSITORY        TAG       IMAGE ID       CREATED              SIZE
yuchao163/nginx   1.19.7    c80569235212   About a minute ago   131MB
[root@docker-201 /opt]#
[root@docker-201 /opt]#


# 4.不知道镜像啥作用?什么命令帮你




=====================================================
查,查询容器的各种信息

docker ps     # 查询运行中的容器
docker ps -a  # 查询容器的历史记录,运行的,挂掉的
docker ps -aq  # 查询所有容器的记录,只显示id号
docker top  容器id  # 查看一个运行中的容器进程信息
docker port 容器id   # 查看容器的端口映射情况,
docker inspect  容器id  #输出容器的详细json数据信息
docker logs 容器id  # 输出容器内,的stdout,stderr的日志(需要你自己主动设置)
# 容器内,只有 nginx  access.log  error.log  ??
# 容器nginx   50个业务,50个*.log 
# 如何将提取日志信息?
# 从宿主机,拿到容器内这些日志?  进入容器,看日志去呗。。。


# 正确的exec 后面的参数是什么
#作用 ,运行一个命令, 再一个运行中的容器内

[root@docker-200 ~]## 在这个容器内 ,创建一个 /opt/heiheihei.log

# 交互式,进入容器空间内,执行命令,touch /opt/heiheihei.log 
[root@docker-200 ~]#docker exec    -i -t  10b646bb3e09  
[root@docker-200 ~]#docker exec    -i -t  10b646bb3e09   bash 
root@10b646bb3e09:/# touch /opt/heiheihei.log

root@10b646bb3e09:/# ls
bin  boot  dev    docker-entrypoint.d  docker-entrypoint.sh  etc    home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

root@10b646bb3e09:/# cd /opt
root@10b646bb3e09:/opt# ls
heiheihei.log

# 非交互式的,再给容器,写入这个日志,一句话 xixi 
[root@docker-200 ~]#docker exec 10b bash -c "echo 'xixi' > /opt/heiheihei.log"
[root@docker-200 ~]#
[root@docker-200 ~]#

# 试试能查出来,强写入的这个数据吗
# 非交互
[root@docker-200 ~]#docker exec 10b bash -c "echo 'xixi' > /opt/heiheihei.log"
[root@docker-200 ~]#
[root@docker-200 ~]#
[root@docker-200 ~]#
[root@docker-200 ~]#
[root@docker-200 ~]#docker exec 10b cat /opt/heiheihei.log
xixi
[root@docker-200 ~]#docker exec 10b bash -c "cat /opt/heiheihei.log"
xixi
[root@docker-200 ~]#
[root@docker-200 ~]#
[root@docker-200 ~]#
[root@docker-200 ~]## 完全看懂的同学,刷666
[root@docker-200 ~]#
[root@docker-200 ~]#




# docket stats 容器id  #查看运行中的容器,使用资源情况 cpu ,内存 磁盘等







# docker info 显示docker服务端信息








[root@docker-200 ~]#docker run -d -p 80:80 nginx:1.19.7 
10b646bb3e0980c08100c6ab4c352501a47944b14167b11fef6b37e0e9908ce6
[root@docker-200 ~]#
[root@docker-200 ~]#
[root@docker-200 ~]#
[root@docker-200 ~]#docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                               NAMES
10b646bb3e09   nginx:1.19.7   "/docker-entrypoint.…"   8 seconds ago   Up 7 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   vigilant_bhabha
[root@docker-200 ~]#
[root@docker-200 ~]#
[root@docker-200 ~]#
[root@docker-200 ~]#docker port 10b
80/tcp -> 0.0.0.0:80
80/tcp -> :::80

容器资源监控docket stats

1662007168044

docker  核心

仓库管理命令

增删改查,还是查看状态等 

容器管理命令



镜像管理命令

2.镜像

会玩镜像的命令操作,11111

增新增镜像的命令
    docker pull  镜像名:tag

    docker commit   容器id

    docker load  <  本地镜像tar文件

    docker save 镜像id  >  具体镜像tar文件 

    docker build  Dockerfile  # 基于dockerfile生成一个新的镜像,下一步所学


删

docker rmi  镜像id



改

镜像改不了,只读文件模板
(如何理解修改镜像?)
# 1. 运行镜像,生成读写层容器实例。
docker run 镜像id  # 基于镜像,运行容器实例,该的文件系统,都是容器里的资料,不会修改镜像本身
docker run centos:7.9.2009  yum install vim -y # 开辟一个读写层,容器层,再这容器里的文件系统中,去安装nginx软件

vim在哪?怎么找打他?命令是什么?
看什么新信息?容器id


# 2.提交该容器空间的,携带vim的记录,为新的镜像
[root@docker-200 ~]#docker commit e40 linux0224-vim-centos7
sha256:d4ac65da3829505ad5c86fb381939f341171126417b3f7df4edb3663a9e1e17d


# 3.此时新镜像,就可以使用centos7 + vim了


docker tag 修改镜像的版本信息,以及镜像名,如加上docker hub的账户
[root@docker-200 ~]#docker tag mysql:5.7.7   yuchao163/mysql:5.7.7
[root@docker-200 ~]#docker images yuchao163/mysql*
REPOSITORY        TAG       IMAGE ID       CREATED       SIZE
yuchao163/mysql   5.7.7     cf8a22028fe7   7 years ago   322MB





查

# 查询只读镜像文件的一层一层关系
docker histroy 镜像id


docker images 
docker image ls  

# 列出镜像文件列表

镜像,容器,提交容器记录,工作流原理

1662001693120

分析docker日志输出原理,docker logs查看

1662003426834

分析启动docker报错的流程

都是疑点,难点,你要掌握的分析能力。

1662002699983

查看容器特性,将容器当做个命令去用

1662003906217

镜像和容器的工作原理

1662000896363

1.仓库

解读 如何查询镜像列表的,api

1661999781352

1. 如何看仓库相关的 帮助命令信息?  docker命令帮助


仓库平台,提供镜像存储,镜像查询地方

# 怎么着版本选择
# docker仓库官网,提供了restful风格的http协议的 api接口(http://url 获取镜像版本列表的json数据,这就叫api 行不)api就是提供json数据源的一个 url而已。

# 未来深入学学,容器接口的知识
再来看
https://docs.docker.com/engine/api/v1.41/#tag/Service/operation/ServiceUpdate




docker search  镜像名:tag版本

docker search centos # 搜索关于centos相关的镜像


# 下载镜像的方式
curl -s https://registry.hub.docker.com/v1/repositories/centos/tags|jq

docker pull 镜像名:tag

docker pull centos:centos8.1.1911



# 推送本地镜像上传到docker hub
# 1.登录docker hub
docker login


# 2.修改镜像的名字?规则
docker tag 旧镜像名   用户名/新名字


# 3. 推送
docker push  用户名/新名字  





# 登录docker hub
docker login

1662000083345

----前面是docker的完整管理命令-----

关于容器

1. 知道为什么要学,要用
2. 容器生命周期管理  ,   仓库下载镜像,基于镜像运行容器,  你的程序都在容器里跑着。
3. 容器记录也可以再提交为镜像,自定义镜像玩法。

属于先学会,docker命令怎么用


用docker解决具体部署问题。。
1. 跟程序有关的,如何访问到你的程序?

2. 以及你程序产生的数据, 如何提取出来?如何持久化?保存??

从容器空间内拿出来。。

---1.容器端口映射----

我们使用容器,不单是运行单机程序,当然是需要运行网络服务在容器中,那么如何配置docker的容器网络,基础网络配置,网桥配置,端口映射,还是很重要。

这里的学习思路,是先学习基本的容器网络操作命令

后面环节深入学习docker网络配置。

容器里运行web服务,是基本需求,想要让外部访问容器内应用,可以通过参数

-p  port:port
-P  随机port:port

宿主机:容器

---2.配置docker数据目录管理----

如何提取容器内日志

1662009309670

如何提取容器所有的日志

1. 查看容器的日志输出到哪
[root@docker-200 ~]#docker inspect website_nginx |grep -i log


2. 默认容器日志,是以json格式,保存docker的数据目录下
linux一切接文件,你docker内产生的数据,都在 这个主目录下,看懂 22222

/var/lib/docker/containers/


3.提取容器内所有的日志,拿到本地  ,docker cp命令
# 能直接拿到容器内的资料,到宿主机来(超级方便)
# docker run mysql
# docker cp my.cnf ./



[root@docker-200 /all-nginx-log]#docker cp  website_nginx:/var/log/nginx/*   ./
Error: No such container:path: website_nginx:/var/log/nginx/*
[root@docker-200 /all-nginx-log]#
[root@docker-200 /all-nginx-log]#
[root@docker-200 /all-nginx-log]#docker cp  website_nginx:/var/log/nginx/  ./
[root@docker-200 /all-nginx-log]#
[root@docker-200 /all-nginx-log]#
[root@docker-200 /all-nginx-log]#ls
nginx
[root@docker-200 /all-nginx-log]#ls nginx/
access.log  error.log  test1.log
[root@docker-200 /all-nginx-log]#ls nginx/ -l
total 4
lrwxrwxrwx 1 root root 11 Dec 30  2021 access.log -> /dev/stdout
lrwxrwxrwx 1 root root 11 Dec 30  2021 error.log -> /dev/stderr
-rw-r--r-- 1 root root 36 Sep  1 21:15 test1.log
[root@docker-200 /all-nginx-log]#cat nginx/access.log 




^C
[root@docker-200 /all-nginx-log]#
[root@docker-200 /all-nginx-log]#
[root@docker-200 /all-nginx-log]#cat^C
[root@docker-200 /all-nginx-log]#cd nginx/
[root@docker-200 /all-nginx-log/nginx]#
[root@docker-200 /all-nginx-log/nginx]#
[root@docker-200 /all-nginx-log/nginx]#ls
access.log  error.log  test1.log
[root@docker-200 /all-nginx-log/nginx]#cat test1.log 
111
111
111
111
111
111
111
111
111
[root@docker-200 /all-nginx-log/nginx]## 常见做法是,将容器内的xx目录,和宿主机的xx目录,直接做映射关系,好比挂在一样 mount
[root@docker-200 /all-nginx-log/nginx]#
[root@docker-200 /all-nginx-log/nginx]#
[root@docker-200 /all-nginx-log/nginx]## 直接将 容器内的 /var/log/nginx/    /all-nginx-log/nginx/  # 看懂111
[root@docker-200 /all-nginx-log/nginx]#
[root@docker-200 /all-nginx-log/nginx]#

我们使用docker容器,也需要关注容器内的存储

Data Volumes是一个可供一个或多个容器使用的特殊目录

  • 数据卷可以在容器内共享和重用
  • 数据卷的修改会立即生效
  • 数据卷的更新,不回影响镜像
  • 数据卷会一直存在,即使容器被删除

数据卷的用法类似于Linux的mount挂载操作

镜像中被指定为挂载点的目录

其中文件会被隐藏,显示挂载的数据卷。

1.先看不用数据卷的玩法

1662010006504

需求是,要部署一个 小鸟飞飞的游戏代码,如何部署到容器里


nginx静态网址,源码,再宿主机上

# 思路?

0. 启动一个nginx容器
[root@docker-200 /xiaoniao]#docker run -d nginx:1.19.7  
f7484648a48cb99f66f65cf0c4779ba99111ec653e9301e67f73f6f8d0491097
[root@docker-200 /xiaoniao]#


1.准备好如下部署的物料
[root@docker-200 /xiaoniao]#
[root@docker-200 /xiaoniao]#tree
.
├── conf
│?? └── xiaoniao.conf
└── statis-file
    ├── 2000.png
    ├── 21.js
    ├── icon.png
    ├── img
    │?? ├── bg1.jpg
    │?? ├── bg2.jpg
    │?? ├── number1.png
    │?? ├── number2.png
    │?? ├── s1.png
    │?? └── s2.png
    ├── index.html
    ├── sound1.mp3
    └── xiaoniaofeifei.zip

3 directories, 13 files

[root@docker-200 /xiaoniao]#cat conf/xiaoniao.conf 
server {
listen 81;
server_name localhost;
    root /xiaoniao;
    index index.html;
}




2. 源码拷贝到运行中的容器里
# 目标地conf地址
/etc/nginx/conf.d/

[root@docker-200 /xiaoniao]#docker cp conf/xiaoniao.conf   f7484648a48c:/etc/nginx/conf.d/
[root@docker-200 /xiaoniao]#
[root@docker-200 /xiaoniao]#
[root@docker-200 /xiaoniao]#docker exec f74 ls /etc/nginx/conf.d
default.conf
xiaoniao.conf



# 目标静态资源地址 ,以配置文件来的 容器内的/xiaoniao

[root@docker-200 /xiaoniao]#docker exec f74 ls /xiaoniao
2000.png
21.js
icon.png
img
index.html
sound1.mp3
xiaoniaofeifei.zip
[root@docker-200 /xiaoniao]## 看懂 conf,静态资源,都放入容器了 ,刷111
[root@docker-200 /xiaoniao]#docker cp xiaoniao/  f7484648a48c:/









3. 重启nginx
# 进入到容器内,尝试重启程序
root@f7484648a48c:/etc/nginx/conf.d# nginx -s reload

# 可以重启容器
docker restart f74

# 但是宿主机访问不了


4.此时,该容器,默认是没有expose放开81端口的,没法用

5. 提交新镜像
[root@docker-200 /xiaoniao]#docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS         PORTS     NAMES
f7484648a48c   nginx:1.19.7   "/docker-entrypoint.…"   13 minutes ago   Up 3 minutes   80/tcp    wizardly_colden
[root@docker-200 /xiaoniao]#
[root@docker-200 /xiaoniao]#
[root@docker-200 /xiaoniao]## 该容器,是不是支持了 81端口的小鸟飞飞的功能
[root@docker-200 /xiaoniao]#
[root@docker-200 /xiaoniao]## 提交为镜像

6.提交为镜像tar包
提交容器记录,为镜像,的命令?

[root@docker-200 /xiaoniao]#docker commit f7484648a48c  xiaoniao-81
sha256:4ad7fab135fbe6abcbbef8dfb30e5de83b000d6eafa1d328e7647924a550b63c
[root@docker-200 /xiaoniao]#
[root@docker-200 /xiaoniao]#
[root@docker-200 /xiaoniao]#docker images
REPOSITORY                                   TAG              IMAGE ID       CREATED              SIZE
xiaoniao-81                                  latest           4ad7fab135fb   4 seconds ago        133MB


7.运行新容器,使用新代码环境
[root@docker-200 /xiaoniao]#docker run -d -p 81:81 xiaoniao-81
5c4764949d485b89994b620e30d95f26a4f73dfdb1a02c240057c025415e1f28
[root@docker-200 /xiaoniao]#
[root@docker-200 /xiaoniao]#
[root@docker-200 /xiaoniao]#docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS         PORTS                                       NAMES
5c4764949d48   xiaoniao-81    "/docker-entrypoint.…"   2 seconds ago    Up 1 second    80/tcp, 0.0.0.0:81->81/tcp, :::81->81/tcp   dazzling_cohen
f7484648a48c   nginx:1.19.7   "/docker-entrypoint.…"   16 minutes ago   Up 6 minutes   80/tcp                                      wizardly_colden
[root@docker-200 /xiaoniao]#
[root@docker-200 /xiaoniao]#


8.代码更新了,如何更新网站
[root@docker-200 /xiaoniao]#grep 文杰 xiaoniao/index.html 
        <title>文杰飞飞飞</title>
[root@docker-200 /xiaoniao]#


[root@docker-200 /xiaoniao]#docker cp xiaoniao/  5c4764949d48:/
[root@docker-200 /xiaoniao]#


9.然后呢?
[root@docker-200 /xiaoniao]#docker cp xiaoniao/  5c4764949d48:/
[root@docker-200 /xiaoniao]#
[root@docker-200 /xiaoniao]#
[root@docker-200 /xiaoniao]#docker restart 5c4
5c4
[root@docker-200 /xiaoniao]## 静态资源,无需重启容器,动态资源,得重启容器,

1662011523620

2.数据卷映射,和端口映射概念一样

3.容器多目录映射

从零新发布新容器

资源如下

- 配置文件
[root@docker-200 /xiaoniao-all]#tree
.
├── conf.d
│   └── xiaoniao.conf
├── logs
└── xiaoniao
    ├── 2000.png
    ├── 21.js
    ├── icon.png
    ├── img
    │   ├── bg1.jpg
    │   ├── bg2.jpg
    │   ├── number1.png
    │   ├── number2.png
    │   ├── s1.png
    │   └── s2.png
    ├── index.html
    ├── sound1.mp3
    └── xiaoniaofeifei.zip

4 directories, 13 files


- 运行环境是?(可运行nginx  1.15.11 的镜像,)





1. 代码直接用宿主机上的源码,不用再反复 docker cp了
# 一条命令就ok了

# -v 宿主机目录:容器内的目录 

docker run -d  -p 81:81  -p  80:80   \
-v /xiaoniao-all/conf.d/:/etc/nginx/conf.d/ \
-v /xiaoniao-all/xiaoniao/:/xiaoniao/ \
-v /xiaoniao-all/logs/:/var/log/nginx/ \
nginx:1.15.11




2. 容器内的运行日志,也都拿出来
容器内的日志写入
/xiaoniao-all/logs/


3.结果检查

- 更新配置
[root@docker-200 /xiaoniao-all/conf.d]#ls
xiaoniao.conf
[root@docker-200 /xiaoniao-all/conf.d]#vim xiaoniao.conf 
[root@docker-200 /xiaoniao-all/conf.d]#docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS                                           NAMES
74594130d5c6   nginx:1.15.11   "nginx -g 'daemon of…"   4 minutes ago   Up 4 minutes   0.0.0.0:80-81->80-81/tcp, :::80-81->80-81/tcp   agitated_meitner
[root@docker-200 /xiaoniao-all/conf.d]#
[root@docker-200 /xiaoniao-all/conf.d]#docker restart 745
745
[root@docker-200 /xiaoniao-all/conf.d]#



- 更新网站

[root@docker-200 /xiaoniao-all]#grep 王局 xiaoniao/index.html 
<h1> 除了王局以外,我估计至少有5个浑水摸鱼,没听课的</h1>
[root@docker-200 /xiaoniao-all]#




- 网站的日志

今日所学总结

1662012949622

查看容器的数据卷

4.制作Docker游戏镜像

自定义镜像玩法

当docker hub 没有你想要的合适得镜像,就是自己制作么。

1. 制作nginx镜像

2. 制作python3、centos镜像

5.再制作一个私有云盘镜像

实践

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
11天前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
323 28
|
24天前
|
缓存 监控 持续交付
|
7天前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
14天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
27 1
|
21天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
本文介绍了Docker和Kubernetes在构建高效微服务架构中的应用,涵盖基本概念、在微服务架构中的作用及其实现方法。通过具体实例,如用户服务、商品服务和订单服务,展示了如何利用Docker和Kubernetes实现服务的打包、部署、扩展及管理,确保微服务架构的稳定性和可靠性。
74 7
|
20天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【10月更文挑战第22天】随着云计算和容器技术的快速发展,微服务架构逐渐成为现代企业级应用的首选架构。微服务架构将一个大型应用程序拆分为多个小型、独立的服务,每个服务负责完成一个特定的功能。这种架构具有灵活性、可扩展性和易于维护的特点。在构建微服务架构时,Docker和Kubernetes是两个不可或缺的工具,它们可以完美搭档,为微服务架构提供高效的支持。本文将从三个方面探讨Docker和Kubernetes在构建高效微服务架构中的应用:一是Docker和Kubernetes的基本概念;二是它们在微服务架构中的作用;三是通过实例讲解如何使用Docker和Kubernetes构建微服务架构。
55 6
|
15天前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
19天前
|
负载均衡 应用服务中间件 nginx
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
24 4
|
20天前
|
负载均衡 应用服务中间件 nginx
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
30 3