• 十、Compose命令


    于2021年10月9日学习,注意此篇内容是建立在上一篇的案例上的。

    一、compose命令

    废话不多说,先来查看一下帮助

    docker-compose help
    docker-compose [COMMAND] --help
    docker-compose help [COMMAND]
    

    对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。

    如果没有特别的说明,命令对象将是项目,会对项目中所有的服务生效。

    语法

    docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
    
    :'
    [-f=<arg>...]:指定模板文件
    [options]:选项
    [COMMAND]:命令
    [ARGS...]:参数
    '
    

    常用选项

    -f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
    -p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名。
    --verbose 输出更多调试信息。
    -v, --version 打印版本并退出。
    

    案例

    docker-compose -f docker-compose-base.yml -f docker-compose-prod.yml 
    docker-compose -p web
    docker-compose --verbose
    docker-compose -v
    

    使用docker-compose命令需要进入项目文件夹中才能使用

    二、管理命令

    up

    自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。

    默认情况,docker-compose up 启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。

    通过 Ctrl-C 停止命令时,所有容器将会停止。

    如果服务容器已经存在,docker-compose up 将会停止容器,然后重新创建,以保证使用最新 docker-compose.yml 文件内容。

    docker-compose up 
    #只启动处于停止状态的容器,忽略已经运行的服务
    docker-compose up --no-recreate
    #重新创建web服务,不影响web服务依赖的其他服务
    docker-compose up --no-deps -d web
    
    :'
    -d 在后台运行服务容器。
    --no-color 不使用颜色来区分不同的服务的控制台输出。
    --no-deps 不启动服务所链接的容器。
    --force-recreate 强制重新创建容器,不能与 --no-recreate 同时使用。
    --no-recreate 如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用。
    --no-build 不自动构建缺失的服务镜像。
    -t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。
    '
    

    build

    构建或重新构建项目中的服务容器;第一次运行为构建服务容器,第二次运行为重新构建。

    服务容器一旦构建后,将会带上一个标记名,这个标记名就是创建的项目文件夹名;例如 web 项目文件夹中的一个名为db的容器,最后使用docker ps查看容器名为web_db。

    语法

    docker-compose build [options] [SERVICE...]
    

    案例

    docker-compose build
    
    :'
    包括的选项有
    --force-rm 删除构建过程中的临时容器。
    --no-cache 构建镜像过程中不使用 cache(这将加长构建过程)。
    --pull 始终尝试通过 pull 来获取更新版本的镜像。
    '
    

    start

    启动已经存在的服务容器,服务容器必须存在,也就是说需要先构建容器后才能使用该命令。

    docker-compose start web
    

    stop

    停止已经处于运行状态的容器。

    docker-compose start web
    
    :'
    -t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。
    '
    

    restart

    重启项目中的服务。

    #重启所有服务
    docker-compose restart
    #只重启web服务
    docker-compose restart web
    
    :'
    -t, --timeout TIMEOUT 指定重启容器超时时间(默认为 10 秒)。
    '
    

    pause

    暂停一个服务容器。

    docker-compose pause web
    

    unpause

    恢复处于暂停状态中的服务。

    docker-compose unpause web
    

    kill

    通过发送 SIGKILL 信号来强制停止服务容器。

    #杀死全部容器
    docker-compose kill -s SIGINT
    
    #杀死web服务容器
    docker-compose kill -s SIGINT web
    

    rm

    删除所有(停止状态的)服务容器。

    需要先执行 docker-compose stop 命令来停止容器才能使用。

    docker-compose rm
    docker-compose rm web
    
    :'
    -f, --force 强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项。
    -v 删除容器所挂载的数据卷。
    '
    

    down

    此命令将会停止 up 命令所启动的容器,并移除网络。

    docker-compose down
    

    可以看到compose会创建一个以项目名命名,名为web_default的网络,以后介绍。

    三、常用命令

    config

    验证 Compose 文件格式是否正确,若正确则显示配置,若格式错误显示错误原因。

    需要在项目文件夹中运行

    docker-compose config
    

    image-20211009170045249

    run

    在指定服务上执行一个命令。

    如果存在关联,则所有关联的服务将会自动被启动,除非这些服务已经在运行中。

    #启动ubuntu服务容器ping百度
    docker-compose run ubuntu ping www.baidu.com
    
    :'
    -d 后台运行容器。
    --name NAME 为容器指定一个名字。
    --entrypoint CMD 覆盖默认的容器启动指令。
    -e KEY=VAL 设置环境变量值,可多次使用选项来设置多个环境变量。
    -u, --user="" 指定运行容器的用户名或者 uid。
    --no-deps 不自动启动关联的服务容器。
    --rm 运行命令后自动删除容器,d 模式下将忽略。
    -p, --publish=[] 映射容器端口到本地主机。
    --service-ports 配置服务端口并映射到本地主机。
    -T 不分配伪 tty,意味着依赖 tty 的指令将无法运行。
    '
    

    exec

    进入指定的容器,这里的web是上一篇博文案例中的web服务。

    #查看运行的容器
    docker-compose ps
    
    #进入web容器
    docker-compose exec web sh
    
    #执行ping命令
    docker-compose exec web ping www.baidu.com
    
    #当服务有多个容器时,使用--index指定第几个,默认是第一个
    docker-compose exec --index=2 web sh
    

    效果如下

    image-20211009173028884

    images

    列出 Compose 文件中包含的镜像。

    docker-compose images
    

    image-20211009222827251

    logs

    查看服务容器的日志。默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分。

    #查看web服务容器的日志
    docker-compose logs web
    

    port

    打印某个容器端口所映射的公共端口。

    docker-compose port web 5000
    
    :'
    其他选项
    --protocol=proto 指定端口协议,tcp(默认值)或者 udp。
    --index=index 如果同一服务存在多个容器,指定命令对象容器的序号(默认为 1)。
    '
    

    image-20211009230832137

    注意这是将容器端口映射的宿主机端口打印出来,映射端口需要在docker-compose-base.yml文件中修改

    ps

    列出项目中目前的所有容器。

    docker-compose ps
    #只打印容器ID信息
    docker-compose ps -q
    

    image-20211010095546023

    pull

    拉取服务依赖的镜像。

    #拉取全部服务镜像
    docker-compose pull
    #只拉取web服务镜像
    docker-compose pull web
    
    :"
    --ignore-pull-failures 忽略拉取镜像过程中的错误。
    "
    

    push

    推送服务依赖的镜像到 Docker 镜像仓库。

    #推送全部服务镜像
    docker-compose push
    #只推送web服务镜像
    docker-compose push web
    

    scale

    设置指定服务运行的容器个数。

    当指定数目多于该服务当前实际运行容器,将新创建并启动容器;反之,将停止容器。

    #启动3个web服务容器,启动2个db服务容器
    docker-compose scale web=3 db=2
    
    :'
    -t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。
    '
    

    top

    查看各个服务容器内运行的进程。

    docker-compose top web
    

    version

    打印版本信息。

    docker-compose version
    

    四、参考资料

    docker入门到实战

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    【强化学习】python 实现 q-learning 例二
    【强化学习】python 实现 q-learning 例一
    python棋类游戏编写入门
    推荐几个表格工具
    【Java并发编程实战】----- AQS(四):CLH同步队列
    【Java并发编程实战】----- AQS(三):阻塞、唤醒:LockSupport
    【Java并发编程实战】----- AQS(二):获取锁、释放锁
    【Java并发编程实战】----- AQS(一):简介
    【Java并发编程实战】-----“J.U.C”:CLH队列锁
    【Java并发编程实战】-----“J.U.C”:CAS操作
  • 原文地址:https://www.cnblogs.com/tz90/p/12240793.html
Copyright © 2020-2023  润新知