当前位置: 首页 > article >正文

容器化部署服务全流程

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、什么是容器?
  • 二、如何安装docker
  • 三、如何写dockerfile
  • 四、如何启动服务
  • 五、常见命令总结
  • 总结


前言

这篇文章,‌主要目的是通过容器化技术简化应用程序的部署、运行和管理,提高开发、测试和生产环境的一致性,以及资源的优化利用


一、什么是容器?

‌Docker是一种开源的容器化技术,主要用于简化应用程序的开发、部署和运行过程。‌它通过提供一个轻量级的虚拟化环境,使得开发者可以打包、分发和运行应用程序及其依赖环境。Docker将应用程序及其所有依赖项打包成一个“容器”,这个容器可以在任何支持Docker的系统上运行,而无需担心环境配置等差异的影响的问题。

Docker的核心概念包括容器、镜像、Dockerfile和镜像仓库。容器是Docker的基本部署单元,它是一个轻量级的、独立的运行时环境,包含应用程序及其相关依赖。镜像用于创建容器的模板,包含了一个完整的文件系统,包括应用程序运行所需的所有文件、依赖和配置信息。Dockerfile是一种文本文件,用于定义Docker镜像的构建过程。镜像仓库则用于存储和分发Docker镜像。

Docker相比传统的虚拟机具有更高的效率和灵活性。它利用Linux内核的命名空间和控制组技术,实现了隔离性和资源管理,使得应用程序在不同的容器中运行不会相互影响。此外,Docker的轻量性和可移植性使得开发人员可以更轻松地创建一个可靠的开发环境,快速部署应用程序。

二、如何安装docker

已centos系统为例:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
sudo yum install -y yum-utils 

sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo yum makecache fast
sudo yum install docker-ce docker-ce-cli containerd.io  

yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/docker-ce-cli-19.03.9-3.el7.x86_64.rpm

创建开机启动,与服务自启动
systemctl enable docker
systemctl restart docker

docker version
docker run hello-world

安装报错

如果上述安装过程中报错,如何解决

[添加链接描述](https://mirrors.aliyun.com/docker-ce/linux/centos/7.5/x86_64/edge/Packages/)

yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/docker-ce-cli-19.03.9-3.el7.x86_64.rpm


wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release -y
yum install container-selinux -y 

下载centos7 镜像base镜像

下载docker
修改代理:https://hub.atomgit.com
[root@cluster-node-1 ~]# cat /etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://hub.atomgit.com"
    ]
}
重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
下载docker:centos 7.0镜像
docker pull centos:7
docker run -it centos:7 bash

三、如何写dockerfile

Dockerfile.runtime 如下(基于centos:7)实现

ARG Version=7

FROM centos:${Version}
LABEL maintainer="davit <wangweifb@enn.cn>" project-url="enn vplatform" description="视频综合管理平台"


# 备份现有的 YUM 源配置文件
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 下载新的 YUM 源配置文件
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清理 YUM 缓存并更新
RUN yum clean all && yum makecache

RUN yum update -y
RUN yum install -y  \
        gcc \
        gcc-c++ \
        kernel-devel \
        kernel-headers \
        openssl \
        openssl-devel \
        git \
        wget \
        procps-ng \
        which \
        vim \
        sysvinit-tools \
        systemd \
        net-tools

WORKDIR /opt/
COPY APP.tar /opt
RUN tar xf APP.tar

ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH TZ=Asia/Shanghai
WORKDIR /opt/APP
# 添加调试信息
RUN echo "Executing install mongo rpm package..."

WORKDIR /opt/APP
COPY start.sh /opt/APP
RUN chmod +x start.sh
RUN echo "Executing build docker..."
CMD ["bash", "start.sh"]

start.sh 自启动脚本如下

#!/bin/bash
dstroot=/opt/APP

cd $dstroot
checkAppStatusIsOk()
{
for module in service1 service2; do
    for line in $(seq -w 2);do
        mongodpid=`pidof $module`	
		if [[ -z $mongodpid ]];then
			echo "please check the app status is OK $module!"
            bash start$module.sh &
		fi
        sleep 1;        
	done
done
}
while true; do
    checkAppStatusIsOk
    sleep 30 # 检查间隔0.5分钟
done

docker镜像生成与删除

根据dockerfile生成docker images
docker build -t vplatform -f Dockerfile.runtime .
如下name即-t后面跟着name,被定义为vplatform
如何删除镜像
docker rmi vplatform

在这里插入图片描述

四、如何启动服务

启动服务,即镜像名为vplatform,启动后容器命名为app-demo
docker run --name app-demo -d vplatform
启动后,查询容器是否正常
docker ps -a

进入docker
docker exec -ti 4bb1e655d551 /bin/bash

查看docker容器的运行日志
docker logs -f 4bb1e655d551

停止docker镜像并删除
docker stop 4bb1e655d551
docker rm 4bb1e655d551

在这里插入图片描述

五、常见命令总结

docker ps -a
docker logs -f davit
docker start davit
docker stop davit
docker rm davit
docker images
docker image rm containerId 
docker version
docker run 
sudo docker attach containerId 
docker image rm 89dc951613c2
docker cp -rf davit:/opt/pipeline/sdk/ .

启动docker命令
-i 交互式
-t 终端
-d 后台运行 结合command[/bin/bash]
--name 容器名称
--add-host db-static:86.75.30.9 添加host
-h 主机名hostname
-v 挂在主机目录到容器
-p 端口映射
--privileged=true 使容器拥有root权限(还不是很理解)
--netwok 是容器接入提前建立好的网络my-gridge-network中
daocloud.io/nginx 镜像地址:标签
/bin/bash command命令
--gpus 设备id

docker stop davit 
docker rm davit
docker exec -ti davit /bin/bash
docker run -p 19000:8000 -p 19001:8001 -p 19002:8002 --name davit -v /home/models:/models --gpus "device=6" -it trtis-dev:latest /opt/trtserver --log-verbose=2 --model-repository /models

总结

以上讲述了docker镜像常用方法,希望对你有所帮助。
授之以鱼不如授之以渔


http://www.kler.cn/a/458242.html

相关文章:

  • YOLOv9-0.1部分代码阅读笔记-train.py
  • LabVIEW 实现自动对焦的开发
  • 【Compose multiplatform教程25】拖放操作
  • Kafka 幂等性与事务
  • 4G报警器WT2003H-16S低功耗语音芯片方案开发-实时音频上传
  • 前端不显示验证码图片
  • 小程序租赁系统开发的优势与实践探索
  • 雷电模拟器安装LSPosed
  • 风控模型面试常问问题
  • 计算机专业考研 408 学科学习方法
  • Linux(centos)安装 MySQL 8 数据库(图文详细教程)
  • 进阶岛-L2G5000
  • Kafka 监控都有哪些?
  • 【Golang 面试题】每日 3 题(八)
  • 可视化逻辑表达式编辑器
  • 计算机毕业设计Spark+大模型股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI
  • 服务器开发Go语言的算法与数据结构
  • 随身 WiFi 连接 X-Wrt 共享网络与 IPv6 中继配置
  • 深入解析 Tengine:高性能 Web 服务器与反向代理的企业级应用
  • 【每日学点鸿蒙知识】Webview加载内容、router返回问题、Webview定制错误页面、html格式字符串、Toggle高
  • 深入探索Django:常用实用方法指南
  • 2025:Massa重新定义去中心化的一年
  • Nginx实现反向代理
  • 做一个网页控制ROS2机器人导航并且查看相机图像
  • 【探花交友】SpringCache
  • 应用于CPO封装模块内的光纤互联方案