docker-compose 命令

docker-compose初试及命令基础

以一个简单的lnmp.yaml的配置文件进行讲解docker-compose命令的基础讲解,熟练掌握命令

复制代码

[root@docker lnmp]# cat lnmp.yaml 
version: '3'
services:
  nginx:
    image: nginx
    ports:
      - "80:80"
    links:
      - php:php
    volumes:
      - "/www:/usr/local/nginx/html"
  php:
    image: php
    expose:
      - "9000"
    volumes:
      - "/www:/usr/local/nginx/html"
  db:
    image: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: redhat
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

复制代码

上面配置文件的关于编写的参数暂时不进行讲解,这里只进行关于docker-compose的命令

[root@docker ~]# docker-compose --help     
Define and run multi-container applications with Docker.

Usage:
  docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
  docker-compose -h|--help

看用法的定义就是利用docker定义和运行多个容器应用

Options:
  -f, --file FILE             Specify an alternate compose file (default: docker-compose.yml)
  -p, --project-name NAME     Specify an alternate project name (default: directory name)

默认如果没有指定具体的compose配置文件,那么就docker-compose.yml,并且如果不指定项目名称,默认就是文件夹的name

up                 Create and start containers

现在利用command中的up进行创建并启动容器(多个容器,安装配置文件中,至于顺序现在不讲解)

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml up
Creating lnmp_php_1 ... 
Creating lnmp_db_1 ... 
Creating lnmp_db_1
Creating lnmp_php_1 ... done
Creating lnmp_nginx_1 ... 
Creating lnmp_db_1 ... done

复制代码

后面的一大堆输出,这里不进行全部显示了,创建并启动好了容器后,如何查看运行的状态呢?

ps                 List containers
[root@docker lnmp]# docker-compose ps          
Name   Command   State   Ports
------------------------------

为什么这里没有显示呢?因为配置文件名称不是docker-compose.yml,所以在执行一系列命令时需要加上-f lnmp.yaml

[root@docker lnmp]# docker-compose -f lnmp.yaml ps
    Name                  Command               State           Ports         
------------------------------------------------------------------------------
lnmp_db_1      docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp
lnmp_nginx_1   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:80->80/tcp    
lnmp_php_1     /usr/local/php/sbin/php-fpm      Up      9000/tcp  

由于配置文件lnmp.yaml在当前目录,这里可以进行绝对路径:

[root@docker lnmp]# docker-compose -f /root/compose_project/lnmp/lnmp.yaml  ps
    Name                  Command               State           Ports         
------------------------------------------------------------------------------
lnmp_db_1      docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp
lnmp_nginx_1   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:80->80/tcp    
lnmp_php_1     /usr/local/php/sbin/php-fpm      Up      9000/tcp

由上面可以看出将所有的容器都显示出来,如何指定显出某一个容器呢?

[root@docker ~]# docker-compose ps --help
List containers.

Usage: ps [options] [SERVICE...]

一般的command命令都可以带上SERVICE,这里的service是什么呢?就是配置文件中定义的services服务,配置文件中定义了三个:nginx、php、db(不能写错service名称)

[root@docker lnmp]# docker-compose -f /root/compose_project/lnmp/lnmp.yaml  ps nginx
    Name                  Command               State         Ports       
--------------------------------------------------------------------------
lnmp_nginx_1   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:80->80/tcp

name这一列代表的是容器名称,而不是service名称

复制代码

[root@docker lnmp]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
a5747e115947        nginx               "/usr/local/nginx/..."   6 minutes ago       Up 6 minutes        0.0.0.0:80->80/tcp       lnmp_nginx_1
508ac0a6890c        php                 "/usr/local/php/sb..."   6 minutes ago       Up 6 minutes        9000/tcp                 lnmp_php_1
aaa3cc6f1040        mysql               "docker-entrypoint..."   6 minutes ago       Up 6 minutes        0.0.0.0:3306->3306/tcp   lnmp_db_1

复制代码

name的组成由project+service组成(后面的_1本人认为是构建的次数,第一次构建up就代表1吧)

If you change a service’s Dockerfile or the contents of its build directory, run docker-compose build to rebuild it.
docker-compose up --build或者docker-compose build

config:

config             Validate and view the Compose file

利用config命令可以打印处配置文件的内容和service名称以及volumes信息

[root@docker lnmp]# docker-compose -f /root/compose_project/lnmp/lnmp.yaml config --services
php
nginx
db

复制代码

