Docker与Docker Compose入门:释放你的应用部署的威力

这篇具有很好参考价值的文章主要介绍了Docker与Docker Compose入门:释放你的应用部署的威力。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

嘿,大家好!今天给大家介绍一项强大而有趣的技能,那就是使用 Docker 和 Docker Compose 来释放你的应用部署的威力!无论你是一名开发人员还是系统管理员,掌握这个技能都将为你的工作带来巨大的好处。

本文大纲如下,

Docker与Docker Compose入门:释放你的应用部署的威力,docker

1. Docker 一键安装

这里给大家分享我的 Docker 一键安装脚本,在大部分基于 Linux 内核的系统中可以直接使用。

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
sudo systemctl enable docker
sudo systemctl start docker
docker version
if [ $? -eq 0  ];then
echo "docker successful  installation!"
fi

# 添加国内镜像
touch /etc/docker/daemon.json
echo "{
  \"registry-mirrors\": [
    \"http://hub-mirror.c.163.com\"
  ]
}" > /etc/docker/daemon.json

sudo systemctl daemon-reload
sudo systemctl restart docker

2. Docker 语法

Docker 的语法非常易懂,它使用简洁的命令和关键字来定义和管理容器。下面是一些常用的 Docker 语法元素:

  • 镜像(image) :镜像是 Docker 的基本概念,它是一个轻量且独立的可执行软件包。你可以将镜像看作是一个包含了完整运行环境的模板,其中包括应用程序、库和依赖。你可以使用 docker pull 命令从 Docker Hub 或其他镜像仓库中获取镜像,也可以使用 docker build 命令通过 Dockerfile 构建自定义镜像。

  • 容器(container) :容器是基于镜像创建的运行实例。你可以使用 docker run 命令来创建并启动一个容器,也可以使用 docker startdocker stopdocker restart 命令来分别启动、停止和重启容器。容器是轻量级的,它们共享主机操作系统的内核,因此可以更高效地运行多个容器。

  • Dockerfile :Dockerfile 是一个文本文件,用于定义如何构建 Docker 镜像。它包含一系列的指令和配置项,例如基础镜像、运行命令、复制文件、设置环境变量等。通过编写 Dockerfile,你可以创建包含自定义配置和应用程序的镜像。

  • 映射端口(port mapping) :使用 -p 参数可以将容器内部的端口映射到主机上的端口。例如,-p 8080:80 将容器内的 80 端口映射到主机的 8080 端口,这样你就可以通过访问主机的 8080 端口来访问容器的服务。

  • 数据卷(volume) :数据卷是用于持久存储数据的特殊目录或文件。数据卷可以在容器之间共享和重用,使得数据持久化且不受容器状态的影响。你可以使用 -v 参数来创建和管理数据卷。

3. 常用 Docker 命令

下面是一些常用的 Docker 命令,让我们一起来了解一下:

  • docker pull IMAGE_NAME:从 Docker Hub 中下载指定名称的镜像。例如:docker pull nginx

  • docker run [OPTIONS] IMAGE [COMMAND] [ARG...]:根据指定的镜像创建并运行一个容器。OPTIONS 可以包括端口映射、数据卷挂载、环境变量设置等。例如:docker run -d -p 8080:80 nginx,这将在后台运行一个 NGINX 容器并将主机的 8080 端口映射到容器的 80 端口。

  • docker ps [OPTIONS]:列出当前正在运行的容器。OPTIONS 可以包括过滤条件、显示格式等。例如:docker ps -a,这将显示所有容器(包括停止的)。

  • docker stop CONTAINER [CONTAINER...]:停止一个或多个容器的运行。例如:docker stop my_container

  • docker build [OPTIONS] PATH:根据指定的 Dockerfile 构建一个镜像。OPTIONS 可以包括镜像名称、标签、构建上下文等。例如:docker build -t my_image:latest .,这将使用当前目录中的 Dockerfile 构建一个名为 my_image 的镜像。

  • docker rm CONTAINER [CONTAINER...]:删除一个或多个容器。例如:docker rm my_container

  • docker exec <container> <command>:在容器中执行指定的命令。例如:docker exec -it my_container bash

以上只是一小部分常用的命令,Docker 提供了很多其他有用的命令和选项,让你可以更灵活地管理容器和镜像。

4. 使用 Dockerfile 自定义镜像

Dockerfile 是一个文本文件,用来描述如何从一个基础镜像(例如 ubuntu 或 alpine)构建出一个新的镜像,包括安装依赖、复制文件、设置环境变量、暴露端口等操作。使用 Dockerfile 可以让开发者清晰地记录应用程序的配置和依赖,以及保证应用程序在不同的环境中运行的一致性。

