docker compose 安装和使用
程序员文章站
2022-05-14 20:43:16
...
1、安装 docker compose
https://docs.docker.com/compose/install/
选择linux 即可。
执行:
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[[email protected] ~]$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
[[email protected] ~]$ sudo chmod +x /usr/local/bin/docker-compose
[[email protected] ~]$ docker-compose --version
即可。
2、在docker-compose.yml 目录下,执行docker-compose up
命令,
# docker compose api 版本
version: '3'
services:
# 定义了 两个 service 分别是 名字分别是 wordpress 和 mysql
wordpress:
#image 为 word press
image: wordpress
#本地 8888 端口 映射 容器 80 端口
ports:
- 8080:80
depends_on:
- mysql
# wordpress 连接数据库 的 host 为 mysql , passwword 为 root 类似于 -e
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: root
# 指定连接 的网络 为 my-bridge
networks:
- my-bridge
# 数据库 root 的 连接密码 和 所使用的数据库名称
mysql:
image: mysql:5.7.27
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
# 外部 mysql-data 挂载到 容器内的 /var/lib/mysql
volumes:
- mysql-data:/var/lib/mysql
#指定连接 的网络 为 my-bridge
networks:
- my-bridge
# 定义 volumes
volumes:
mysql-data:
# 定义 networks
networks:
my-bridge:
driver: bridge
命令:
docker-compose -f docker-compose.yml up # 以docker-compose.yml 为配置文件 启动 docker (因为默认 为 docker-compose.yml 所以可以 省略)
docker-compose build # 如果 docker-compose.yml 中有镜像要 build 可以先 build
docker-compose up # 根据 docker-compose.yml 安装 docker-compose 的服务
docker-compose up -d # 根据 docker-compose.yml 安装 docker-compose 的服务 后台运行
docker-compose down # 停止 服务, 删除 容器 ,删除 网络,删除 挂载
docker-compose stop # 停止 服务
docker-compose start # 启动 服务
docker-compose restart # 重启 服务
docker-compose ls # 列出所有容器
docker-compose images # 列出所使用的镜像
docker-compose exec [service_name: eg wordpress] bash # 进入正在服务的容器内部
例如:docker-compose exec wordpress bash 进入WordPress这个容器bash
docker-compose stop
docker-compose start
docker-compose down
docker images
[[email protected] ~]$ docker-compose stop
Stopping vagrant_wordpress_1 ... done
Stopping vagrant_mysql_1 ... done
[[email protected] ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[[email protected] ~]$ docker-compose start
Starting mysql ... done
Starting wordpress ... done
[[email protected] ~]$ docker-compose down
Stopping vagrant_wordpress_1 ... done
Stopping vagrant_mysql_1 ... done
Removing vagrant_wordpress_1 ... done
Removing vagrant_mysql_1 ... done
Removing network vagrant_my-bridge
[[email protected] ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpress latest f1da35a7ddca 3 days ago 546MB
mysql 5.7.27 383867b75fd2 11 months ago 373MB
-d 后台运行docker-compose up -d
:
[[email protected] ~]$ docker-compose up -d
Creating network "vagrant_my-bridge" with driver "bridge"
Creating vagrant_mysql_1 ... done
Creating vagrant_wordpress_1 ... done
[[email protected] ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7a6d6385ff6a wordpress "docker-entrypoint.s…" 5 seconds ago Up 4 seconds 0.0.0.0:8080->80/tcp vagrant_wordpress_1
bdc397f7def0 mysql:5.7.27 "docker-entrypoint.s…" 5 seconds ago Up 5 seconds 3306/tcp, 33060/tcp vagrant_mysql_1
3、docker-compose 从本地 的 Dockerfile 创建 服务
services:
wordpress:
image: wordpress
替换为
services:
wordpress:
# 类似于 docker build -t 'wordpress' . build 后的 . (点) 与 docker build 命令的 . (点)
build: .
dockerfile: Dockerfile
例如:
# docker compose api 版本
version: '3'
services:
redis:
image: redis
web:
build:
context: .
dockerfile: Dockerfile
ports:
- 8080:5000
environment:
REDIS_HOST: redis