您当前的位置: 首页 >  docker

庄小焱

暂无认证

  • 2浏览

    0关注

    805博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Docker——docker-compose命令操作全集

庄小焱 发布时间:2021-09-15 14:03:01 ,浏览量:2

摘要

前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知,使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具。

Docker Compose 将所管理的容器分为三层,分别是工程(project)、服务(service)、容器(container)。Docker Compose 运行目录下的所有文件(docker-compose.yml)组成一个工程,一个工程包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖,一个服务可包括多个容器实例。

一、安装 docer-compose
#安装 Docker Compose 可以通过下面命令自动下载适应版本的 Compose,并为安装脚本添加执行权限

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

#赋予权限

sudo chmod +x /usr/local/bin/docker-compose

#查看安装是否成功

docker-compose -v

二、docer-compose 常用命令
# 下载服务镜像

docker-compose pull:

# ps:列出所有运行容器

docker-compose ps

# logs:查看服务日志输出

docker-compose logs

# up:构建、启动容器

docker-compose up

# kill:通过发送 SIGKILL 信号来停止指定服务的容器

docker-compose kill eureka

# port:打印绑定的公共端口,下面命令可以输出 eureka 服务 8761 端口所绑定的公共端口

docker-compose port eureka 8761

# build:构建或者重新构建服务

docker-compose build

# start:启动指定服务已存在的容器

docker-compose start eureka

# stop:停止已运行的服务的容器

docker-compose stop eureka

# rm:删除指定服务的容器

docker-compose rm eureka

# 设置指定服务运气容器的个数,以 service=num 形式指定

docker-compose scale user=3 movie=3

# run:在一个服务上执行一个命令

docker-compose run web bash

当服务的配置发生更改时,可使用 docker-compose up 命令更新配置,此时,Compose 会删除旧容器并创建新容器,新容器会以不同的 IP 地址加入网络,名称保持不变,任何指向旧容起的连接都会被关闭,重新找到新容器并连接上去。

links:服务之间可以使用服务名称相互访问,links 允许定义一个别名,从而使用该别名访问其它服务
,这样 Web 服务就可以使用 db 或 database 作为 hostname 访问 db 服务了。

version: '2'
services:
    web:
        build: .
        links:
            - "db:database"
    db:
        image: postgres

三、docer-compose详细命令
config

docker-compose config -q

验证 `docker-compose.yml` 文件。当配置正确时,不输出任何内容,当配置错误时,输出错误信息。
pull