[root@docker lnmp]# docker-compose -f /root/compose_project/lnmp/lnmp.yaml config 
services:
  db:
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_PASSWORD: wordpress
      MYSQL_ROOT_PASSWORD: redhat
      MYSQL_USER: wordpress
    image: mysql
    ports:
    - 3306:3306/tcp
  nginx:
    image: nginx
    links:
    - php:php
    ports:
    - 80:80/tcp
    volumes:
    - /www:/usr/local/nginx/html:rw
  php:
    expose:
    - '9000'
    image: php
    volumes:
    - /www:/usr/local/nginx/html:rw
version: '3.0'

复制代码

[root@docker lnmp]# docker-compose -f /root/compose_project/lnmp/lnmp.yaml config --volumes

down:停止并删除容器、网络、镜像、数据卷

down               Stop and remove containers, networks, images, and volumes

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml down
Stopping lnmp_nginx_1 ... done
Stopping lnmp_db_1    ... done
Stopping lnmp_php_1   ... done
Removing lnmp_nginx_1 ... done
Removing lnmp_db_1    ... done
Removing lnmp_php_1   ... done
Removing network lnmp_default
[root@docker lnmp]# docker-compose -f lnmp.yaml ps  
Name   Command   State   Ports
------------------------------
[root@docker lnmp]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

复制代码

down也带有其他的参数:

复制代码

Options:
    --rmi type          Remove images. Type must be one of:
                        'all': Remove all images used by any service.
                        'local': Remove only images that don't have a custom tag
                        set by the `image` field.
    -v, --volumes       Remove named volumes declared in the `volumes` section
                        of the Compose file and anonymous volumes
                        attached to containers.
    --remove-orphans    Remove containers for services not defined in the
                        Compose file

复制代码

exec:在运行的容器中执行命令:

exec               Execute a command in a running container

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml exec db env   
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=aaa3cc6f1040
TERM=xterm
MYSQL_ROOT_PASSWORD=redhat
MYSQL_PASSWORD=wordpress
MYSQL_USER=wordpress
MYSQL_DATABASE=wordpress
GOSU_VERSION=1.7
MYSQL_MAJOR=5.7
MYSQL_VERSION=5.7.20-1debian8
HOME=/root

复制代码

db是指定了在哪一个service中执行env命令

images:列出镜像

[root@docker lnmp]# docker-compose -f lnmp.yaml images
 Container     Repository    Tag       Image Id      Size 
----------------------------------------------------------
lnmp_db_1      mysql        latest   5709795eeffa   389 MB
lnmp_nginx_1   nginx        latest   c3babfeba09b   551 MB
lnmp_php_1     php          latest   8902ce599658   1 GB  

参数-q:列出镜像的id

[root@docker lnmp]# docker-compose -f lnmp.yaml images -q
5709795eeffac51eca46cf40ab36669aad27e8cb4b0e91876d5e9f7bafad6acb
c3babfeba09bab70a8e3b7e8d734ee274af4a02ed8b9b4d286cd58caf64dbdc5
8902ce599658633ee95e270843b37daabe2e0dc298861ac8c25f5f7e11a7de1e

kill:杀死容器

kill               Kill containers

复制代码

[root@docker ~]# docker-compose kill --help  
Force stop service containers.

Usage: kill [options] [SERVICE...]

Options:
    -s SIGNAL         SIGNAL to send to the container.
                      Default signal is SIGKILL.

复制代码

可以看见后面也可以指定哪一个service

logs:将容器中的日志进行输出

logs               View output from containers

复制代码

[root@docker ~]# docker-compose logs --help 
View output from containers.

Usage: logs [options] [SERVICE...]

Options:
    --no-color          Produce monochrome output.
    -f, --follow        Follow log output.
    -t, --timestamps    Show timestamps.
    --tail="all"        Number of lines to show from the end of the logs
                        for each container.

复制代码

