Home  >  Article  >  Operation and Maintenance  >  Docker basics compose file structure and installation tools (detailed examples)

Docker basics compose file structure and installation tools (detailed examples)

WBOY
WBOYforward
2022-02-07 17:39:404584browse

This article brings you the knowledge about compose in docker, including the compose file structure and the knowledge about installing the docker compose tool. I hope it will be helpful to you.

Docker basics compose file structure and installation tools (detailed examples)

What is docker compose?

Docker compose is a container orchestration function that orchestrates and unites different servers running in different containers.

can be used to uniformly manage most containers: including but not limited to: network, port, mount, etc. can be used to implement clustering of containers. Compose can also be used to implement a series of operations related to containers and images. Operation is a function to manage containers

1. compose file structure

1. yml file

The file structure in compose usually refers to the structure of the yml file. So what is a yml file?

yml file is a file in key-value pair format.

yml files are very sensitive to the format. You need to pay attention to the following matters:

  1. Only recognizes the indentation of spaces and does not recognize the indentation form of the tab key
  2. Usually indent two spaces at the beginning
  3. characters and then indent one space, including but not limited to: colon, comma, horizontal bar and other characters. The character must be indented by one space
  4. Supports the use of # for comments
  5. If special characters are included, they need to be quoted in single quotes
  6. Boolean values ​​must be enclosed in quotes

For example:

  house:
    family:
      name: Doe
      parents: 
        - John
        - Jane
      children: 
        - Paul
        - Mark
        - Simone
    address: 
      number: 34
      street: Main Street
      city: Nowheretown
      zipcode: 1234

yml file format For example, the above requires one-level correspondence, and there are two spaces between different levels.

Note: If a key has multiple values ​​in one level, it can be used in the next level. It also has two empty spaces, starting with a short horizontal bar, and writing several end horizontal bars for several values.

2. Commonly used fields in Compose configuration

Field Description
build dockerfile centext Specify the Dockerfile file name to build the path of the image context
images Specify the image
command Execute the command, overwriting the default command
container name Specify the container name, because the container name is unique. If you specify a custom name, you cannot create scale
deploy Specify configurations related to deployment and running services, and can only be used in Swarm mode
environment Add environment variables
networks Join network
ports Expose the container port, the same as -p, but the port number must be greater than 60
volumts Mount the host path or command volume
restart Restart strategy, default no, always, on-failure, unless-stoped
hostname Container host name

build: A definition method when constructing a mirror

dockerfile: Method It is built using dockerfile

context: The path of the service docerfile file

images: You can specify the image name to be used, for example: images: Image name, note: there is a space after it

command: execute a statement

container name: used to specify the name of the container, because the container The name is unique. If you specify a custom name, you cannot scale (set a replica set)

#Replica set: Make an image into multiple containers. The running environment and other aspects of these multiple containers are exactly the same. When a container in the container architecture dies, an identical container can be started directly to maintain the number of replica sets. This is the concept of replica sets, and it is also the core of K8s. It can improve the speed of microservices, improve disaster recovery, and high concurrency performance

deploy: It is a controller, and in k8s it is a plug-in that controls and manages replica sets

restart: A restart strategy. The default is not to start after shutdown. If always, it will automatically start the closed container regardless of manual shutdown or non-manual shutdown. Unless-stopped only pulls the closed status. Containers, on-failure, will only start containers with non-zero return codes

3. Compose’s external common commands

##buildRebuild an image informationpsList the containers currently controlled by docker composeupCreate and start the containerexecExecute the command in the containerscaleSpecify the number of startups for a server, which is equivalent to the number of replica setstopDisplay container processes, all containers started by processes controlled by docker composelogsView the output information of the containerdownDelete containers, networks, data volumes and imagesstop/start/restartstop /Start/Restart container service

docker compose基本使用格式:docker-compose [options] [COMMAND] [ARGS…]

docker-compose选项

  1. –verbose:输出更多调试信息
  2. –version:打印版本并退出
  3. -f /–file FILE:使用特定的compose模板文件,默认为docker-compose.yml
  4. -p /–project-name NAME:指定项目名称,默认使用目录名称

二、安装docker compose工具

1、下载

curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

首次连接下载的时候,可能会提示失误或者连接不上,可能是因为网络原因,可以多试几次

2、添加权限

文件在刚下载之后,默认是没有执行权限的,所以需要手动添加执行权限

chmod +x /usr/local/bin/docker-compos

3、运行docker-compose

docker-compose

可以看到,现在已经正常执行了

三、编译镜像

手动创建下面的文件(dockerfile文件之前有的话,直接拉取过来也是可以的)

tree
.
├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   ├── nginx-1.12.0.tar.gz
└── wwwroot
    └── index.html

其中yml文件内部

cat docker-compose.yml

version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1321:80
      - 1707:443
    networks:
      - cluster
    volumes:
      - ./wwwroot: /usr/local/nginx/html
networks:
  cluster:

nginx的dockerfile文件

cat ./nginx/Dockerfile

FROM centos:7
ADD nginx-1.12.0.tar.gz /tmp
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make &> /dev/null \
    && useradd -M -s /sbin/nologin nginx \
    && cd /tmp/nginx-1.12.0/ \
    && ./configure \
    --prefix=/usr/local/nginx \
    --user=nginx \
    --group=nginx \
    --with-http_stub_status_module &> /dev/null \
    && make &> /dev/null \
    && make install &> /dev/null
VOLUME ["/usr/local/nginx/html"]
EXPOSE 80
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

index.html文件中就是自己配置的网页信息,就不多做介绍了

确定之后,编译

docker-compose -f docker-compose.yml up -d

查看运行结果

docker ps -a

CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS                      PORTS                                                                        NAMES
da38007f09ab   dockercompose_nginx   "/usr/local/nginx/sb…"   About a minute ago   Up About a minute           0.0.0.0:666->80/tcp, :::666->80/tcp, 0.0.0.0:667->443/tcp, :::667->443/tcp   dockercompose_nginx_1
#可以看到,这个端口信息就是我们在yml文件中设置的端口信息,直接在这个生效了

docker images

REPOSITORY                TAG       IMAGE ID       CREATED         SIZE
dockercompose_nginx       latest    b1e4b9dfa72d   3 minutes ago   478MB

访问网址端口,查看该网站页面

curl 192.168.75.51:666
hello
#显示结果
cat ./wwwroot/index.html
hello

推荐学习:《docker视频教程

Field Description

The above is the detailed content of Docker basics compose file structure and installation tools (detailed examples). For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete