郑州定制网站建设/优化网站的方法有哪些

郑州定制网站建设,优化网站的方法有哪些,wordpress写插件,孝感做网站公司使用docker可以很快部署相同的环境,这也是最快的环境构建,接下来就主要对docker中的基础内容进行讲解.Docker 是一个用于开发、交付和运行应用程序的开源平台,它可以让开发者将应用程序及其依赖打包到一个容器中,然后在任何环境中运行这个容器&#xff0…

使用docker可以很快部署相同的环境,这也是最快的环境构建,接下来就主要对docker中的基础内容进行讲解.Docker 是一个用于开发、交付和运行应用程序的开源平台,它可以让开发者将应用程序及其依赖打包到一个容器中,然后在任何环境中运行这个容器,实现了应用的跨平台性和一致性。

1. Docker 架构

仓库富含镜像,镜像中包含运行一个容器所需的所有文件系统,容器是镜像的运行实例,镜像是容器的基础,对一个镜像可以创建多个容器.

仓库

仓库(Repository):用于存储镜像的地方,可以分为公共仓库和私有仓库。公共仓库如 Docker Hub,提供了大量的官方和社区镜像,供用户下载和使用。私有仓库则用于企业或个人在内部网络中存储和管理自己的镜像。

镜像

镜像(Image):镜像可以看作是一个只读的模板,它包含了运行一个容器所需的所有文件系统内容,包括操作系统、应用程序、库和配置文件等。镜像是创建容器的基础。

容器

容器(Container):容器是镜像的运行实例。可以将其理解为一个轻量级的、独立的运行环境,其中包含了应用程序及其所有依赖项,容器之间相互隔离,互不影响。

2. 基本操作

安装docker

Windows
下载:访问 Docker 官方网站,选择适合 Windows 系统的 Docker Desktop 版本进行下载。www.docker.com
安装:运行下载好的安装包,按照安装向导完成安装。安装完成后,启动 Docker Desktop。
验证:在命令提示符或 PowerShell 中输入 docker --version,若显示 Docker 版本信息,则说明安装成功。

Linux系统
更新软件包索引:在终端中运行

sudo apt-get update

安装必要的包:运行

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

添加Docker官方GPG密钥:运行

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加Docker仓库:运行

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

再次更新软件包索引:运行

sudo apt-get update

安装Docker CE:运行

sudo apt-get install docker-ce

验证:运行 sudo docker --version,若显示 Docker 版本信息,则说明安装成功。

查看docker的版本

sudo docker --version

在这里插入图片描述

镜像操作

搜索镜像

docker search [镜像名称]

如docker search nginx,可以搜索 Docker Hub 上的镜像

在这里插入图片描述

拉取镜像

sudo docker pull [镜像名称]

如 docker pull nginx。docker pull ubuntu:latest会从 Docker Hub 上拉取最新的 Ubuntu 镜像。
测试拉取一个最简单的镜像,镜像源为docker.m.daocloud.io,镜像名为hello-world

sudo docker pull docker.m.daocloud.io/hello-world
sudo docker pull ubuntu:latest

查看镜像:通过docker images命令可以列出本地已有的镜像,显示镜像的名称、标签、ID、创建时间和大小等信息。

sudo docker images

删除镜像:用docker rmi命令删除本地镜像。例如,docker rmi ubuntu:latest将删除指定的 Ubuntu 镜像。如果镜像正在被容器使用,则需要先停止相关容器才能删除镜像。

docker rmi [镜像ID]

容器操作

创建并启动容器:运行 docker run [选项] [镜像名称],如 docker run -d -p 80:80 nginx,其中 -d 表示后台运行,-p 用于端口映射

docker run [选项] [镜像名称]

docker run -it ubuntu:latest /bin/bash会基于 Ubuntu 镜像创建一个容器,并以交互模式进入容器的 bash shell。其中,-i表示保持标准输入流打开,-t表示分配一个伪终端。
查看容器:运行 docker ps 查看正在运行的容器,使用 docker ps -a 查看所有容器

sudo docker ps -a 

docker ps命令用于查看正在运行的容器,若要查看所有容器(包括已停止的),可使用docker ps -a。该命令会显示容器的 ID、名称、镜像、状态、运行时间等信息。

docker stop [容器ID] 
docker start [容器ID]

停止和启动容器:docker stop命令用于停止正在运行的容器,例如docker stop 8d8f81da12b5。要重新启动已停止的容器,可使用docker start container_id。

docker rm [容器ID]

