docker-compose

学了docker,然后就直接去学k8s了。恍恍惚惚几年过去了,k8s早就没有摸过,当然也就没有用过了。
日常工作也便没有了接触,但是容器化还是开发默认的设定,很多时候还是需要快速部署个测试环境。
这个时候使用docker一个个部署好麻烦,使用k8s当然也没有那个环境,此时docker-compose似乎是个好的选择。
这也是我为啥讲讲docker-compose的原因了。

1. docker-compose是什么

📌 github docker-compose

Docker Compose is a tool for running multi-container applications on Docker defined using the Compose file format.
A Compose file is used to define how one or more containers that make up your application are configured.
It also has commands for managing the whole lifecycle of your application:

  • Start, stop, and rebuild services
  • View the status of running services
  • Stream the log output of running services
  • Run a one-off command on a service

2. Compose file format

https://github.com/compose-spec/compose-spec/blob/main/spec.md

The default path for a Compose file is compose.yaml (preferred) or compose.yml
also supports docker-compose.yaml and docker-compose.yml
If both files exist, Compose prefers the canonical compose.yaml.

3. 命令

(base)  ~/ docker-compse --help
zsh: permission denied: docker-compse
(base)  ~/ docker-compose --help

Usage:  docker compose [OPTIONS] COMMAND

Define and run multi-container applications with Docker.

Options:
      --ansi string                Control when to print ANSI control characters ("never"|"always"|"auto") (default "auto")
      --compatibility              Run compose in backward compatibility mode
      --dry-run                    Execute command in dry run mode
      --env-file stringArray       Specify an alternate environment file.
  -f, --file stringArray           Compose configuration files
      --parallel int               Control max parallelism, -1 for unlimited (default -1)
      --profile stringArray        Specify a profile to enable
      --progress string            Set type of progress output (auto, tty, plain, quiet) (default "auto")
      --project-directory string   Specify an alternate working directory
                                   (default: the path of the, first specified, Compose file)
  -p, --project-name string        Project name

Commands:
  build       Build or rebuild services
  config      Parse, resolve and render compose file in canonical format
  cp          Copy files/folders between a service container and the local filesystem
  create      Creates containers for a service.
  down        Stop and remove containers, networks
  events      Receive real time events from containers.
  exec        Execute a command in a running container.
  images      List images used by the created containers
  kill        Force stop service containers.
  logs        View output from containers
  ls          List running compose projects
  pause       Pause services
  port        Print the public port for a port binding.
  ps          List containers
  pull        Pull service images
  push        Push service images
  restart     Restart service containers
  rm          Removes stopped service containers
  run         Run a one-off command on a service.
  start       Start services
  stop        Stop services
  top         Display the running processes
  unpause     Unpause services
  up          Create and start containers
  version     Show the Docker Compose version information

3.1 服务相关命令

通常我们都是使用docker-compose快速起服务,
此时一般使用up启动整个服务,
然后使用down删除容器和网络,可选的删除卷


  create      Creates containers for a service.
  run         Run a one-off command on a service.
  start       Start services
  up          Create and start containers
  
  restart     Restart service containers

  stop        Stop services
  rm          Removes stopped service containers
  down        Stop and remove containers, networks
  kill        Force stop service containers.
  
  pause       Pause services
  unpause     Unpause services

  exec        Execute a command in a running container.

  cp          Copy files/folders between a service container and the local filesystem
  
up

用于启动并运行整个Compose文件中定义的所有服务。

示例:

启动所有服务并在前台显示日志:docker-compose up
启动所有服务并在后台运行:docker-compose up -d
仅启动特定服务:docker-compose up service_name
run

主要用于在已经运行的服务中启动一个新的容器来执行一次性任务或命令。
示例:

在 web 服务的环境中运行 bash 命令:docker-compose run web bash
执行一个自定义命令:docker-compose run --rm web python manage.py migrate
create

用于创建服务容器,但不启动它们。这个命令通常用于预先创建容器以便稍后启动。

start

用于启动已经存在的服务容器,但不会创建新的容器。

restart

Restart service containers

(base)  ~/data/es_7/ docker-compose restart kibana_7
[+] Restarting 1/1
 ✔ Container kibana_7  Started   
down

用于停止服务并彻底清理所有相关的资源,包括容器、网络和可选的卷。

stop

用于优雅地停止服务,给予服务一定的时间来执行清理工作。

kill

用于立即停止服务,不等待服务进行任何清理。

rm

用于删除已经停止的容器,但不自动清理网络和其他资源。

pause

用于暂停运行中的容器,冻结容器内的所有进程。

unpause

用于解除暂停状态,恢复被暂停的容器的执行。

(base)  ~/data/es_7/ 
(base)  ~/data/es_7/ 
(base)  ~/data/es_7/ docker-compose pause kibana_7
[+] Pausing 1/0
 ✔ Container kibana_7  Paused                                                                                                                                          0.0s 
(base)  ~/data/es_7/ docker-compose ps
NAME                IMAGE                  COMMAND                  SERVICE             CREATED             STATUS                   PORTS
elasticsearch_7     elasticsearch:7.16.3   "/bin/tini -- /usr/l…"   elasticsearch_7     3 weeks ago         Up 26 hours              0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp
kibana_7            kibana:7.16.3          "/bin/tini -- /usr/l…"   kibana_7            3 weeks ago         Up 15 minutes (Paused)   0.0.0.0:5601->5601/tcp
(base)  ~/data/es_7/ 
(base)  ~/data/es_7/ 
(base)  ~/data/es_7/ docker-compose unpause kibana_7
[+] Running 1/0
 ✔ Container kibana_7  Unpaused                                                                                                                                        0.0s 
(base)  ~/data/es_7/ docker-compose ps              
NAME                IMAGE                  COMMAND                  SERVICE             CREATED             STATUS              PORTS
elasticsearch_7     elasticsearch:7.16.3   "/bin/tini -- /usr/l…"   elasticsearch_7     3 weeks ago         Up 26 hours         0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp
kibana_7            kibana:7.16.3          "/bin/tini -- /usr/l…"   kibana_7            3 weeks ago         Up 15 minutes       0.0.0.0:5601->5601/tcp
(base)  ~/data/es_7/ 
(base)  ~/data/es_7/ 

3.2 镜像相关命令

  build       Build or rebuild services
  config      Parse, resolve and render compose file in canonical format
  pull        Pull service images
  push        Push service images

3.3 查看相关命令

都支持json的返回格式。

  events      查看服务的事件
  images      查看服务使用的镜像
  logs        查看服务的日志
  ls          列举服务
  port        这个感觉很鸡肋,直接用ps命令查看吧。用于查看服务暴露的端口映射到主机上的那个端口
  ps          列举容器
  top         查看容器中的进程,类似于ps
  version     查看docker compose的版本
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