将db的日志输出最后的10行:

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml logs -t --tail db      
ERROR: tail flag must be all or a number
[root@docker lnmp]# docker-compose -f lnmp.yaml logs -t --tail="10" db
Attaching to lnmp_db_1
db_1     | 2017-11-09T14:48:24.618652188Z 2017-11-09T14:48:24.618090Z 0 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
db_1     | 2017-11-09T14:48:24.618654153Z 2017-11-09T14:48:24.618104Z 0 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
db_1     | 2017-11-09T14:48:24.621872173Z 2017-11-09T14:48:24.620524Z 0 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode.
db_1     | 2017-11-09T14:48:24.621897721Z 2017-11-09T14:48:24.620616Z 0 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
db_1     | 2017-11-09T14:48:24.658532597Z 2017-11-09T14:48:24.658110Z 0 [Note] Event Scheduler: Loaded 0 events
db_1     | 2017-11-09T14:48:24.660827605Z 2017-11-09T14:48:24.658335Z 0 [Note] mysqld: ready for connections.
db_1     | 2017-11-09T14:48:24.660852816Z Version: '5.7.20'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)
db_1     | 2017-11-09T14:48:24.660857339Z 2017-11-09T14:48:24.658347Z 0 [Note] Executing 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' to get a list of tables using the deprecated partition engine. You may use the startup option '--disable-partition-engine-check' to skip this check. 
db_1     | 2017-11-09T14:48:24.660861018Z 2017-11-09T14:48:24.658349Z 0 [Note] Beginning of list of non-natively partitioned tables
db_1     | 2017-11-09T14:48:24.679766350Z 2017-11-09T14:48:24.679398Z 0 [Note] End of list of non-natively partitioned tables

复制代码

pause:暂停service:

pause              Pause services
[root@docker ~]# docker-compose pause --help
Pause services.

Usage: pause [SERVICE...]

将db这个service进行暂停:

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml pause db
Pausing lnmp_db_1 ... done
[root@docker lnmp]# docker-compose -f lnmp.yaml ps
    Name                  Command               State            Ports         
-------------------------------------------------------------------------------
lnmp_db_1      docker-entrypoint.sh mysqld      Paused   0.0.0.0:3306->3306/tcp
lnmp_nginx_1   /usr/local/nginx/sbin/ngin ...   Up       0.0.0.0:80->80/tcp    
lnmp_php_1     /usr/local/php/sbin/php-fpm      Up       9000/tcp 

复制代码

unpause:将暂停的service进行恢复:

unpause            Unpause services

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml unpause db
Unpausing lnmp_db_1 ... done
[root@docker lnmp]# docker-compose -f lnmp.yaml ps
    Name                  Command               State           Ports         
------------------------------------------------------------------------------
lnmp_db_1      docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp
lnmp_nginx_1   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:80->80/tcp    
lnmp_php_1     /usr/local/php/sbin/php-fpm      Up      9000/tcp 

复制代码

port:查看端口映射信息:

port               Print the public port for a port binding

复制代码

[root@docker ~]# docker-compose port --help 
Print the public port for a port binding.

Usage: port [options] SERVICE PRIVATE_PORT

Options:
    --protocol=proto  tcp or udp [default: tcp]
    --index=index     index of the container if there are multiple
                      instances of a service [default: 1]

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml port db 3306
0.0.0.0:3306

restart:重启service:

restart            Restart services

复制代码

[root@docker ~]# docker-compose restart --help
Restart running containers.

Usage: restart [options] [SERVICE...]

Options:
  -t, --timeout TIMEOUT      Specify a shutdown timeout in seconds.
                             (default: 10)

复制代码

将nginx这个service进行重启:

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml restart nginx
Restarting lnmp_nginx_1 ... done
[root@docker lnmp]# docker-compose -f lnmp.yaml ps
    Name                  Command               State           Ports         
------------------------------------------------------------------------------
lnmp_db_1      docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp
lnmp_nginx_1   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:80->80/tcp    
lnmp_php_1     /usr/local/php/sbin/php-fpm      Up      9000/tcp 

复制代码

rm:删除已经停止的服务容器,没有停止删除不了

rm                 Remove stopped containers

复制代码

[root@docker ~]# docker-compose rm --help
Removes stopped service containers.

By default, anonymous volumes attached to containers will not be removed. You
can override this with `-v`. To list all volumes, use `docker volume ls`.

Any data which is not in a volume will be lost.

Usage: rm [options] [SERVICE...]

Options:
    -f, --force   Don't ask to confirm removal
    -s, --stop    Stop the containers, if required, before removing
    -v            Remove any anonymous volumes attached to containers
    -a, --all     Deprecated - no effect.

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml rm
No stopped containers

如果加上-s/--stop那么就会先将服务进行停止,然后询问你是否删除:

[root@docker lnmp]# docker-compose -f lnmp.yaml rm -s db
Stopping lnmp_db_1 ... done
Going to remove lnmp_db_1
Are you sure? [yN] 

-f:代表在删除的过程中不会询问你是否删除,而是直接进行删除

run:运行一次性命令

run                Run a one-off command
[root@docker ~]# docker-compose run --help
Run a one-off command on a service.

For example:

    $ docker-compose run web python manage.py shell

scale:扩展容器,为service设置多个容器:

scale              Set number of containers for a service

复制代码

[root@docker ~]# docker-compose scale --help
Set number of containers to run for a service.