删除所有容器: sudo docker rm -f $(sudo docker ps -aq)
停止所有容器sudo docker stop $(sudo docker ps -q)
删除所有镜像:sudo docker rmi $(sudo docker images)

删除容器:使用docker rm命令删除容器。例如,docker rm container_id,但容器必须先停止才能被删除。若要强制删除正在运行的容器,可以使用docker rm -f container_id。

docker exec -it [容器ID] /bin/bash

进入容器:当容器在运行时,可以使用docker exec命令进入容器。例如,docker exec -it container_id /bin/bash可以进入指定容器并打开一个 bash 终端。

停止容器使用 docker stop,删除容器使用 docker rm,删除镜像使用 docker rmi
查看容器日志:使用 docker logs [容器ID] 查看容器的日志信息
构建镜像:通过 docker build -t [镜像名称] . 命令可以根据 Dockerfile 构建镜像
推送镜像:运行 docker push [镜像名称] 将本地镜像推送到 Docker Hub

常见问题

linux环境下更换docker源

先修改docker的daemon.json文件

sudo gedit /etc/docker/daemon.json

加入源

    "registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com","https://cjie.eu.org"]

重启docker服务

sudo systemctl daemon-reload 
 sudo systemctl restart docker

docker配置代理

如果docker镜像创建的过程中需要配置网络,可以直接添加本地的配置:

sudo gedit /etc/docker/daemon.json
{"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com","https://cjie.eu.org"],"proxies": {"http-proxy": "http://127.0.0.1:7890","https-proxy": "http://127.0.0.1:7890"}
}

在这里插入图片描述
重启docker服务

sudo systemctl daemon-reload 
 sudo systemctl restart docker

这样就能正常访问github了

windows环境下更换docker源

打开docker-desktop客户端
在这里插入图片描述
设置一下docker engine:
在这里插入图片描述
添加源:

    "registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com","https://cjie.eu.org"]

应用保存即可
当然也可以直接修改docker的daemon.json文件:
以本机使用 Administrator 账户为例,配置文件位于 C:\Users\Administrator.docker\目录下的daemon.json
在这里插入图片描述
打开daemon.json文件,添加源地址即可.
然后去reset一下:
在这里插入图片描述
在这里插入图片描述
也可以完成设置

  1. Dockerfile
    Dockerfile 是一个文本文件,用于定义如何构建镜像。它包含了一系列的指令,描述了镜像的基础环境、安装的软件包、配置信息以及容器启动时要执行的命令等。通过编写 Dockerfile,可以方便地创建自定义镜像,并且能够保证镜像的可重复性和一致性。例如,以下是一个简单的 Dockerfile 示例:
# 使用官方的Python镜像作为基础镜像
FROM python:3.9# 设置工作目录
WORKDIR /app# 将当前目录下的所有文件复制到容器的/app目录下
COPY. /app# 安装项目所需的依赖
RUN pip install -r requirements.txt# 设置容器启动时要执行的命令
CMD ["python", "app.py"]
  1. 数据管理
    数据卷(Volumes):数据卷是一个可供容器使用的特殊目录,它可以绕过联合文件系统,提供了一种在容器和宿主机之间共享数据的方式。数据卷可以在容器创建时指定,并且可以在多个容器之间共享。例如,可以使用docker run -v /host/path:/container/path ubuntu:latest将宿主机的/host/path目录挂载到容器的/container/path目录。
    容器数据持久化:通过数据卷,即使容器被删除,数据卷中的数据也不会丢失,从而实现了容器数据的持久化。这对于保存应用程序的配置文件、数据库数据等非常重要。

  2. 网络配置与进阶使用
    容器网络模式:Docker 支持多种网络模式,如桥接模式(默认)、主机模式、none 模式等。在桥接模式下,容器会连接到一个虚拟的网桥,通过网桥与宿主机和其他容器进行通信。主机模式则让容器直接使用宿主机的网络,容器的网络配置与宿主机相同。none 模式下,容器没有网络配置,需要用户自行配置网络。
    容器间通信:可以通过网络别名或 IP 地址在同一网络中的容器之间进行通信。例如,在一个 Docker 网络中,容器 A 可以通过容器 B 的网络别名或 IP 地址访问容器 B 提供的服务。
    Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。你可以使用 YAML 文件来配置应用程序的服务、网络和卷,然后通过一个命令来启动整个应用程序。
    Docker Swarm 是 Docker 的原生集群工具,可以将多个 Docker 主机组合成一个单一的虚拟 Docker 主机,从而实现容器的编排和管理

举一个例子来使用docker
首先要有一个Dockerfile:

FROM ros:melodic-ros-coreSHELL ["/bin/bash", "-c"]ENV DEBIAN_FRONTEND noninteractiveRUN apt-get update && \apt-get install -y curl git python-pip && \pip install -U --no-cache-dir supervisor supervisor_twiddler rosdep && \rosdep init && \apt-get clean# OSRF distribution is better for gazebo
RUN sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list' && \curl -L http://packages.osrfoundation.org/gazebo.key | apt-key add -# RUN apt-get update && \RUN set -eux; \
for i in $(seq 1 5); do \if apt-get update; then \break; \else \echo "Error: apt-get failed (attempt $i of 5). Retrying..." >&2; \sleep 1; \fi; \
done; \
if [ "$i" = 5 ]; then \echo "Error: apt-get failed after 5 attempts." >&2; \exit 1; \
fiRUN set -eux; \
for i in $(seq 1 5); do \if apt-get install -y ros-melodic-gazebo-plugins ros-melodic-xacro ros-melodic-controller-manager ros-melodic-robot-state-publisher; then \break; \else \echo "Error: apt-get failed (attempt $i of 5). Retrying..." >&2; \sleep 1; \fi; \
done; \
if [ "$i" = 5 ]; then \echo "Error: apt-get failed after 5 attempts." >&2; \exit 1; \
fiRUN git clone --depth 1 https://github.com/osrf/gazebo_models.git /tmp/gazebo_models && \cp -r /tmp/gazebo_models/cafe_table /usr/share/gazebo-9/models/ && \cp -r /tmp/gazebo_models/first_2015_trash_can /usr/share/gazebo-9/models/ && \cp -r /tmp/gazebo_models/mailbox /usr/share/gazebo-9/models/ && \cp -r /tmp/gazebo_models/table_marble /usr/share/gazebo-9/models/ && \rm -r /tmp/gazebo_modelsRUN mkdir /srcADD src /srcRUN source /opt/ros/melodic/setup.bash && \mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src && \catkin_init_workspace && \git clone --depth 1 -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git && \git clone --depth 1 -b melodic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git && \cp -r /src . && \cd .. && \rosdep update && rosdep install --from-paths src --ignore-src -r -y && \catkin_make -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/ros/melodic install && \apt-get clean && rm -r ~/catkin_wsADD supervisord.conf /etc/supervisor/supervisord.confVOLUME /opt/ros/melodic/share/turtlebot3_descriptionRUN echo "export ROBOT_HOST=hiwonder LIDAR_TYPE=G4" >> /opt/ros/$ROS_DISTRO/setup.bashCMD ["/usr/local/bin/supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"]

一个supervisord.conf:

