四时宝库

程序员的知识宝库

Liunx日常小技巧Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用一个 YAML 文件来配置应用程序的服务。然后,通过一条命令,就可以创建并启动配置中的所有服务。

Compose 适用于开发、测试和部署服务的容器化应用程序,并且可以在本地工作站和云端托管提供环境和一致性。

安装

使用 curl 命令下载可执行文件 sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
添加可执行权限 sudo chmod +x /usr/local/bin/docker-compose

常用命令

启动服务

Copy Codedocker-compose up [-d]
  • -d(可选参数):在后台启动并运行整个应用程序。

启动指定服务

Copy Codedocker-compose up [-d] [SERVICE...]
  • SERVICE:指定要启动的服务名称,可以同时启动多个服务。

关闭服务

Copy Codedocker-compose down
  • 关闭并移除所有运行中的容器和网络。

启动并重新构建服务

Copy Codedocker-compose up --build [-d] [SERVICE...]
  • --build:强制重新构建服务的镜像。
  • SERVICE:指定要启动的服务名称,可以同时启动多个服务。

查看服务运行状态

Copy Codedocker-compose ps
  • 列出所有服务及其状态。

进入运行中的服务

Copy Codedocker-compose exec SERVICE [COMMAND]
  • SERVICE:指定要进入的服务名称。
  • COMMAND:可选参数,指定要在服务中运行的命令。

暂停服务

Copy Codedocker-compose pause SERVICE
  • SERVICE:指定要暂停的服务名称。

恢复服务

Copy Codedocker-compose unpause SERVICE
  • SERVICE:指定要恢复的服务名称。

重启服务

Copy Codedocker-compose restart SERVICE
  • SERVICE:指定要重启的服务名称。

查看服务日志

Copy Codedocker-compose logs [-f] [SERVICE...]
  • -f(可选参数):查看实时日志。
  • SERVICE:指定要查看日志的服务名称。

构建服务镜像

Copy Codedocker-compose build [SERVICE...]
  • SERVICE:指定要构建镜像的服务名称,可以同时构建多个服务的镜像。

停止并删除服务容器

Copy Codedocker-compose rm [-s] [-v] [-f]
  • -s(可选参数):停止但不删除当前运行的服务容器。
  • -v(可选参数):移除挂载的数据卷。
  • -f(可选参数):强制删除正在运行中的服务容器。

应用示例

创建一个名为 docker-compose.yml 的 YAML 文件

Copy Codeversion: "3"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

我们定义了两个服务:一个 web 服务和一个 redis 服务。web 服务使用Dockerfile构建一个镜像,映射主机的5000端口到容器的5000端口,redis 服务使用官方的 Redis 镜像。

docker-compose.yml 示例,它将创建一个包含 Flask、PostgreSQL 和 NGINX 的 Web 应用程序:

yamlCopy Codeversion: '3'
services:

  db:
    image: postgres:12-alpine
    volumes:
      - postgres-data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: example_pwd
      POSTGRES_USER: example_user
      POSTGRES_DB: example_db

  web:
    build: .
    command: flask run --host=0.0.0.0
    volumes:
      - ./app:/usr/src/app
    ports:
      - "5000:5000"
    depends_on:
      - db

  nginx:
    image: nginx:1.21-alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./app/static:/usr/share/nginx/html/static
      - ./app/templates:/usr/share/nginx/html/templates
    depends_on:
      - web

volumes:
  postgres-data:

这个示例中我们有三个服务:

  • db: 使用官方的 PostgreSQL 镜像,指定了必要的环境变量。
  • web:使用自定义的 Dockerfile 构建一个 Flask 应用程序。将应用程序映射到主机的 5000 端口上。还依赖于 db 服务。
  • nginx:使用官方的 Nginx 镜像,在容器中运行Nginx。并将静态文件和模板从 web 服务映射到 Nginx 容器中。

可以通过以下命令构建和启动应用:

Copy Codedocker-compose up -d

在浏览器中访问 http://localhost 就可以看到部署成功的 Web 应用程序了。

整理不易,欢迎点赞,收藏,转发,关注我每天分享一下运维小知识。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接