Numbers are specified in the form `service=num` as arguments.
For example:

    $ docker-compose scale web=2 worker=3

This command is deprecated. Use the up command with the `--scale` flag
instead.

Usage: scale [options] [SERVICE=NUM...]

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml scale nginx=2
WARNING: The scale command is deprecated. Use the up command with the --scale flag instead.

而且在创建多个容器时需要考虑端口及ip的监听状况(占用的情况)

start              Start services

stop               Stop services

[root@docker lnmp]# docker-compose -f lnmp.yaml stop db
Stopping lnmp_db_1 ... done
[root@docker lnmp]# docker-compose -f lnmp.yaml start db
Starting db ... done

top:显示运行的进程

top                Display the running processes

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml top
lnmp_db_1
  UID       PID    PPID    C   STIME   TTY     TIME      CMD  
--------------------------------------------------------------
systemd+   38246   38223   7   23:27   ?     00:00:00   mysqld

lnmp_nginx_1
UID     PID    PPID    C   STIME   TTY     TIME                                   CMD                               
--------------------------------------------------------------------------------------------------------------------
root   38367   38352   1   23:27   ?     00:00:00   nginx: master process /usr/local/nginx/sbin/nginx -g daemon off;
www    38421   38367   0   23:27   ?     00:00:00   nginx: worker process                                           

lnmp_php_1
UID     PID    PPID    C   STIME   TTY     TIME                                CMD                           
-------------------------------------------------------------------------------------------------------------
root   38208   38186   0   23:27   ?     00:00:00   php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www    38307   38208   0   23:27   ?     00:00:00   php-fpm: pool www                                        
www    38308   38208   0   23:27   ?     00:00:00   php-fpm: pool www  

复制代码

指定某一个service:

[root@docker lnmp]# docker-compose -f lnmp.yaml top nginx
lnmp_nginx_1
UID     PID    PPID    C   STIME   TTY     TIME                                   CMD                               
--------------------------------------------------------------------------------------------------------------------
root   38367   38352   0   23:27   ?     00:00:00   nginx: master process /usr/local/nginx/sbin/nginx -g daemon off;
www    38421   38367   0   23:27   ?     00:00:00   nginx: worker process 

version:显示docker-compose的版本信息:

version            Show the Docker-Compose version information
[root@docker lnmp]# docker-compose -f lnmp.yaml version
docker-compose version 1.17.0, build ac53b73
docker-py version: 2.5.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

 

docker-compose命令运行的级别在service层,而如果需要对容器进行修改等操作还是运行docker命令方便

以一个简单的lnmp.yaml的配置文件进行讲解docker-compose命令的基础讲解,熟练掌握命令

复制代码

[root@docker lnmp]# cat lnmp.yaml 
version: '3'
services:
  nginx:
    image: nginx
    ports:
      - "80:80"
    links:
      - php:php
    volumes:
      - "/www:/usr/local/nginx/html"
  php:
    image: php
    expose:
      - "9000"
    volumes:
      - "/www:/usr/local/nginx/html"
  db:
    image: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: redhat
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

复制代码

上面配置文件的关于编写的参数暂时不进行讲解,这里只进行关于docker-compose的命令

[root@docker ~]# docker-compose --help     
Define and run multi-container applications with Docker.

Usage:
  docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
  docker-compose -h|--help

看用法的定义就是利用docker定义和运行多个容器应用

Options:
  -f, --file FILE             Specify an alternate compose file (default: docker-compose.yml)
  -p, --project-name NAME     Specify an alternate project name (default: directory name)

默认如果没有指定具体的compose配置文件,那么就docker-compose.yml,并且如果不指定项目名称,默认就是文件夹的name

up                 Create and start containers

现在利用command中的up进行创建并启动容器(多个容器,安装配置文件中,至于顺序现在不讲解)

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml up
Creating lnmp_php_1 ... 
Creating lnmp_db_1 ... 
Creating lnmp_db_1
Creating lnmp_php_1 ... done
Creating lnmp_nginx_1 ... 
Creating lnmp_db_1 ... done

复制代码

后面的一大堆输出,这里不进行全部显示了,创建并启动好了容器后,如何查看运行的状态呢?

ps                 List containers
[root@docker lnmp]# docker-compose ps          
Name   Command   State   Ports
------------------------------

为什么这里没有显示呢?因为配置文件名称不是docker-compose.yml,所以在执行一系列命令时需要加上-f lnmp.yaml

[root@docker lnmp]# docker-compose -f lnmp.yaml ps
    Name                  Command               State           Ports         