[unix_http_server]
file=/var/run/supervisor.sock
chmod=0700[inet_http_server]
port = :9001[supervisord]
nodaemon=true[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface[rpcinterface:twiddler]
supervisor.rpcinterface_factory = supervisor_twiddler.rpcinterface:make_twiddler_rpcinterface[supervisorctl]
serverurl=unix:///var/run/supervisor.sock[program:simulator]
# command=/ros_entrypoint.sh roslaunch turtlebot3_gazebo turtlebot3_autorace.launch
command=/ros_entrypoint.sh roslaunch hiwonder_gazebo worlds.launch
# environment=TURTLEBOT3_MODEL=burger
autostart=true
autorestart=true
stopwaitsecs=30
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

有了dockerfile过后就可以创建docker镜像

sudo docker build -f Dockerfile -t devrt/simulator-robot:latest .

以当前目录下的 Dockerfile 为基础,使用当前目录作为构建上下文,构建一个名为 devrt/simulator-robot 且标签为 latest 的 Docker 镜像。构建过程中,Docker 会根据 Dockerfile 中的指令执行一系列操作,如安装软件包、复制文件、设置环境变量等,最终生成一个可运行的镜像。
在这里插入图片描述
在这里插入图片描述
之前创建过,所以直接创建好了镜像了
接下来就需要创建容器了,比如sudo docker run devrt/simulator-robot:latest,或者后台持续运行sudo docker run -d devrt/simulator-robot:latest等等,但是我们希望的是创建多个容器,所以运行的是

sudo docker compose up

对应的docker-compose.yaml为

version: '2.3'
services:xserver:image: devrt/xserveripc: hostsecurity_opt:- seccomp:unconfinedports:- "3000:80"healthcheck:test: ["CMD-SHELL", "test -e /tmp/.X11-unix/X0"]interval: "1s"retries: 20simulator:image: devrt/simulator-robotipc: hostsecurity_opt:- seccomp:unconfinedenvironment:- DISPLAY=:0- GAZEBO_MODEL_PATH=/home/developer/models:$GAZEBO_MODEL_PATH  # Add models to Gazebo pathvolumes_from:- xservervolumes:- ./ros/models:/home/developer/models:rw  # Mount local models folder to simulator- ./ros/worlds/turtlebot3_autorace.world:/opt/ros/melodic/share/turtlebot3_gazebo/worlds/turtlebot3_autorace.world:ro  # Replace the world filedepends_on:- xserverworkspace:# env_file:#   - .envimage: devrt/ros-devcontainer-vscode:noetic-desktopipc: hostsecurity_opt:- seccomp:unconfinedports:- "3001:3000"- "3002:8888"volumes:- workspace:/workspace- .src:/workspace/src:rw  # Mount local src to /workspace in containerenvironment:- DISPLAY=:0- ROS_MASTER_URI=http://simulator:11311/volumes_from:- xserver- simulatordepends_on:- xserver
volumes:workspace:

services 部分定义了在 Docker Compose 中要运行的各个服务,每个服务对应一个或多个容器。
所以相当于他会自动去拉取其他镜像比如devrt/xserver:
在这里插入图片描述

在这里插入图片描述
这里当然是创建了三个容器,有些镜像会自动从hub上进行下载
以上测试文件请下载相关绑定的资源

下一次来看如何打包一个docker.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/73802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW 线性拟合

该 LabVIEW 程序实现了 线性拟合(Linear Fit),用于计算给定一组数据点的斜率(Slope)和截距(Intercept),并将结果可视化于 XY Graph 中。本案例适用于数据拟合、实验数据分析、传感器…

Swift 并发中的任务让步(Yielding)和防抖(Debouncing)

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

【Android】RuntimeShader 应用

1 简介 RuntimeShader 是 Android 13(T)中新增的特性,用于逐像素渲染界面,它使用 AGSL(Android Graphics Shading Language)编写着色器代码,底层基于 Skia 图形渲染引擎。官方介绍详见 → Runti…

小程序API —— 53 本地存储

小程序本地存储是指在小程序中使用 API 将数据存储在用户的设备上,以便小程序在运行时和下次启动时快速地读取这些数据; 小程序本地存储的 API 可以分为两类,每一类可以分为四种: 同步 API: 存储:wx.setS…

el-table树形表格合并相同的值

el-table树形表格合并相同的值 el-table树形表格合并相同的值让Ai进行优化后的代码 el-table树形表格合并相同的值 <style lang"scss" scoped> .tableBox {/deep/ &.el-table th:first-child,/deep/ &.el-table td:first-child {padding-left: 0;} } …

DeepSeek + Kimi 自动生成 PPT

可以先用deepseek生成ppt大纲&#xff0c;再把这个大纲复制到Kimi的ppt助手里&#xff1a; https://kimi.moonshot.cn/kimiplus/conpg18t7lagbbsfqksg 选择ppt模板&#xff1a; 点击生成ppt就制作好了。

Unity 解决TMP_Text 文字显示异常的问题

问题 Unity 中TMP_Text 文字显示异常大多可分为两种情况。①制作TMP 字体选用的文本不包含该文字&#xff1b;②制作TMP 字体选用的ttf 源不包含该文字。 第一种情况&#xff0c;制作TMP 字体选用的文本不包含&#xff0c;只需在选用的Charater File 中添加再重新生成即可。 …

汽车机械钥匙升级一键启动的优点

汽车机械钥匙升级一键启动的优点主要包括&#xff1a; 便捷性&#xff1a;一键启动功能的引入极大地提升了用车便捷性。车主无需翻找钥匙&#xff0c;只需在车辆感应范围内轻触启动键&#xff0c;即可轻松发动汽车。 安全性&#xff1a;移动管家专车专用一键启动系统配备了防…

【深度学习量化交易16】触发机制设置——基于miniQMT的量化交易回测系统开发实记

我是Mr.看海&#xff0c;我在尝试用信号处理的知识积累和思考方式做量化交易&#xff0c;应用深度学习和AI实现股票自动交易&#xff0c;目的是实现财务自由~ 目前我正在开发基于miniQMT的量化交易系统——看海量化交易系统。 很多朋友关心回测系统的开发进展&#xff0c;在正式…

图解AUTOSAR_CP_WatchdogDriver

AUTOSAR WatchdogDriver模块详解 AUTOSAR MCAL层看门狗驱动模块详细解析 目录 1. 模块概述2. 架构位置 2.1. 组件架构 3. 主要功能4. API接口5. 配置参数 5.1. 配置模型 6. 错误代码7. 状态管理 7.1. 状态机 8. 处理流程 8.1. 活动流程 9. 操作序列 9.1. 典型操作序列 10. 硬件…

Linux操作系统应用

Linux操作系统应用 一、用户与用户组管理1.1 管理用户1.1.1 与用户账号相关的文件1.1.2 用户管理命令1.1.3 任务实施 1.2 管理用户组1.2.1 用户组1.2.2 用户组管理命令 1.3 查看用户和用户组状态1.3.1 用户查看命令 id、who、whoami1.3.2 用户身份切换命令 su、sudo 二、文件管…

拖拽实现+摇杆实现

拖拽实现 拖拽事件实现: 半透明渐变贴图在ios设备下&#xff0c;使用压缩会造成图片质量损失&#xff0c;所以可以将半透明渐变UI切片单独制作真彩色图集 拖拽事件组 IBeginDragHandler:检测到射线后&#xff0c;当拖拽动作开始时执行一次回调函数 IDragHandler:拖拽开始后&a…

xLua_001 Lua 文件加载

xLua下载 1、HelloWrold 代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; // 引入XLua命名空间 public class Helloworld01 : MonoBehaviour {//声明LuaEnv对象 private LuaEnv luaenv;void Start(){//实例化LuaEnv对象…

【sql靶场】第18-22关-htpp头部注入保姆级教程

目录 【sql靶场】第18-22关-htpp头部注入保姆级教程 1.回顾知识 1.http头部 2.报错注入 2.第十八关 1.尝试 2.爆出数据库名 3.爆出表名 4.爆出字段 5.爆出账号密码 3.第十九关 4.第二十关 5.第二十一关 6.第二十二关 【sql靶场】第18-22关-htpp头部注入保姆级教程…

Python----计算机视觉处理(Opencv:形态学变换)

一、形态学变化 形态学变换&#xff08;Morphological Transformations&#xff09;是一种基于形状的图像处理技术&#xff0c;主要处理的对象为二值化图像。 形态学变换有两个输入和一个输出&#xff1a;输入为原始图像和核&#xff08;即结构化元素&#xff09;&#xff0c;输…

【最新版】智慧小区物业管理小程序源码+uniapp全开源

一.系统介绍 智慧小区物业管理小程序,包含小区物业缴费、房产管理、在线报修、业主活动报名、在线商城等功能。为物业量身打造的智慧小区运营管理系统,贴合物业工作场景,轻松提高物业费用收缴率,更有功能模块个性化组合,助力物业节约成本高效运营。 二.搭建环境 系统环…

C++模板进阶

目录 非类型模板参数 类模板的特化 分类 函数模板的特化 模板分离编译 问题 解决方法 1&#xff09;不对模板定义进行分离或对模板进行特例化&#xff1b; 2&#xff09;将声明和定义放在同一个文件 总结 关于C模板的使用在《C类和对象》中有介绍&#xff0c;本篇博客…

停车场停车位数据集,标注停车位上是否有车,平均正确识别率99.5%,支持yolov5-11, coco json,darknet,xml格式标注

停车场停车位数据集&#xff0c;标注停车位上是否有车&#xff0c;平均正确识别率98.0&#xff05;&#xff0c;支持yolov5-11&#xff0c; coco json&#xff0c;darknet&#xff0c;xml格式标注 数据集-识别停车场所有车辆的数据集 数据集分割 一共184张图片 训练组 89&am…

Lora微LLAMA模型实战

引言 本文介绍如何复现Alpaca-lora&#xff0c;即基于alpaca数据集用lora方法微调Llama模型。 环境准备 实验环境用的是lanyun&#xff0c;新用户点击注册可以送算力。 下载huggingface上的模型是一个令人头疼的问题&#xff0c;但在lanyun上可以通过在终端运行source /etc…

什么是站群服务器?站群服务器应该怎么选?

站群服务器是专门用于托管和管理多个网站的服务器。通常用于SEO优化、内容分发、广告推广等场景&#xff0c;用户可以通过一个服务器管理多个站点&#xff0c;提升效率并降低成本。选择站群服务器时&#xff0c;需根据业务需求、性能要求、IP资源等因素进行综合考虑。 什么是站…