当前位置:   article > 正文

docker-compose 简介以及常用命令_docker-compose busybox

docker-compose busybox

什么是docker-compose?

    在 docker - 部署一个复杂的springboot服务 该文中,我们部署了一个“复杂”的springboot服务,实现了一个计数服务。通过这次部署操作,我们了解到部署多容器的APP至少需要经过以下几个步骤:

(1)写Dockerfile构建镜像或者从docker registry中拉取镜像

(2)构建多个容器

(3)管理这些容器(启动、停止等)

可见,如果APP涉及到的容器很多,要管理这些容器是比较复杂的,至少命令行敲到想哭。那么,有没有一个工具,帮我们批处理这些容器呢?

docker-compose是docker公司推出的一个服务编排工具,换句话说就是一个批处理容器的工具。该工具可以通过yml文件定义多容器的应用,并创建和管理这些容器。

安装docker-compose

参考  《docker-compose 安装方法》 https://blog.csdn.net/whatday/article/details/103050054

docker-compose.yml

    docker-compose.yml是compose的默认的脚本名字,在执行compose命令构建的时候,如果不指定文件名,将会默认使用docker-compose.yml文件,和Dockerfile文件类似。

    docker-compose.yml是有版本的,现在最新版本是v3版本,v1版本不推荐使用,v2和v3是可兼容的,而且区别不是很大。这里需要提到一点区别,v2只能用于多个容器部署在一个宿主主机,而v3可以集群方式部署在多个宿主主机(swarm)。另外,不同的compose文件版本对docker的版本是有要求的。如果有兴趣,可以在docker的官网中详细了解,版本间的区别链接的地址。我们采用官方推荐的v3版本学习docker-compose。

 

    在compose中,主要有四个基本节点: version、services、networks、volumes。是不是很熟悉,其实compose就是使用脚本方式代替我们之前通过命令行启动每个服务。下面是一个基本的compose脚本。

  1. version: '3'
  2. services:
  3. springboot-docker:
  4. image: myimage:1.0
  5. build:
  6. context: .
  7. dockerfile: Dockerfile
  8. ports:
  9. - 8080:8080
  10. networks:
  11. - mybridge
  12. volumes:
  13. - mydata:/app
  14. networks:
  15. mybridge:
  16. driver: bridge
  17. volumes:
  18. mydata:

    本文将通过一个简单的 docker-compose 文件,熟悉常用的docker-compose命令。docker-compose.yml文件存放在dockercompose文件夹中

  1. version: '3'
  2. services:
  3. busybox:
  4. image: busybox
  5. restart: always
  6. command: /bin/echo
  7. redis:
  8. image: redis:4.0.11
  9. ports:
  10. - 6379:6379
  11. volumes:
  12. - /data/redis:/data
  13. restart: always
  14. command: redis-server

我们查看 docker-compose 有多少种命令,有个大概的了解。docker-compose命令即可查看。

[root@localhost dockercompose]# docker-compose
  1. Define and run multi-container applications with Docker.
  2. Usage:
  3. docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
  4. docker-compose -h|--help
  5. Options:
  6. -f, --file FILE Specify an alternate compose file
  7. (default: docker-compose.yml)
  8. -p, --project-name NAME Specify an alternate project name
  9. (default: directory name)
  10. --verbose Show more output
  11. --log-level LEVEL Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  12. --no-ansi Do not print ANSI control characters
  13. -v, --version Print version and exit
  14. -H, --host HOST Daemon socket to connect to
  15. --tls Use TLS; implied by --tlsverify
  16. --tlscacert CA_PATH Trust certs signed only by this CA
  17. --tlscert CLIENT_CERT_PATH Path to TLS certificate file
  18. --tlskey TLS_KEY_PATH Path to TLS key file
  19. --tlsverify Use TLS and verify the remote
  20. --skip-hostname-check Don't check the daemon's hostname against the
  21. name specified in the client certificate
  22. --project-directory PATH Specify an alternate working directory
  23. (default: the path of the Compose file)
  24. --compatibility If set, Compose will attempt to convert deploy
  25. keys in v3 files to their non-Swarm equivalent
  26. Commands:
  27. build Build or rebuild services
  28. bundle Generate a Docker bundle from the Compose file
  29. config Validate and view the Compose file
  30. create Create services
  31. down Stop and remove containers, networks, images, and volumes
  32. events Receive real time events from containers
  33. exec Execute a command in a running container
  34. help Get help on a command
  35. images List images
  36. kill Kill containers
  37. logs View output from containers
  38. pause Pause services
  39. port Print the public port for a port binding
  40. ps List containers
  41. pull Pull service images
  42. push Push service images
  43. restart Restart services
  44. rm Remove stopped containers
  45. run Run a one-off command
  46. scale Set number of containers for a service
  47. start Start services
  48. stop Stop services
  49. top Display the running processes
  50. unpause Unpause services
  51. up Create and start containers
  52. version Show the Docker-Compose version information

这里的选项中有两个是常用的:-f 和 -p

-f :指定文件。在运行up命令启动容器时,如果没有指定docker-compose.yml文件,将会读取当前目录下的docker-compose.yml文件

-p:启动后的服务的名字默认情况下采用compose.yml文件所在的目录+服务名+副本数命名,例如上面的例子的名字为: dockercompose_redis_1 。如果指定-p,则会用项目名代替该文件目录名。

下面开始介绍一些常用的docker-compose命令。

create/start/up/stop/kill/rm/restart/down

docker-compose create

创建所有的服务

docker-compose start

启动被停止或未启动的服务

docker-compose up创建所有服务并且启动服务,即同时执行了create和start命令
docker-compose stop停止所有服务
docker-compose kill强行停止所有服务
docker-compose rm删除停止的服务
docker-compose restart重启所有服务)
docker-compose down停止、删除所有的服务以及网络、镜像

其中,up命令启动所有的服务时,如果没有使用-d命令,会在前台启动所有的服务,前台窗口将打印服务的启动日志。建议通过 -d 启动。例如通过up启动上面的redis服务。

  1. [root@localhost dockercompose]# docker-compose up -d
  2. Creating network "dockercompose_default" with the default driver

然后可以通过 docker-compose logs -f 获取输出的日志
 

ps

该命令可以查看容器列表,可以获取到容器的简单信息。

  1. [root@localhost dockercompose]# docker-compose ps
  2. Name Command State Ports
  3. -----------------------------------------------------------------------------------------
  4. dockercompose_busybox_1 /bin/echo Up
  5. dockercompose_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp

上面的信息可以得到容器名、启动命令、容器状态以及端口的映射情况。

 

scale

该命令用于扩展容器,为service设置多个容器(副本)。我们为上面的busybox服务扩展为2个副本。

  1. [root@localhost dockercompose]# docker-compose scale busybox=2
  2. WARNING: The scale command is deprecated. Use the up command with the --scale flag instead.
  3. Starting dockercompose_busybox_1 ... done
  4. Creating dockercompose_busybox_2 ... done

稍等一下,通过ps命令可以看到已经启动了两个busybox服务。

前面的输出中,提示该命令已经过期,使用--scale选项指定副本。

我们down了服务后,重新使用up命令并指定副本数

[root@localhost dockercompose]# docker-compose up -d --scale busybox=2
  1. [root@localhost dockercompose]# docker-compose ps
  2. Name Command State Ports
  3. ----------------------------------------------------------------------------------------------
  4. dockercompose_busybox_1 /bin/echo Restarting
  5. dockercompose_busybox_2 /bin/echo Restarting
  6. dockercompose_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/180478?site
推荐阅读
相关标签
  

闽ICP备14008679号