------------------------------------------------------------------------------
lnmp_db_1      docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp
lnmp_nginx_1   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:80->80/tcp    
lnmp_php_1     /usr/local/php/sbin/php-fpm      Up      9000/tcp  

由于配置文件lnmp.yaml在当前目录,这里可以进行绝对路径:

[root@docker lnmp]# docker-compose -f /root/compose_project/lnmp/lnmp.yaml  ps
    Name                  Command               State           Ports         
------------------------------------------------------------------------------
lnmp_db_1      docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp
lnmp_nginx_1   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:80->80/tcp    
lnmp_php_1     /usr/local/php/sbin/php-fpm      Up      9000/tcp

由上面可以看出将所有的容器都显示出来,如何指定显出某一个容器呢?

[root@docker ~]# docker-compose ps --help
List containers.

Usage: ps [options] [SERVICE...]

一般的command命令都可以带上SERVICE,这里的service是什么呢?就是配置文件中定义的services服务,配置文件中定义了三个:nginx、php、db(不能写错service名称)

[root@docker lnmp]# docker-compose -f /root/compose_project/lnmp/lnmp.yaml  ps nginx
    Name                  Command               State         Ports       
--------------------------------------------------------------------------
lnmp_nginx_1   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:80->80/tcp

name这一列代表的是容器名称,而不是service名称

复制代码

[root@docker lnmp]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
a5747e115947        nginx               "/usr/local/nginx/..."   6 minutes ago       Up 6 minutes        0.0.0.0:80->80/tcp       lnmp_nginx_1
508ac0a6890c        php                 "/usr/local/php/sb..."   6 minutes ago       Up 6 minutes        9000/tcp                 lnmp_php_1
aaa3cc6f1040        mysql               "docker-entrypoint..."   6 minutes ago       Up 6 minutes        0.0.0.0:3306->3306/tcp   lnmp_db_1

复制代码

name的组成由project+service组成(后面的_1本人认为是构建的次数,第一次构建up就代表1吧)

If you change a service’s Dockerfile or the contents of its build directory, run docker-compose build to rebuild it.
docker-compose up --build或者docker-compose build

config:

config             Validate and view the Compose file

利用config命令可以打印处配置文件的内容和service名称以及volumes信息

[root@docker lnmp]# docker-compose -f /root/compose_project/lnmp/lnmp.yaml config --services
php
nginx
db

复制代码

[root@docker lnmp]# docker-compose -f /root/compose_project/lnmp/lnmp.yaml config 
services:
  db:
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_PASSWORD: wordpress
      MYSQL_ROOT_PASSWORD: redhat
      MYSQL_USER: wordpress
    image: mysql
    ports:
    - 3306:3306/tcp
  nginx:
    image: nginx
    links:
    - php:php
    ports:
    - 80:80/tcp
    volumes:
    - /www:/usr/local/nginx/html:rw
  php:
    expose:
    - '9000'
    image: php
    volumes:
    - /www:/usr/local/nginx/html:rw
version: '3.0'

复制代码

[root@docker lnmp]# docker-compose -f /root/compose_project/lnmp/lnmp.yaml config --volumes

down:停止并删除容器、网络、镜像、数据卷

down               Stop and remove containers, networks, images, and volumes

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml down
Stopping lnmp_nginx_1 ... done
Stopping lnmp_db_1    ... done
Stopping lnmp_php_1   ... done
Removing lnmp_nginx_1 ... done
Removing lnmp_db_1    ... done
Removing lnmp_php_1   ... done
Removing network lnmp_default
[root@docker lnmp]# docker-compose -f lnmp.yaml ps  
Name   Command   State   Ports
------------------------------
[root@docker lnmp]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

复制代码

down也带有其他的参数:

复制代码

Options:
    --rmi type          Remove images. Type must be one of:
                        'all': Remove all images used by any service.
                        'local': Remove only images that don't have a custom tag
                        set by the `image` field.
    -v, --volumes       Remove named volumes declared in the `volumes` section
                        of the Compose file and anonymous volumes
                        attached to containers.
    --remove-orphans    Remove containers for services not defined in the
                        Compose file

复制代码

exec:在运行的容器中执行命令:

exec               Execute a command in a running container

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml exec db env   
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=aaa3cc6f1040
TERM=xterm
MYSQL_ROOT_PASSWORD=redhat
MYSQL_PASSWORD=wordpress
MYSQL_USER=wordpress
MYSQL_DATABASE=wordpress
GOSU_VERSION=1.7
MYSQL_MAJOR=5.7
MYSQL_VERSION=5.7.20-1debian8
HOME=/root