一个简单的 Dockerfile 文件示例如下:

# 基于 Java 镜像构建
FROM openjdk:8u212-jre

# 配置参数
ENV TZ=Asia/Shanghai
ENV JAVA_OPTS="-Xms128m -Xmx256m -Dfile.encoding=UTF-8"

# 设置时区
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 设置工作目录
WORKDIR /app

# 复制 jar 包到镜像里
COPY target/my-app.jar /app/my-app.jar

# 暴露端口
EXPOSE 8080

# 配置启动命令
CMD  java $JAVA_OPTS -jar /app/my-app.jar  --server.port=8080

简单介绍下上述 Dockerfile 示例的语法:

  • FROM : 指定基础镜像,这里是基于开源的 Java 8 JRE 镜像。

  • ENV : 设置环境变量,这里配置了时区、JVM 参数等。

  • RUN : 执行命令,这里用来设置时区。

  • WORKDIR : 设置工作目录,相当于 cd 命令,之后的命令都在这个目录执行。

  • COPY : 复制文件到镜像,这里复制了编译好的 Java jar 包。

  • EXPOSE : 声明暴露的端口,这里是 8080。

  • CMD : 启动命令,这里配置了启动 Java 程序的命令。

我们要使用 Dockerfile 构建镜像的话,可以使用以下命令:

docker build -t my-app .

其中 -t 参数指定了镜像的名称和标签(默认为 latest),. 表示当前目录寻找 Dockerfile 文件。

要运行构建好的镜像,可以使用以下命令:

docker run -p 8080:8080 my-app

其中 -p 参数指定了容器内外部的端口映射关系,my-app是镜像的名称。

这样我们的 Java 服务就可以在容器里运行,并能够通过宿主机的 8080 端口访问了。

5. Docker Compose 一键安装

这里给大家继续分享我的 Docker Compose 一键安装脚本,大家可以直接使用。

sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version //The following appears,your docker-compose is installation success.

在国内网络中可能遇到 docker-compose 文件下载失败、超时,大家可直接上传本地已经下载好的 docker-compose 文件,也可以私聊我获取最新 docker-compose 文件。

6. 使用 Docker Compose 简化应用部署

除了 Docker 命令,我们还可以使用 Docker Compose 来简化多个容器的管理和部署。

在实际开发中,一个应用程序通常不是单独运行的,而是需要与其他服务(例如数据库、缓存、消息队列等)进行交互。这些服务也可以使用 Docker 来运行,但是如果每个服务都需要单独使用docker run命令来启动,那么就会非常繁琐和容易出错。为了解决这个问题,可以使用 docker-compose 来定义和运行多个容器之间的依赖和协作关系。

docker-compose 是一个工具,可以让开发者使用一个 YAML 文件(通常命名为docker-compose.yml)来描述多个容器之间的配置,包括镜像、端口、环境变量、挂载卷、网络等。使用 docker-compose 可以让开发者一次性地启动或停止所有相关的容器,以及方便地管理容器之间的通信。

一个简单的 docker-compose.yml 示例如下:

version: '3'
services:
  waynboot-mobile-api:
    image: ibm-semeru-runtimes:open-17-jdk
    container_name: mobile
    volumes:
      - /etc/localtime:/etc/localtime
      - /home/logs:/home/logs
      - /opt/waynboot-mall/upload:/opt/waynboot-mall/upload
      - ./jars/waynboot-mobile-api.jar:/home/app/waynboot-mobile-api.jar
    restart: always
    command: java -Xms512m -Xmx512m -Duser.timezone=GMT+8 -Dfile.encoding=utf-8 -jar /home/app/waynboot-mobile-api.jar
    ports:
      - "82:82"
    environment:
      - TZ=Asia/Shanghai
      - LOG_PATH_PREFIX=/home/logs
      - UPLOAD_DIR=/opt/waynboot-mall/upload
    network_mode: "host"
    # 依赖于redis和mysql,在启动本服务之前会先启动依赖的服务
    depends_on:
      - redis
      - mysql
      - rabbitmq
      - elasticsearch

