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 本质上就是一个进程,可以运行在不同的系统的上面

相关文章
|
4月前
|
SQL JavaScript Java
三层架构理解(实现前后端分离)
本文介绍了三层架构实现前后端分离的流程,从前端Vue发起请求,到后端Spring处理数据,最后返回结果并由前端渲染展示。同时详细解析了Bean重复问题的解决方案,包括使用@Service、@Primary、@Qualifier和@Resource注解进行依赖注入控制。此外还介绍了MyBatis中#{}与${}的区别及使用场景,以及三层架构中各组件的协作方式。
|
SQL Serverless 数据库
|
存储 SQL Java
Java8 stream 中利用 groupingBy 进行多字段分组求和
Java8 stream 中利用 groupingBy 进行多字段分组求和
|
4月前
|
Java
初识线程
在 Java 多线程编程中,线程对象名与线程名称是两个不同概念。对象名是代码中引用线程对象的变量名,如 `t1`,而线程名称是线程实例在 JVM 中的标识,可通过 `setName()` 或构造函数设置。若不显式设置,Java 会分配默认名称如 `Thread-0`。通过 `Thread.currentThread().getName()` 可获取当前执行线程的名称。
|
4月前
|
存储 安全 测试技术
Python面试题精选及解析
本文详解Python面试中的六大道经典问题,涵盖列表与元组区别、深浅拷贝、`__new__`与`__init__`、GIL影响、协程原理及可变与不可变类型,助你提升逻辑思维与问题解决能力,全面备战Python技术面试。
168 0
|
7月前
BigDecimal保留两位小数
本文介绍了BigDecimal保留两位小数的三种方法:`setScale`、`DecimalFormat`和`String.format`。其中,`setScale`可设置保留规则并返回BigDecimal类型值;`DecimalFormat`通过匹配规则返回字符串类型值;`String.format`为字符串自带方法,同样返回字符串类型值。此外,文章还对比了四种保留小数规则(如`00.00`、`#0.00`等),总结出`#0.00`是最适用的规则。附有详细代码示例与控制台打印结果,便于理解与实践。
1065 19
|
4月前
|
传感器 机器人 物联网
【免费开源】基于STM32的蓝牙小车/智能小车项目详解(附源码)
通过本项目,你可以系统掌握STM32外设控制、蓝牙通信、电机驱动和传感器数据处理技术,实现一辆可远程控制并具备避障功能的智能小车。该项目具有高度可扩展性,后续可增加循迹、自动寻路、摄像头等高级功能。
907 42
【免费开源】基于STM32的蓝牙小车/智能小车项目详解(附源码)
|
3月前
|
人工智能 供应链 数据可视化
低代码开发平台与零代码平台的区别?国内主流平台介绍与深度对比
本文深入解析低代码与零代码开发平台的技术特性与适用场景,盘点Zoho Creator、织信、OutSystems、简道云、钉钉宜搭等国内主流平台,对比其功能优势与典型案例,为企业数字化转型选型提供参考。
354 1
|
4月前
|
算法 Java
Java语言实现链表反转的方法
这种反转方法不需要使用额外的存储空间,因此空间复杂度为,它只需要遍历一次链表,所以时间复杂度为,其中为链表的长度。这使得这种反转链表的方法既高效又实用。
411 0
|
4月前
|
存储 NoSQL 算法
Redis的集群架构与使用经验
本文介绍了Redis的集群架构与使用经验,包括主从复制、哨兵集群及Cluster分片集群的应用场景与实现原理。内容涵盖Redis主从同步机制、数据分片存储方式、事务支持及与Memcached的区别,并讨论了Redis内存用尽时的处理策略。适用于了解Redis高可用与性能优化方案。