首页 > 其他分享 >docker使用

docker使用

时间:2024-08-05 12:28:06浏览次数:14  
标签:容器 compose app db 使用 镜像 docker

创建并运行容器:

FROM python:3.10-slim
WORKDIR /app
COPY . .
RUN pip install numpy
CMD ["python","a.py"]

首先创建一个Dockerfile
然后FROM指定基础镜像,WORKDIR指定之后所有docker命令工作路径,COPY把文件从一个本地路径拷贝到镜像路径(这里就是把当前目录的所有内容拷贝到镜像路径/app下),RUN指定创建镜像时运行的命令,CMD指定容器运行时运行的命令
之后,

docker build -t myapp .

-t后面跟镜像名,.表示在当前目录寻找Dockerfile

docker run -p 80:5000 -d myapp

-p指定从本地主机到容器的端口映射(前面是本地端口,后面是容器端口),-d指定容器后台运行,最后是镜像名
一些其他指令:

docker ps #列举所有容器
docker stop <id> #停止容器
docker restart <id> #重启容器
docker rm <id> #删除容器
docker exec -it <id> /bin/bash #启动远程容器

为防止数据随着容器删除消失,可以创建volume数据卷

docker volume create my_volume

在docker run的时候通过-v参数指定容器用的数据卷以及挂载到容器的哪个路径上

docker run -p 80:5000 -d myapp -v my_volume:/etc/myapp

连接两个容器:

创建一个 docker-compose.yml 文件以连接两个 Docker 镜像,可以通过定义服务和网络来实现。以下是一个示例,以及每个参数的解释:

示例 docker-compose.yml

version: '3.8'

services:
  app:
    image: your_app_image:latest
    build:
      context: ./app
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    environment:
      - DATABASE_HOST=db
      - DATABASE_PORT=5432
      - DATABASE_USER=user
      - DATABASE_PASSWORD=password
    networks:
      - app-network
    depends_on:
      - db

  db:
    image: postgres:13
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=your_database
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password
    networks:
      - app-network

networks:
  app-network:

volumes:
  db-data:

参数解释

  1. version:

    • 定义 docker-compose 文件的版本。这决定了可用的功能和语法。
  2. services:

    • 定义了多个服务,每个服务会运行一个容器。
  3. app:

    • image: 使用的镜像名(例如 your_app_image:latest)。
    • build: 构建镜像的配置。
      • context: Dockerfile 所在的目录。
      • dockerfile: Dockerfile 的文件名。
    • ports: 映射主机和容器的端口。格式为 "主机端口:容器端口"
    • environment: 环境变量列表,用于配置容器内部的应用。
    • networks: 该服务所连接的网络。
    • depends_on: 定义服务的依赖关系,确保服务按顺序启动。
  4. db:

    • image: 使用的镜像名(例如 postgres:13)。
    • volumes: 数据卷,用于持久化数据。
      • db-data:/var/lib/postgresql/data: 将主机上的 db-data 卷挂载到容器内的指定路径。
    • environment: 环境变量列表,用于配置数据库。
  5. networks:

    • 定义网络。在这个例子中,只有一个网络 app-network,用于连接 appdb 服务。
  6. volumes:

    • 定义数据卷。在这个例子中,只有一个数据卷 db-data,用于持久化数据库的数据。

运行 docker-compose.yml

  1. 确保你已经安装了 Docker 和 Docker Compose。

  2. 在包含 docker-compose.yml 文件的目录中运行以下命令:

    docker-compose up
    

    这将会启动定义的服务并创建网络和卷。

  3. 若要在后台运行服务,可以使用:

    docker-compose up -d
    

通过这种方式,你可以轻松地管理和连接多个 Docker 容器,并使用 docker-compose.yml 文件进行配置和部署。

标签:容器,compose,app,db,使用,镜像,docker
From: https://www.cnblogs.com/tongyf2333/p/18342980