复制代码

db是指定了在哪一个service中执行env命令

images:列出镜像

[root@docker lnmp]# docker-compose -f lnmp.yaml images
 Container     Repository    Tag       Image Id      Size 
----------------------------------------------------------
lnmp_db_1      mysql        latest   5709795eeffa   389 MB
lnmp_nginx_1   nginx        latest   c3babfeba09b   551 MB
lnmp_php_1     php          latest   8902ce599658   1 GB  

参数-q:列出镜像的id

[root@docker lnmp]# docker-compose -f lnmp.yaml images -q
5709795eeffac51eca46cf40ab36669aad27e8cb4b0e91876d5e9f7bafad6acb
c3babfeba09bab70a8e3b7e8d734ee274af4a02ed8b9b4d286cd58caf64dbdc5
8902ce599658633ee95e270843b37daabe2e0dc298861ac8c25f5f7e11a7de1e

kill:杀死容器

kill               Kill containers

复制代码

[root@docker ~]# docker-compose kill --help  
Force stop service containers.

Usage: kill [options] [SERVICE...]

Options:
    -s SIGNAL         SIGNAL to send to the container.
                      Default signal is SIGKILL.

复制代码

可以看见后面也可以指定哪一个service

logs:将容器中的日志进行输出

logs               View output from containers

复制代码

[root@docker ~]# docker-compose logs --help 
View output from containers.

Usage: logs [options] [SERVICE...]

Options:
    --no-color          Produce monochrome output.
    -f, --follow        Follow log output.
    -t, --timestamps    Show timestamps.
    --tail="all"        Number of lines to show from the end of the logs
                        for each container.

复制代码

将db的日志输出最后的10行:

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml logs -t --tail db      
ERROR: tail flag must be all or a number
[root@docker lnmp]# docker-compose -f lnmp.yaml logs -t --tail="10" db
Attaching to lnmp_db_1
db_1     | 2017-11-09T14:48:24.618652188Z 2017-11-09T14:48:24.618090Z 0 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
db_1     | 2017-11-09T14:48:24.618654153Z 2017-11-09T14:48:24.618104Z 0 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
db_1     | 2017-11-09T14:48:24.621872173Z 2017-11-09T14:48:24.620524Z 0 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode.
db_1     | 2017-11-09T14:48:24.621897721Z 2017-11-09T14:48:24.620616Z 0 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
db_1     | 2017-11-09T14:48:24.658532597Z 2017-11-09T14:48:24.658110Z 0 [Note] Event Scheduler: Loaded 0 events
db_1     | 2017-11-09T14:48:24.660827605Z 2017-11-09T14:48:24.658335Z 0 [Note] mysqld: ready for connections.
db_1     | 2017-11-09T14:48:24.660852816Z Version: '5.7.20'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)
db_1     | 2017-11-09T14:48:24.660857339Z 2017-11-09T14:48:24.658347Z 0 [Note] Executing 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' to get a list of tables using the deprecated partition engine. You may use the startup option '--disable-partition-engine-check' to skip this check. 
db_1     | 2017-11-09T14:48:24.660861018Z 2017-11-09T14:48:24.658349Z 0 [Note] Beginning of list of non-natively partitioned tables
db_1     | 2017-11-09T14:48:24.679766350Z 2017-11-09T14:48:24.679398Z 0 [Note] End of list of non-natively partitioned tables

复制代码

pause:暂停service:

pause              Pause services
[root@docker ~]# docker-compose pause --help
Pause services.

Usage: pause [SERVICE...]

将db这个service进行暂停:

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml pause db
Pausing lnmp_db_1 ... done
[root@docker lnmp]# docker-compose -f lnmp.yaml ps
    Name                  Command               State            Ports         
-------------------------------------------------------------------------------
lnmp_db_1      docker-entrypoint.sh mysqld      Paused   0.0.0.0:3306->3306/tcp
lnmp_nginx_1   /usr/local/nginx/sbin/ngin ...   Up       0.0.0.0:80->80/tcp    
lnmp_php_1     /usr/local/php/sbin/php-fpm      Up       9000/tcp 

复制代码

unpause:将暂停的service进行恢复:

unpause            Unpause services

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml unpause db
Unpausing lnmp_db_1 ... done
[root@docker lnmp]# docker-compose -f lnmp.yaml ps
    Name                  Command               State           Ports         
------------------------------------------------------------------------------
lnmp_db_1      docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp
lnmp_nginx_1   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:80->80/tcp    
lnmp_php_1     /usr/local/php/sbin/php-fpm      Up      9000/tcp 