docker-compose pull` 拉取服务依赖的镜像。


# 拉取工程中所有服务依赖的镜像

docker-compose pull

# 拉取工程中 nginx 服务依赖的镜像

docker-compose pull nginx

# 拉取镜像过程中不打印拉取进度信息

docker-compose pull -q
up

`docker-compose up` 创建并启动所有服务的容器。指定多个 yml 加 `-f` 选项。以守护进程模式运行加 `-d` 选项。


# 前台启动

docker-compose up

# 后台启动

docker-compose up -d

# -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定,指定多个 yml
docker-compose -f docker-compose.yml up -d 

logs

`docker-compose logs` 查看服务容器的输出日志。默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分。可以通过 `--no-color` 来关闭颜色。


# 输出日志,不同的服务输出使用不同的颜色来区分

docker-compose logs

# 跟踪日志输出

docker-compose logs -f

# 关闭颜色

docker-compose logs --no-color
ps
  
`docker-compose ps` 列出工程中所有服务的容器。

# 列出工程中所有服务的容器

docker-compose ps

# 列出工程中指定服务的容器

docker-compose ps nginx
run

`docker-compose run` 在指定服务容器上执行一个命令。

# 在工程中指定服务的容器上执行 echo "helloworld"

docker-compose run nginx echo "helloworld"
exec

`docker-compose exec` 进入服务容器。


# 进入工程中指定服务的容器

docker-compose exec nginx bash

# 当一个服务拥有多个容器时,可通过 --index 参数进入到该服务下的任何容器

docker-compose exec --index=1 nginx bash
pause

`docker-compose pause` 暂停服务容器。

# 暂停工程中所有服务的容器

docker-compose pause

# 暂停工程中指定服务的容器

docker-compose pause nginx
unpause

`docker-compose unpause` 恢复服务容器。

# 恢复工程中所有服务的容器

docker-compose unpause

# 恢复工程中指定服务的容器

docker-compose unpause nginx
restart

`docker-compose restart` 重启服务容器。

# 重启工程中所有服务的容器

docker-compose restart

# 重启工程中指定服务的容器

docker-compose restart nginx
start

`docker-compose start` 启动服务容器。


# 启动工程中所有服务的容器

docker-compose start

# 启动工程中指定服务的容器

docker-compose start nginx
stop

`docker-compose stop` 停止服务容器。

# 停止工程中所有服务的容器

docker-compose stop

# 停止工程中指定服务的容器

docker-compose stop nginx
kill

`docker-compose kill` 通过发送 `SIGKILL` 信号停止指定服务的容器。

# 通过发送 SIGKILL 信号停止工程中指定服务的容器

docker-compose kill nginx
rm

`docker-compose rm` 删除服务(停止状态)容器。

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

docker-compose rm

# 先停止所有服务的容器,再删除所有服务的容器

docker-compose rm -s

# 不询问是否删除,直接删除

docker-compose rm -f

# 删除服务容器挂载的数据卷

docker-compose rm -v

# 删除工程中指定服务的容器

docker-compose rm -sv nginx
down

停止并删除所有服务的容器、网络、镜像、数据卷。


# 停止并删除工程中所有服务的容器、网络

docker-compose stop

# 停止并删除工程中所有服务的容器、网络、镜像

docker-compose down --rmi all

# 停止并删除工程中所有服务的容器、网络、数据卷

docker-compose down -v
images

`docker-compose images` 打印服务容器所对应的镜像。

# 打印所有服务的容器所对应的镜像

docker-compose images

# 打印指定服务的容器所对应的镜像

docker-compose images nginx
port

`docker-compose port` 打印指定服务容器的某个端口所映射的宿主机端口。

[root@localhost docker-nginx]# docker-compose port nginx 80
0.0.0.0:80
top

`docker-compose top` 显示正在运行的进程。


# 显示工程中所有服务的容器正在运行的进程

docker-compose top

# 显示工程中指定服务的容器正在运行的进程

docker-compose top nginx
四、docer compose.yaml文件模板

详细的启动一个的docek的实例的配置请参考官方文档中的配置和网站上自己搜索对应的docker的配置文件。详细的网站在博文参考中,提供给大家参考。

---------------------Redis 配置指令参考---------------------
version: "2"

services:
### console
    console:
        build:
            context: ./images/console
            args:
                # console 容器 www-data用户密码
                - USERPASS=root
                - GIT_NAME=yangnan
                - GIT_EMAIL=20706149@qq.com
                - INSTALL_YARN=false
        volumes_from:
            - php-fpm
            - nginx
            - mysql
            - redis
        volumes:
            - ./ssh:/home/www-data/.ssh
        links:
            - redis
            - mysql
        tty: true

### php-fpm
    php-fpm:
        build: ./images/php-fpm
        volumes:
            - ./app/:/var/www/

### nginx
    nginx:
        image: nginx
        ports:
            - "8081:80"
        volumes_from:
            - php-fpm
        volumes:
            - ./logs/nginx/:/var/log/nginx/
            - ./images/nginx/sites:/etc/nginx/conf.d/
        links:
            - php-fpm

### mysql
    mysql:
        image: mysql
        ports:
            - "7706:3306"
        environment:
            MYSQL_ROOT_PASSWORD: "123"
            MYSQL_DATABASE: "test"
            MYSQL_USER: "root"
            MYSQL_PASSWORD: "123"
        volumes:
            - ./data/mysql:/var/lib/mysql

### redis
    redis:
        image: redis
        ports:
            - "6379:6379"
        volumes:
            - ./data/redis:/data
五、docker compose 制作docker示例 5.1 dockerfile 文件
# 打包项目,获得 jar 包 docker-demo-1.0.jar

mvn clean package

# 在 jar 包所在路径创建 Dockerfile 文件,添加以下内容

FROM java:8
VOLUME /tmp
ADD docker-demo-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 9000
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]
5.2 docker-compose.yml文件
# 在 jar 包所在路径创建文件 docker-compose.yml,添加以下内容

version: '2' # 表示该 Docker-Compose 文件使用的是 Version 2 file
services:
  docker-demo:  # 指定服务名称
    build: .  # 指定 Dockerfile 所在路径
    ports:    # 指定端口映射
      - "9000:8761"
5.3 docker-compose up 编译
# 在 docker-compose.yml 所在路径下执行该命令 Compose 就会自动构建镜像并使用镜像启动容器

访问 http://localhost:9000/hello 即可访问微服务接口


docker-compose up

docker-compose up -d  // 后台启动并运行容器
博文参考

命令说明 - Docker —— 从入门到实践

Docker Compose | 菜鸟教程

Docker:Docker Compose 详解 - 简书

docker -compose 容器常用命令 - 时光一寸灰 - 博客园

关注
打赏
1657692713
查看更多评论
立即登录/注册

微信扫码登录

0.0388s