当编写 Docker Compose 文件时,以下是更详细的语法和配置选项解释:

  • 版本(version):Docker Compose 文件的版本,用于指定使用哪个版本的语法。常见的版本号有 '1'、'2'、'2.1'、'3' 等。不同的版本支持不同的功能和语法。

  • 服务(services):这是 Docker Compose 文件的核心部分,用于定义各个服务的配置。每个服务都是一个独立的容器。

    • image:指定要使用的镜像名称。可以是公共镜像(例如 nginxmysql等),也可以是本地构建的私有镜像。如果指定了 build,则会优先使用构建的镜像。

    • build:用于指定构建镜像所需的 Dockerfile 的路径。可以是相对于 Docker Compose 文件的相对路径,或者是包含 Git URL 的完整路径。

      • context:构建上下文路径,表示构建时 Docker 将查找 Dockerfile 文件的位置。

      • dockerfile:指定使用的 Dockerfile 文件名。默认为 Dockerfile

    • ports:定义容器和主机之间的端口映射关系。可以是单个端口,也可以是一个范围。格式为 [主机端口]:[容器端口]。例如,ports: - "8080:80" 表示将容器内的 80 端口映射到主机的 8080 端口。

    • volumes:定义容器和主机之间的文件卷绑定关系。格式为 [主机路径]:[容器路径],可以指定只读或可写。例如,volumes: - "./data:/app/data:ro" 表示将主机上的 ./data 目录挂载到容器内的 /app/data 路径,并以只读方式访问。

    • environment:设置容器中的环境变量。可以是一个键值对或一个列表。例如,environment: - MYSQL_ROOT_PASSWORD=mysecretpassword 设置了一个名为 MYSQL_ROOT_PASSWORD 值为 mysecretpassword 的环境变量。

    • depends_on:指定服务之间的依赖关系。例如,depends_on: - db 表示该服务依赖于名为 db 的服务,在启动时会先启动 db 服务。

    • command:定义容器启动时要执行的命令。例如,command: bundle exec rails server 表示在容器启动时执行 bundle exec rails server 命令。

  • 网络(networks):用于定义网络配置。

    • driver:指定网络使用的驱动程序。常见的驱动程序有 bridgeoverlaymacvlan 等。

    • driver_opts:用于指定特定驱动程序的选项。例如,driver_opts: myoption: value 可以设置自定义选项。

  • 数据卷(volumes):用于创建和管理数据卷。

    • external:指定数据卷是否为外部数据卷,意味着数据卷由外部创建和管理。

  • 命令(command):定义容器启动时要执行的命令。

  • 链接(links):定义服务之间的链接关系,使一个服务可以通过名称引用另一个服务。

需要注意的是,在编写 Docker Compose 文件时,缩进和格式非常重要。使用正确的缩进,并确保语法正确才能成功构建和启动服务。

7. 常用的 Docker Compose 命令

当使用 Docker Compose 来管理容器化应用程序时,下面是一些常用的 Docker Compose 命令,让我们一起来了解一下:

  • 启动应用(up):使用 docker-compose up 命令可以启动 Docker Compose 文件中全部应用程序。该命令将会检查并构建镜像(如果需要),然后启动相关的容器。up 命令后常跟 -d 选项,用于后台运行应用程序,而不是在命令行中显示日志输出。

$ docker-compose up -d
  • 停止应用(down):使用 docker-compose down 命令可以将会停止 up 命令所启动的容器,并移除网络、删除相关的容器,这将清理掉应用程序的所有资源。例如:

$ docker-compose down
  • 停止服务(stop):使用 docker-compose stop 命令可以停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。例如:

$ docker-compose stop [options] [SERVICE...]
  • 查看服务状态(ps):使用 docker-compose ps 命令可以查看当前正在运行的容器状态。它将显示出每个服务的容器名称、状态、端口映射等信息。例如:

$ docker-compose ps
  • 构建镜像(build):如果你对应用程序的代码或 Dockerfile 进行了修改,可以使用 docker-compose build 命令重新构建镜像。这将重新执行构建步骤,并生成更新后的镜像。例如:

$ docker-compose build
  • 查看日志(logs):使用 docker-compose logs 命令可以查看服务栈中所有容器的日志输出。默认情况下,它会显示出所有容器的实时日志,你可以使用 -f 参数来保持日志的跟踪。例如:

$ docker-compose logs -f

这是一些常用的 Docker Compose 命令,可以帮助你管理和操作容器化的应用程序。同时 Docker Compose 还提供了其他命令和选项,如重启服务、扩展服务、查看配置等,可以根据需求进行使用。

8. 总结

在本文中,我们了解了 Docker 的基本语法和一些常用命令。Docker 的简洁、灵活和高效使得它成为部署应用的首选工具。而通过 Docker Compose,我们可以进一步简化和组织多个容器的管理,实现更高水平的部署。

