2026/3/18 17:43:27
网站建设
项目流程
中小企业建站服务,网站好玩新功能,网站制作设计教程,手机怎么做微信公众号docker基础 文章目录docker基础容器Docker 的核心组件Docker 内部具体实现docker安装配置镜像加速器(华为云)docker C/S分离部署容器
容器是一种轻量级、可移植、自包含的软件打包技术#xff0c;使应用程序可以在几乎任何地方以相同的方式运 行。开发人员在自己笔记本上创建…docker基础文章目录docker基础容器Docker 的核心组件Docker 内部具体实现docker安装配置镜像加速器(华为云)docker C/S分离部署容器容器是一种轻量级、可移植、自包含的软件打包技术使应用程序可以在几乎任何地方以相同的方式运 行。开发人员在自己笔记本上创建并测试好的容器无需任何修改就能够在生产系统的虚拟机、物理服 务器或公有云主机上运行。与虚拟机对比两者都是为应用提供封装和隔离。容器由应用程序本身和依赖比如应用程序需要的库或其他软件组成。容器启动速度快、内核共享、进程级别隔离、宿主机直接管理、分层镜像、一台服务器可启动1000台容器。容器使软件具备了超强的可移植能力。例如集装箱的发明。容器意味着环境隔离和可重复性。开发人员只需为应用创建一次运行环境然后打包成容器便可在其他 机器上运行。另外容器环境与所在的 Host 环境是隔离的就像虚拟机一样但更快更简单。只需要配置好标准的 runtime 环境服务器就可以运行任何容器。这使得运维人员的工作变得更高效 一致和可重复。Docker 的核心组件Docker 客户端 - ClientDocker 服务器 - Docker daemonDocker 镜像 - ImageRegistry 仓库Docker 容器 - ContainerDocker 内部具体实现用户是使用Docker Client与Docker Daemon建立通信并发送请求给后者。Docker Daemon作为Docker架构中的主体部分首先提供Docker Server的功能使其可以接受 Docker Client的请求Docker Engine执行Docker内部的一系列工作每一项工作都是以一个Job的形式的存在。Job的运行过程中当需要容器镜像时则从DockerRegistry中下载镜像并通过镜像管理驱动 Graph driver将下载镜像以Graph的形式存储。当需要为Docker创建网络环境时通过网络管理驱动Networkdriver创建并配置Docker容器网络环 境。当需要限制Docker容器运行资源或执行用户指令等操作时则通过Exec driver来完成。Libcontainer是一项独立的容器管理包Networkdriver以及Execdriver都是通过Libcontainer来实 现具体对容器进行的操作。docker安装安装 Docker Docker 支持几乎所有的 Linux 发行版也支持 Mac 和 Windows。各操作系统的安装方法可以访问https://docs.docker.com/engine/installation/#克隆centos-stream-8模板#修改主机名和ip地址[rootlocalhost ~]# hostnamectl set-hostname docker[rootlocalhost ~]# nmcli connection modify ens160 ipv4.method manual[rootlocalhost ~]# nmcli con up ens160#卸载旧版本可选[rootdocker ~]# yum remove docker-ce#安装必要工具# devicemapper 存储驱动已经在 docker 18.09 版本中被废弃所以在后续的安Docker装中无需安装devicemapper支持。[rootlocalhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 vim[rootlocalhost ~]# yum-config-manager --add-repo[rootlocalhost ~]# yum makecache#allinone部署#安装软件[rootdocker ~]# yum install -y docker-ce#配置服务[rootdocker ~]# systemctl enable docker.service --now#验证状态[rootdocker ~10:08:02]# docker --versionDocker version26.1.3, build b72abbb[rootdocker ~10:08:06]# systemctl status docker● docker.service - Docker Application Container Engine Loaded: loaded(/usr/lib/systemd/system/docker.service;enabled;vendor preset: disActive: active(running)since Mon2026-01-1210:08:02 CST;9s ago Docs: https://docs.docker.com Main PID:11423(dockerd)Tasks:10Memory:34.0M...配置镜像加速器(华为云)#打开华为云swr容器镜像服务[rootdocker ~]# vi /etc/docker/daemon.json{registry-mirrors:[https://4763bb9ecfcd4b229c2653d0d8c88618.mirror.swr.myhuaweicloud.com]}#重启容器引擎[rootdocker ~]# systemctl restart docker#确认配置结果[rootdocker ~]# docker info#运行第一个容器[rootdocker ~]# docker run hello-world#其过程可以简单的描述为#1. 从本地查找hello-wrold镜像没找到#2. 从 Docker Hub 下载hello-world镜像。#3. 启动hello-world容器。#清空实验环境#删除所有容器[rootdocker ~]# docker rm -f $(docker ps -aq)#删除镜像hello-world[rootdocker ~]# docker rmi -f hello-world#关机拍摄快照#运行第二个容器[rootdocker ~]# docker run -d -p 80:80 httpd#其过程可以简单的描述为#1. 从 Docker Hub 下载 httpd 镜像。镜像中已经安装好了 Apache HTTP Server。#2. 启动 httpd 容器并将容器的 80 端口映射到 host 的 80 端口。[rootdocker ~]# curl 192.168.108.30#可以访问容器的 http 服务第一个容器运行成功拥有了一个 WEB 服务器。docker C/S分离部署docker server端配置#克隆两份centos-stream-8模板#ip 192.168.108.30[rootlocalhost ~]# hostnamectl set-hostname docker_server[rootlocalhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.108.30/24 ipv4.gateway 192.168.108.2 ipv4.dns 192.168.108.2 autoconnect yes[rootlocalhost ~]# nmcli con up ens160#安装软件[rootdocker_server ~]# yum install -y yum-utils device-mapper-persistent-datalvm2vim[rootlocalhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo[rootdocker_server~]# yum makecache[rootdocker_server ~]# yum install -y docker-ce[rootdocker_server ~]# systemctl enable docker.service --now[rootdocker_server ~]# vi /etc/docker/daemon.json{registry-mirrors:[https://4763bb9ecfcd4b229c2653d0d8c88618.mirror.swr.myhuaweicloud.com]}#重启容器引擎[rootdocker_server ~]# systemctl restart docker#配置服务[rootdocker_server ~]# vim /usr/lib/systemd/system/docker.service# 在ExecStart参数中最后添加 -H tcp://0.0.0.0:2375docker默认监听2375ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock -H tcp://0.0.0.0:2375[rootdocker_server ~]# systemctl daemon-reload[rootdocker_server ~]# systemctl restart docker.service[rootdocker_server ~]# systemctl stop firewalld#验证[rootdocker_server ~]# yum install lsof[rootdocker_server ~]# lsof -i :2375docker_client端#ip 192.168.108.31[rootlocalhost ~]# hostnamectl set-hostname docker_client[rootlocalhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.108.31/24 ipv4.gateway 192.168.108.2 ipv4.dns 192.168.108.2 autoconnect yes[rootlocalhost ~]# nmcli con up ens160#只安装docker客户端[rootdocker-client ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 vim[rootdocker-client ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo[rootdocker-client~]# yum makecache[rootdocker-client ~]# yum install -y docker-ce-cli#验证[rootdocker_client ~]# docker run hello-world#client直接执行报错没有装服务端# client端连接server端执行命令[rootdocker-client ~]# docker -H 192.168.108.30 run hello-world[rootdocker-client ~]# docker -H 192.168.108.30 images#这里也可以切换到Server端查看现象#client只做管理image和container存储在server端。er端执行命令[rootdocker-client ~]# docker -H 192.168.108.30 run hello-world[rootdocker-client ~]# docker -H 192.168.108.30 images#这里也可以切换到Server端查看现象#client只做管理image和container存储在server端。