复制代码

port:查看端口映射信息:

port               Print the public port for a port binding

复制代码

[root@docker ~]# docker-compose port --help 
Print the public port for a port binding.

Usage: port [options] SERVICE PRIVATE_PORT

Options:
    --protocol=proto  tcp or udp [default: tcp]
    --index=index     index of the container if there are multiple
                      instances of a service [default: 1]

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml port db 3306
0.0.0.0:3306

restart:重启service:

restart            Restart services

复制代码

[root@docker ~]# docker-compose restart --help
Restart running containers.

Usage: restart [options] [SERVICE...]

Options:
  -t, --timeout TIMEOUT      Specify a shutdown timeout in seconds.
                             (default: 10)

复制代码

将nginx这个service进行重启:

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml restart nginx
Restarting lnmp_nginx_1 ... done
[root@docker lnmp]# docker-compose -f lnmp.yaml ps
    Name                  Command               State           Ports         
------------------------------------------------------------------------------
lnmp_db_1      docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp
lnmp_nginx_1   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:80->80/tcp    
lnmp_php_1     /usr/local/php/sbin/php-fpm      Up      9000/tcp 

复制代码

rm:删除已经停止的服务容器,没有停止删除不了

rm                 Remove stopped containers

复制代码

[root@docker ~]# docker-compose rm --help
Removes stopped service containers.

By default, anonymous volumes attached to containers will not be removed. You
can override this with `-v`. To list all volumes, use `docker volume ls`.

Any data which is not in a volume will be lost.

Usage: rm [options] [SERVICE...]

Options:
    -f, --force   Don't ask to confirm removal
    -s, --stop    Stop the containers, if required, before removing
    -v            Remove any anonymous volumes attached to containers
    -a, --all     Deprecated - no effect.

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml rm
No stopped containers

如果加上-s/--stop那么就会先将服务进行停止,然后询问你是否删除:

[root@docker lnmp]# docker-compose -f lnmp.yaml rm -s db
Stopping lnmp_db_1 ... done
Going to remove lnmp_db_1
Are you sure? [yN] 

-f:代表在删除的过程中不会询问你是否删除,而是直接进行删除

run:运行一次性命令

run                Run a one-off command
[root@docker ~]# docker-compose run --help
Run a one-off command on a service.

For example:

    $ docker-compose run web python manage.py shell

scale:扩展容器,为service设置多个容器:

scale              Set number of containers for a service

复制代码

[root@docker ~]# docker-compose scale --help
Set number of containers to run for a service.

Numbers are specified in the form `service=num` as arguments.
For example:

    $ docker-compose scale web=2 worker=3

This command is deprecated. Use the up command with the `--scale` flag
instead.

Usage: scale [options] [SERVICE=NUM...]

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml scale nginx=2
WARNING: The scale command is deprecated. Use the up command with the --scale flag instead.

而且在创建多个容器时需要考虑端口及ip的监听状况(占用的情况)

start              Start services

stop               Stop services

[root@docker lnmp]# docker-compose -f lnmp.yaml stop db
Stopping lnmp_db_1 ... done
[root@docker lnmp]# docker-compose -f lnmp.yaml start db
Starting db ... done

top:显示运行的进程

top                Display the running processes

复制代码

[root@docker lnmp]# docker-compose -f lnmp.yaml top
lnmp_db_1
  UID       PID    PPID    C   STIME   TTY     TIME      CMD  
--------------------------------------------------------------
systemd+   38246   38223   7   23:27   ?     00:00:00   mysqld

lnmp_nginx_1
UID     PID    PPID    C   STIME   TTY     TIME                                   CMD                               
--------------------------------------------------------------------------------------------------------------------
root   38367   38352   1   23:27   ?     00:00:00   nginx: master process /usr/local/nginx/sbin/nginx -g daemon off;
www    38421   38367   0   23:27   ?     00:00:00   nginx: worker process                                           

lnmp_php_1
UID     PID    PPID    C   STIME   TTY     TIME                                CMD                           
-------------------------------------------------------------------------------------------------------------
root   38208   38186   0   23:27   ?     00:00:00   php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www    38307   38208   0   23:27   ?     00:00:00   php-fpm: pool www                                        
www    38308   38208   0   23:27   ?     00:00:00   php-fpm: pool www  

复制代码

指定某一个service:

[root@docker lnmp]# docker-compose -f lnmp.yaml top nginx
lnmp_nginx_1
UID     PID    PPID    C   STIME   TTY     TIME                                   CMD                               
--------------------------------------------------------------------------------------------------------------------
root   38367   38352   0   23:27   ?     00:00:00   nginx: master process /usr/local/nginx/sbin/nginx -g daemon off;
www    38421   38367   0   23:27   ?     00:00:00   nginx: worker process 