相关文章

  • Linux修改Swap分区大小及使用优先级
      Swap是Linux系统中的一种虚拟内存,用于在物理内存不足时扩展可用内存。当系统的物理内存不足以满足所有运行进程的需求时,操作系统会将不常用的数据存储在Swap分区中。在某些情况下,可能需要增加Ubuntu系统上的Swap大小,以提供更多的可用内存。以下将介绍调整Swap分区大小和使用......
  • Salesforce Sales Cloud 零基础学习(五) My Labels的使用
    本篇参考:https://help.salesforce.com/s/articleView?id=sf.sales_core_record_labels.htm&type=5 在公司中,SDR以及AE每天可能需要追踪很多的Lead以及Opportunity,针对Lead/Opportunity可能每天需要和潜在客户进行多次联系,每次联系可能有一些记录的消息以及自己做一些笔记。比......
  • 使用 clearError 清除已处理的错误
    title:使用clearError清除已处理的错误date:2024/8/5updated:2024/8/5author:cmdragonexcerpt:摘要:“文章介绍了clearError函数的作用与用法,用于清除已处理的错误并可实现页面重定向,提升用户体验。通过示例展示了在表单提交场景中如何应用此函数进行错误处理和状态......
  • Docker 网络
    Docker网络是Docker容器化平台的重要组成部分,它允许容器之间以及容器与外部网络进行通信。Docker提供了多种网络驱动和配置选项,以满足不同的网络需求。本文将详细介绍Docker网络的相关知识,并提供示例帮助理解。1.Docker网络基础1.1网络驱动Docker支持多种网络......
  • Android 之 PopUpWindow 控件的使用(努力z的日记)
    Gif示例:上面的示例是模仿一些App设置的弹窗,为了实现上面gif中的效果,可以通过PopUpWindow实现。以下是实现过程。(欢迎大佬指证o.o)1:创建PopUpWindow动画(anim)    这个anim是在开发中扮演很重要的一环,因为好看o.o,所以麻烦。浅入浅出是我们比较常见的。(因为周师傅只会......
  • div中添加el-loading(局部loading的使用)
    div中添加el-loading(局部loading的使用)效果:在div中实现el-loadinghttps://img-blog.csdnimg.cn/c2870e74bd344b06ad1ccb0844b8e8ce.png<divclass="content-main">{{hotList}}</div>getHotList(columnType){this.$nextTic......
  • 求助!C++使用Eigen求多项式根报错访问冲突
    本地环境:VS2022安装的NuGet包:Eigen版本3.3.9配置MKL头文件相关代码#include<cmath>#include<math.h>#include<stddef.h>#include<stdlib.h>#include<string.h>voidComputeTest();源文件相关代码#defineEIGEN_USE_MKL_ALL#defineEIGEN_VECTORIZ......
  • 使用TaskDecorator装饰器实现再线程隔离下的数据复制
    自定装饰器importorg.slf4j.MDC;importorg.springframework.core.task.TaskDecorator;importjava.util.Map;publicclassComTaskDecoratorimplementsTaskDecorator{@OverridepublicRunnabledecorate(Runnablerunnable){//主线程可执行的代......
  • Android mvvm使用流程
    Androidmvvm使用流程一.几种常见架构模式对比1.MVC(Model-View-Controller)MVC模式的优点在于模块化、可扩展性和可维护性,但缺点是控制器和视图之间的耦合度较高。2.MVP(Model-View-Presenter)模式Presenter同时持有Model和View对象,缺点是V层与P层还是有一定的耦合度3.MVVM(Model-View......
  • Windows使用命令行终止任务
    在Windows操作系统中,可以使用命令提示符(cmd)或WindowsPowerShell来查看运行的任务并终止指定的任务。以下是一些常用的命令:使用命令提示符(cmd)查看运行的任务:打开命令提示符,然后输入以下命令:tasklist这个命令会显示所有当前运行的进程及其对应的进程ID(PID)。终止指定的任务:......