dock与linux

简介: 本文介绍了 Linux 常用命令与 Docker 的基本操作,涵盖文件管理、权限修改、日志查看、容器管理、镜像构建及 Docker Compose 编排等内容,帮助开发者快速掌握项目部署与服务管理技能。

dock与linux

linux常见命令:

1.cd

2.ls ll

3.grep

4.tail 动态输出

5.grep 管道命令搜索

6.chomd  修改权限

7.编辑相关

7.1 vi ,vim

7.2  a,i o

7.3 esc +:q/:wq!

应用场景:

8.排查故障   cat 日志文件 |grep ("敏感词")

 拓展 分布式/微服务 :arthas /skywalking(排查万能工具)

9.部署项目步骤:

9.1打包:(打成jar包) 在maven中使用package/install

9.2 上传: 直接拉过去(放到相应的目录中)一般????

9.3 运行: java -jar 项目jar包(运行前要先配置java环境)

9.4 停止原来的服务: kill -9 pid(进程号)

docker

常见命令:

查看镜像:docker images

拉取/推送镜像: docker pull / push

删除镜像: docker rmi -f (i:代表镜像images)

容器启停:dockers run/start/restart/stop

查看所用运行中的容器: docker ps

查看全部容器:docker ps -a

查看docker日志 docker logs -f 容器名称(判断是否部署成功 -f 滚动刷新)

进入容器:docker exec -it 容器名称 bash

删除容器:docker rm -f(强制删除正在运行的容器,先关闭容器使用stop 在使用  docker rm 不用 -f )

创建网络(单机):docker network create

数据卷:(本质上就类似于共享的内存(docker,内不可见)然后放在 linux(可见,便于访问与修改));数据卷必须在创建docker是就必须挂载

docker volume inspect/create

示例:docker run -d --name 容器名称 -p 80:80 -v html:/usr/share/nginx/html nginx

9.4 停止原来的服务: kill -9 pid(进程号)

Docker Compose 和 Dockerfile 是互补关系:

  • Dockerfile 负责构建单个组件的镜像(解决 “如何打包”)。
  • Docker Compose 负责编排多个容器(解决 “如何协同工作”)
  • 使用 Compose 时通常仍需要 Dockerfile,除非你的所有组件都能直接使用官方镜像且无需自定义。

核心区别:Dockerfile 与 Docker Compose 的定位

维度

Dockerfile

Docker Compose

作用

定义 “单个容器” 的镜像构建规则

定义 “多个容器” 的关系和启动方式

关注对象

单个组件(如前端、后端)的环境打包

整个应用系统(多组件协同)的部署流程

执行方式

通过 docker build

构建镜像

通过 docker-compose up

启动所有容器

依赖处理

仅处理单个容器内的依赖

处理容器间的依赖关系(如 depends_on

)

文件位置

每个组件目录下单独存放

通常放在项目根目录(统一管理所有组件)

总结

dockersfile(部署单个组件)

步骤:

1.创建目录(最终打包成镜像)

