【微服务】Docker

一、Docker基础

1、依赖的兼容问题:Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像Docker应用运行在容器中,使用沙箱机制,相互隔离。

2、如何解决开发、测试、生产环境有差异的问题:Docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统的Linux内核,因此可以在任意Linux操作系统上运行。

3、docker是一个快速交付应用、运行应用的技术;启动、移除都可以通过一行命令完成,方便快捷。

4、docker和虚拟机的区别:

  • docker是一个系统进程,虚拟机是在操作系统中的操作系统。
  • docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般。



5、docker架构

①镜像:Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。

②容器:镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。

③DockerHub: DockerHub是一个Docker镜像的托管平台。这样的平台称为Docker Registry,

④docker架构(CS)

二、安装docker

企业部署一般都是采用Linux操作系统,而其中又数CentOS发行版占比最多,因此我们在CentOS下安装Docket。安装docker的条件,Centos7,至少3.10及以上的版本。

1、卸载docker

以防之前安装过docker导致版本混乱,首先在客户端尝试卸载docker

java 复制代码
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

2、安装docker

安装yum工具:

sh 复制代码
yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

更新本地镜像源:

shell 复制代码
# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

然后输入命令:

shell 复制代码
yum install -y docker-ce

docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

3、启动docker

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

sh 复制代码
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

通过命令启动docker:

sh 复制代码
systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

然后输入命令,可以查看docker版本:

复制代码
docker -v

4、配置镜像:docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

java 复制代码
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://koxqhw57.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

三、Docker基本操作

如何记住Docker命令:docker --help

四、容器相关操作

eg:创建一个nginx容器

java 复制代码
docker run --name containerName -p 80:80 -d nginx
//docker run :创建并运行一个容器
//--name:给容器起一个名字,比如叫做mn
//-p︰将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
//-d:后台运行容器
//nginx:镜像名称,例如nginx

在浏览器访问主机号:80,如下情况部署成功:

通过docker logs mn查看日志:

eg:进入Nginx容器,修改HTML文件内容

java 复制代码
docker exec -it mn bash
//docker exec:进入容器内部,执行一个命令
//-it:给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
//mn:要进入的容器的名称
//bash:进入容器后执行的命令,bash是一个linux终端交互命令

五、数据卷

将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全.

数据卷操作基本语法如下:

java 复制代码
docker volume [COMMAND]
//docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:
//create 创建一个volume
//inspect 显示一个或多个volume的信息
//ls 列出所有的volume删除未使用的volume
//prune 删除一个或多个指定的volume
//rm 删除一个或者多个指定的volume

六、Dockerfile自定义镜像

1、镜像结构

2、Dockerfile是一个文本文件,其中包含一个个的指令,用指令俩说明执行什么操作来构建镜像,每一个指令都会形成一个layer

相关推荐
IT利刃出鞘2 小时前
Docker Compose--安装WordPress--方法/示例
运维·docker·容器
AI_Auto2 小时前
架构视角看数字化转型|核心架构:大共享平台+小应用,从按需走向适变
大数据·人工智能·架构·制造
科芯创展3 小时前
XU9238 外置NMOS架构宽压Boost升压恒压驱动器方案设计与工程落地指南
架构
Dawson Zhu3 小时前
AI 辅助调试陷入「反复修改」循环?用证据驱动的四步法破局
人工智能·语言模型·架构·aigc·agi
她的男孩5 小时前
多租户和数据权限怎么共存?扒完拦截器注册链路,我找到 4 个隐蔽的坑
java·后端·架构
这个DBA有点耶5 小时前
非关系型数据库到底有几种?键值、文档、列族、图,一篇讲透
mysql·架构·nosql
昇腾知识体系6 小时前
昇腾 A5 ISA 指令集:文档入口与 mem_bar 等关键指令
人工智能·华为·架构·知识图谱
诚心呈意共享外卖配送系统6 小时前
校园配送系统架构设计:最后100米智能调度与两段接力实践
架构·系统架构·创业创新
爱读源码的大都督7 小时前
DeepSeek面试官问:多租户 RAG 系统怎样实现细粒度权限控制?
后端·面试·架构
企业通信技术笔记8 小时前
企业IM内外网隔离部署:DNS、证书、WebSocket与跨网接口设计
websocket·网络协议·架构·php·信息与通信