Docker安装与使用

**

一、docker-compose安装和部署

docker-compose下载地址:[点这里]

1.1下载docker-compose并上传到Linux服务器上
sudo curl -L “https://github.com/docker/compose/releases/download/1.27.2/docker-compose- ( u n a m e − s ) − (uname -s)- (unames)(uname -m)” -o /usr/local/bin/docker-compose

1.2授权
chmod +x /usr/local/bin/docker-compose

1.3查看docker-compose版本
docker-compose --version

二、docker-compose参数详解

2.1默认模板文件

docker-compose.yml
格式为yaml

environment
services:
mysql:
image: mysql:latest
ports:
- 3307:3306
environment: #使用字典格式,类似docker run -e MYSQL_ROOT_PASSWORD=root
- MYSQL_ROOT_PASSWORD: root
volumes
services:
mysql:
image: mysql:latest
ports:
- 3307:3306
environment:
- MYSQL_ROOT_PASSWORD: root
volumes:
#挂载绝对路径映射,没有这个路径的话会自动创建
- /root/docker/composetest/tomcat/app_data:/var/lib/mysql
#或者使用相对路径映射,也会自动创建
- ./app_data:/var/lib/mysql

build
指定dockerfile所在文件夹路径,compose会利用它自动构建这个镜像,然后使用这个镜像
services:
webapp:
build: ./ #从当前目录下寻找dockerfile文件

你也可以使用 context 指令指定 Dockerfile 所在文件夹的路径,使用 dockerfile 指令指定 Dockerfile 文件名,可以使用 args 指令指定构建镜像时往Dockerfile中传入的变量。

services:

webapp:
build:
context: ./dir
dockerfile: Dockerfile_flask
args:
buildno: 1
depends_on
#解决容器的依赖、启动先后的问题。以下例子中会先启动 redis db 再启动 web。
注意:web 服务不会等待 redis、db 完全启动之后才启动。

services:
webapp:
build: .
depends_on:
- db
- redis

redis:
image: redis:latest

db:
image: mysql:latest

env_file
#从文件中获取环境变量,可以为单独的文件路径或列表。
services:
mysql:
image: mysql:latest
ports:
- 3307:3306
env_file: .env # 仅使用单个env文件

env_file:		**# 通过数组来使用多个env文件**
  - ./common.env
  - ./apps/web.env
  - /opt/secrets.env

环境变量文件中每一行必须符合格式,支持 # 开头的注释行。

common.env: Set development environment

MYSQL_ROOT_PASSWORD=root

networks
配置容器连接的网络。
services:
webapp:
networks:
- flask-net

networks: # 在顶级networks关键字中需要声明,才会在启动时自动创建该网络,否则报错。
flask-net:

ports
#暴露端口信息。使用宿主端口:容器端口 (HOST:CONTAINER) 格式。
ports:

2.2 “80:80” # 绑定容器的80端口到主机的80端口
2.3 “9000:8080” # 绑定容器的8080端口到主机的9000端口
2.4 “443” # 绑定容器的443端口到主机的任意端口,容器启动时随机分配绑定的主机端口号

expose
#暴露端口,但不映射到宿主机,只被连接的服务访问。
和ports的区别是,expose暴露容器给link到当前容器的容器,不会将端口暴露给主机。

restart
#指定docker容器(服务)总是运行
services:
webapp:
networks:
- flask-net
restart: always

三、 docker-compose指令
中文文档: 点这里

up -d(后台启动)
该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。
docker-compose up -d · # 不写服务名,默认启动docker-compose.yml所有服务
docker-compose up -d 服务名 # 启动docker-compose.yml的对应服务

默认情况,如果服务容器已经存在,docker-compose up 将会尝试停止容器,然后重新创建(保持使用 volumes-from 挂载的卷),以保证新启动的服务匹配 docker-compose.yml 文件的最新内容。但是不会更新已经打好的镜像,如果镜像错误,不能通过 docker-compose up 更新镜像,只能先删除镜像。如果用户不希望容器被停止并重新创建,可以使用 docker-compose up --no-recreate。这样将只会启动处于停止状态的容器,而忽略已经运行的服务。如果用户只想重新部署某个服务,可以使用 docker-compose up --no-deps -d <SERVICE_NAME> 来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。

#此命令将会停止 up 命令所启动的容器,并移除网络,但是不会移除已经打好的镜像。
down

# 不写服务名,默认停止docker-compose.yml所有服务
docker-compose down ·

# 停止docker-compose.yml的对应服务
docker-compose down 服务名

#进入指定的容器。和docker的exec命令一样。
exec
docker-compose exec 服务名 bash

ps
列出项目中目前的所有容器。
docker-compose ps # 列出所有运行的服务
docker-compose ps -q # 只列出容器的ID信息
选项:
-q 只打印容器的 ID 信息。

top
查看所有服务容器内运行的进程,或者查看指定服务名的容器内运行的进程。
docker-compose top
docker-compose top 服务名

logs -f(实时)
查看所有服务容器,或指定服务容器的日志输出。默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分。可以通过 --no-color 来关闭颜色。该命令在调试问题的时候十分有用。
docker-compose logs # 输出所有服务容器的日志
docker-compose logs 服务名 # 输出对应服务的日志
docker-compose logs -f 服务名 # 实时输出对应服务的日志

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值