version:显示docker-compose的版本信息:

version            Show the Docker-Compose version information
[root@docker lnmp]# docker-compose -f lnmp.yaml version
docker-compose version 1.17.0, build ac53b73
docker-py version: 2.5.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

 

docker-compose命令运行的级别在service层,而如果需要对容器进行修改等操作还是运行docker命令方便

原文地址:https://www.cnblogs.com/chenyishi/p/9440736.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


最近一直在开发Apworks框架的案例代码,同时也在一起修复Apworks框架中的Bug和一些设计上的不足。遇到的一个普遍问题是,代码的调试过程需要依赖很多外部系统,比如MongoDB、PostgreSQL、RabbitMQ等。当然可以在本机逐一安装这些服务,然后对服务进行配置,使其满足自己开发调试
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。在文本发布和处理微服务中,我打算使用微软的SQL Server for Linux来做演示,于是也就在自己的docker-compose中加入了MS SQL Server的服务。其实在Docker中运行SQL Server是非常容
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,我快速介绍了Kubernetes中分布式存储Rook-Ceph的部署过程,这里介绍如何在部署于Kubernetes的ASP.NET Core MVC的应用程序中使用Rook-Ceph所创建的存储对象。 构建ASP.NET C
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也抽空多了解了一些。项目主要基于Rook-Ceph运行,考虑到Rook-Ceph部署也不那么简单,官方文档的步骤起点也不算低,因此,在整合官方文档的某些步骤的基础上,写篇文章简单总结一下。 Rook-Ceph是Kubernetes中分布
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
构建镜像最具挑战性的一点是使镜像大小尽可能的小。Dockerfile中的每条指令都为图像添加了一个图层,您需要记住在移动到下一层之前清理任何不需要的工件。对于多阶段构建,您可以在Dockerfile中使用多个FROM语句。每个FROM指令可以使用不同的基础,并且每个指令都开始一个新的构建。您可以选择
本文介绍compose配置文件参数的使用,熟练编写compose文件 [root@docker lnmp]# cat lnmp.yaml version: &#39;3&#39; services: nginx: build: /root/docker_demo/nginx/ ports: - &q
环境 docker-machine主机:192.168.1.9 docker主机:192.168.1.10 步骤: 安装docker-machine 创建ssh密钥对,实现两主机无密登录 创建docker主机,命名host1 变更docker环境变量 运行容器查看两端是否同步 镜像容器同步测试成功
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
https://blog.csdn.net/wanglei_storage/article/details/77508620 实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行。然而,面对 Kubernetes, Mesos 以及 Swarm 等众多容
1.引言 紧接上篇.NET Core容器化@Docker,这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理,然后再介绍多容器应用的部署问题。 2. Why Need Nginx .NET Core中默认的Web Server为Kestrel。 Kestrel is grea
docker rm `docker ps -a | grep Exited | awk &#39;{print $1}&#39;` 删除异常停止的docker容器 docker rmi -f `docker images | grep &#39;&lt;none&gt;&#39; | awk &#3
什么是Docker Compose 在微服务盛行的今天,我们通常是这么定义Compose的:对容器的统一启动和关闭的编排工具。 但是我以前还是有个疑惑,谁会用Compose在一台服务器上部署多个服务呢?干脆直接用单体服务就行了!直到我遇到了以下的一个需求,让我明白了在一台服务器上不得不用多个服务的时
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
很多时候,我们在本地开发过程中程序运行很正常,但是发布到线上之后由于环境的原因,可能会有一些异常。通常我们会通过日志来分析问题,除了日志还有一种常用的调试手段就是:附加进程。 VS中的附加进程非常强大,目前提供了9种常用的附加方式。 在当前.Net Core支持跨平台的大背景下,其中Linux环境和
https://www.cnblogs.com/bigberg/p/8867326.html 一、简介 Docker有个编排工具docker-compose,可以将组成某个应该的多个docker容器编排在一起,同时管理。同样在Swarm集群中,可以使用docker stack 将一组相关联的服务进行
.Net6中想实现对某个网址截屏,可通过Selenium模拟访问网址并实现截图。 实现 安装Nuget包 &lt;PackageReference Include=&quot;Selenium.Chrome.WebDriver&quot; Version=&quot;85.0.0&quot; /&g
原文&#160;https://www.cnblogs.com/gispathfinder/p/5871043.html 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定。 co