无论是开发新的应用还是迁移现有的应用,Docker 和 Docker Compose 将成为你的得力助手。开始探索 Docker 的无限可能吧,释放你的应用部署的威力!文章来源地址https://www.toymoban.com/news/detail-807081.html

到了这里,关于Docker与Docker Compose入门:释放你的应用部署的威力的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Docker快速入门】Docker 应用部署

    个人名片: 🐼 作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️ 个人主页🥇: 落798. 🐼 个人WeChat:hmmwx53 🕊️ 系列专栏:🖼️ 零基础学Java——小白入门必备🔥 重识C语言——复习回顾🔥 计算机网络体系———深度详讲 HCIP数通工程师-刷题与实战🔥🔥🔥 微信小程

    2024年03月16日
    浏览(43)
  • docker-compose 以交互式方式运行你的容器

    最近遇到一个问题,用docker-compose编排的mysql和django服务,在django模型上加了一个没有默认值(就不想在模型上加default=xxx)的非空字段,这时候django会要求你提供一个默认值给这个字段。这时候容器将会启动失败。想尝试docker run单独启动django服务,但又依赖容器化的mysql服务

    2023年04月09日
    浏览(35)
  • 【Docker】快速部署 ChatGPT Next Web,一键免费部署你的私人 ChatGPT 网页应用,支持 GPT3, GPT4 & Gemini Pro 模型。

    ChatGPT Next Web 可以一键免费部署你的私人 ChatGPT 网页应用,支持 GPT3, GPT4 Gemini Pro 模型。你无需任何复杂的配置,只需几行命令就可以完成部署。我们将通过 Docker 来部署这个应用。 下载 Docker 镜像 首先,我们需要从 Docker Hub 下载 ChatGPT 应用的 Docker 镜像。 Docker 版本需要在

    2024年03月10日
    浏览(76)
  • 使用 Docker Compose 部署 Docker Registry

    在内网环境中,我们期望能够在本地共享镜像。为了解决这一问题,Docker Registry成为了我们的救星。Docker Registry是一个用于存储和管理Docker镜像的开源工具。通过在本地部署Docker Registry,您可以轻松地构建、存储和分享自己的Docker镜像。本文将详细介绍如何使用Docker Compose快

    2024年02月02日
    浏览(53)
  • 使用docker、docker-compose部署微服务

    这里已经在docker安装并启动好了Redis、nacos,配置好了“ruoyi-gateway-prod.yml”文件。 注意如果配置文件中有Redis、MySQL、nacos这些的连接信息,需要把IP地址改为服务器的公网地址或者内网地址,不会连接不到。 我这里以微服务版若依的网关服务为例,上传到指定目录。 官方文档

    2024年02月10日
    浏览(40)
  • Docker基础、利用Docker Compose部署Vue项目

    最近,接触了Docker,写一个笔记记录一下学习的成果。参考了docker官网和一个b站老师的讲解教程Docker快速上手教程,受益良多! 在Docker官网选择自己电脑合适的版本进行安装,下载安装包以后启动,启动中如果有报错,可以参照上面的教程去解决报错。 下载好就是在右下角

    2024年02月04日
    浏览(35)
  • Docker【部署 04】Docker Compose下载安装及实例Milvus Docker compose(CPU)使用说明分享

    Docker Compose 是一个用于定义和管理多个 Docker 容器的工具,旨在简化容器化应用程序的开发、部署和管理过程。通过 Docker Compose,您可以使用一个单独的配置文件(通常是 docker-compose.yml 文件)来描述应用程序中涉及的多个容器、网络设置、存储卷等。 Docker Compose 官网安装说

    2024年02月11日
    浏览(53)
  • Docker Compose介绍及部署

    Docker Compose 项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Docker. Compose 项目由Python 编写,调用Docker 服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose 来进行编排管理。 Docker Compose 是一个用于定义和运行多容

    2024年02月05日
    浏览(44)
  • Docker Compose 部署 jenkins

    Docker-Compose 部署 浏览器访问 8345 端口,稍等 jenkins 加载完成的时候,浏览器页面会自动刷新! 安装浏览器提示,找到root 密码,配置 jenkins 安装推荐的 jenkins 插件;

    2024年02月02日
    浏览(78)
  • docker - compose 部署 Tomcat

    目录 下面用 docker-compose 方法部署 Tomcat 1、准备工作 2、部署容器 启动容器 查看新启动的容器 3、总结 下面用 docker-compose 方法部署 Tomcat 1、准备工作 先在主机创建工作文件夹,为了放置 Tomcat 的配置文件等。创建文件夹的方法,自己搞定。 先随便启动一个 tomcat 容器(用第一

    2024年01月24日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包