2.编写dockerfile(  成分: from (基础镜像(比如应用的centos)   )

文件名 Dockerfile:

# 使用 CentOS 7 作为基础镜像
FROM centos:7
# 设置维护者信息,非必须
LABEL maintainer="hebo@itcast.cn"
# 添加 JDK 到镜像中
作用:将文件或目录从构建上下文复制到镜像中。
COPY jdk17.tar.gz /usr/local/
RUN tar -xzf /usr/local/jdk17.tar.gz -C /usr/local/ &&  rm /usr/local/jdk17.tar.gz
# 设置环境变量
作用:设置环境变量,在容器运行时保持有效。
ENV JAVA_HOME=/usr/local/jdk-17.0.10
ENV PATH=$JAVA_HOME/bin:$PATH
# 注意,必须改成自己的
ENV OSS_ACCESS_KEY_ID LTAI5tFww3VE7EZSs9dfh7j5
ENV OSS_ACCESS_KEY_SECRET 3eVYBbuK1F8rX5Tv0ge8lkKG1TrOLs
# 创建应用目录
RUN mkdir -p /tlias
作用:为后续的 RUN、CMD、COPY、ADD 等命令设置工作目录。
WORKDIR /tlias
# 复制应用 JAR 文件到容器
COPY  tlias.jar  tlias.jar
# 暴露端口
EXPOSE 8080
作用:声明容器运行时监听的端口,但不会实际映射端口。
# 运行命令
作用:配置容器启动时执行的命令,不会被 docker run 的参数覆盖,但可以通过 --entrypoint 选项覆盖。
ENTRYPOINT ["java","-jar","/tlias/tlias.jar"]

3.准备文件(把所需要的文件放到相应目录下)

4.构建镜像(是整个文件的镜像,就是相当于打包(所需的文件放到一个目录,编写一个dockerfile记录配置信息),总体打包成镜像)  使用docker build -t 目录名 .(.代表当前目录)

5.运行容器

例:

mysql的
docker run -d \   -d 后台运行
  --name mysql2 \  -- name 容器名称
  -p 3308:3306 \   -- linux端口用户直接访问的:docker的mysql端口(固定3306) 类似代理(linux是公网ip,后面的是局域网的ip)
  -e TZ=Asia/Shanghai \  -- 设置时区 可写可不写
  -e MYSQL_ROOT_PASSWORD=123 \   -- 用户名和密码 (mysql必须大写??)
  mysql:8  // 使用 docker images 查询版本 (是latest可以不用写,直接写 mysql)
  运行之后不报错误,可以使用docker logs -f 容器名称
  如果有进程占用,使用 docker ps 查看进程id 再使用 kill -9 进程号 占用情况下

9.4 停止原来的服务: kill -9 pid(进程号)

dockecompose

实质上是把 已经打包好的镜像给组合起来,并实行通信

主要通过配置文件镜像进行拉取镜像

dockercompose文件

version: "3.8"
services:
  mysql:
    image: mysql:8
    container_name: mysql
    ports:
      - "3307:3306"
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123
    volumes:(挂载卷)
      - "/usr/local/app/mysql/conf:/etc/mysql/conf.d"
      - "/usr/local/app/mysql/data:/var/lib/mysql"
      - "/usr/local/app/mysql/init:/docker-entrypoint-initdb.d"
    networks:
      - itheima
  tlias:
    build: 
      context: .
      dockerfile: Dockerfile
    container_name: tlias-server
    ports:
      - "8080:8080"
    networks:
      - itheima
    depends_on:
      - mysql
  nginx:
    image: nginx:1.20.2
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - "/usr/local/app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
      - "/usr/local/app/nginx/html:/usr/share/nginx/html"
    depends_on:
      - tlias
    networks:
      - itheima
networks:
  itheima:
    name: itheima

执行命令

docker-compose up -d

本质上 文件打包 (源码直接使用maven install打包) -> 镜像(就是编写dockerfile 最后使用 docker build -t 镜像名称和版本信息命令转化为镜像)->容器(通过docker run 由镜像变成容器)->运行多个容器(整体运行 docker-compose up -d ,通过识别当前目录下docker-compose.yaml进行编译运行(特定名字,有变更,执行命令要指定名字) )

 0-1 与1-2 怎么部署

0-1docker run

1-2 docker start

docker 本质上就是一个进程,可以运行在不同的系统的上面

相关文章
|
存储 传感器 数据可视化
【软件设计师备考 专题 】IO接口的功能、类型和特性
【软件设计师备考 专题 】IO接口的功能、类型和特性
1095 1
|
网络协议 Shell 网络安全
在外SSH远程连接macOS服务器【cpolar内网穿透】
macOS系统自带有Secure Shell 客户端,它可让您登录到侦听传入SSH连接的远程服务器和台式机。我们可以用ssh username@ip来ssh到服务器,但通常局限于局域网内的远程。
1153 0
|
数据采集 运维 数据管理
数据管理能力成熟度模型
为促进大数据产业持续深入发展,提高政府、企事业单位大数据资产管理意识,借鉴国内外成熟度相关理论思想,结合数据生命周期管理各个阶段的特征,对数据管理能力进行了分析、总结,提炼出组织数据管理的八大过程域,并对每项能力进行了二级过程域和发展等级的划分以及相关功能介绍和评定标准的制定。
2258 1
|
10月前
|
弹性计算 Linux 网络安全
阿里云服务器 ECS 新手购买保姆级全流程指南
阿里云服务器 ECS(Elastic Compute Service)是具备安全可靠、弹性可伸缩特性的云计算服务,用户可根据自身需求自定义配置各项参数完成购买。以下是详细的购买流程及配置选择说明,适用于需要灵活调整服务器参数的用户。
|
10月前
|
人工智能 自然语言处理 算法
2025年AI 搜索优化(GEO)行业年度盘点:从资本爆发到入场公司初步分化
2025年,AI搜索优化(GEO)爆发式增长,取代传统SEO成营销新焦点。受全球资本热捧,中国市场规模突破480亿元,即搜AI与边鱼科技领跑,分别布局全域搜索与中小微企业服务。技术与商业闭环加速构建,行业迈向可持续价值竞争。
|
人工智能 数据可视化 测试技术
如何从海量数据中精准提取关键信息,并让Agent更智能地理解用户意图?让模型推理成为Agent开发者的‘超级助手’?
本文产品专家三桥君探讨了AI Agent开发中的核心推理场景与实用技巧,帮助开发者提升模型智能水平。涵盖关键场景:模糊信息处理、海量数据提炼、复杂文档解析、多阶段任务规划、跨模态视觉推理、代码审查及智能评估。同时提出实用技巧:简洁指令设计、避免分步诱导、结构化信息分隔、显式约束声明及动态迭代优化。
674 0
|
JSON 安全 API
通用图片搜索-搜狗源免费API接口使用指南
本文介绍接口盒子(apihz.cn)提供的搜狗图片搜索免费API,支持通过关键词获取图片搜索结果,适用于图片采集、内容分析等场景。提供请求地址、参数说明、返回示例及调用注意事项。
1119 1
|
数据采集 人工智能 分布式计算
《Java 与大数据框架:AI 数据预处理的强力联盟》
在人工智能领域,数据预处理是确保模型准确性和高效性的关键。Java 与 Hadoop、Spark 等大数据框架的结合,为处理海量数据提供了强大的支持。通过 Java 编写的 MapReduce 和 Spark 程序,可以高效进行数据清洗、转换和特征提取,充分利用分布式计算能力,缩短预处理时间,提升数据质量。Java 在整合这些框架时,不仅实现了任务调度和错误处理,还为未来的优化和技术进步奠定了基础。这一组合为 AI 数据预处理带来了高效的解决方案,推动了人工智能技术的发展。
639 18