docker-compose

发布时间:2023年12月17日

1.如何安装docker-compose

首先安装docker-compose

mv docker-compose-linux-x86_64 docker-compose

mv docker-compose /usr/local/bin

chmod 777 /usr/local/bin/docker-compose

docker-compose -v

2.docker-compose

docker-compose 单机容器编排

Dockerfile:先配置好文件,然后build,镜像------->容器

docker-compose 既可以基于dockerfile,也可以基于镜像,一键式,拉起镜像和容器。

docker-compose 核心就是yml文件,可以定义容器的一切,通过yml配置,直接运行容器

docker:单节点。docker没有统一对外提供服务的端口和配置。docker一般都是内部访问,无需使用https。如果要对外以集群和分布式的方式提供统一访问的端口,k8s+ingress

3.yaml文件

yaml文件:是一种标记语言,以竖列的形式展示序列化的数据格式,可读性高

类似于json格式,语法简单。

YAML通过缩进来表示数据结构,连续的项目用 -来表示

yaml文件使用的注意事项:

1.大小写敏感

2.通过缩进表示层级关系

3.只能用空格缩进不能用tab缩进

4.可以使用#键注释

5.符号字符后面都有一个空格

6.单引号引起了的字符,会被当做普通字符串处理, 双引号里面是特殊字符,就是本意

4.YAML文件的基础数据结构

声明变量(标量,原子性,单个的,不可再分的值,字符串 整数 布尔类型):

name: guoqi

age: 20

tail: yes

handsan: yes

wan: true

list(列表):表示有序的元素集合

class:

- guoqi

- zirui

- defu

键值对映射:

student:

Namw: guoqi

Age: 20

student1:

Namw: zirui

Age: 18

注释:

# test

引用:

student: &id1

name:guoqi

Age: 20

student1: *id1

用&来定义锚点,用*来进行引用

字符串引号:

name: 'guoqi'

name: "guoqi"

5.docker-compose的常用命令

build:构建服务

ps:列出由docker-compose编排出来的容器

up:创建和启动容器

top:显示容器的进程

logs:查看容器的输出日志

down:删除容器,网络以及数据卷

exec:在容器当中执行命令

stop/start/restart:停止,启动,重启容器

scale:指定容器服务的启动数量(副本)

6.docker-compose安装nginx

首先安装docker-compose

mv docker-compose-linux-x86_64 docker-compose

mv docker-compose /usr/local/bin

chmod 777 /usr/local/bin/docker-compose

docker-compose -v

yum -y install tree

mkdir compose-nginx

cd compose-nginx

mkdir nginx

cd nginx

把nginx投进去

vim Dockerfile

FROM centos:7

RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make && useradd -M -s /sbin/nologin nginx

ADD nginx-1.22.0.tar.gz /usr/local/src/

WORKDIR /usr/local/src/nginx-1.22.0

RUN ./configure \

--prefix=/usr/local/nginx \

--user=nginx \

--group=nginx \

--with-http_stub_status_module && make -j 4 && make install

ENV PATH /usr/local/nginx/sbin:$PATH

EXPOSE 80

ENTRYPOINT ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

wq!

cd /opt/compose-nginx

mkdir www

cd www/

echo "this is nginx1" > index.html

cd /opt/compose-nginx

vim docker-compose.yml

version: '3'

#指定docker-compose的文件版本

services:

#定义需要运行的服务

nginx:

container_name: web1

#指定创建容器的名字。

hostname: nginx

#指定容器的主机名nginx

build:

#指定构建nginx容器的上下文以及dockerfile

context: /opt/compose-nginx/nginx

#指定docker的位置

dockerfile: Dockerfile

#指定dockerfile的位置,如果用镜像缓存image:

ports:

#指定宿主机和容器的端口映射关系

- 1213:80

networks:

#声明给容器指定的IP地址

mynet:

#自定义网络

ipv4_address: 172.18.0.10

volumes:

- /opt/compose-nginx/www:/usr/local/nginx/html

networks:

#创建自定义网桥接口配置

mynet:

driver: bridge

#声明网段的类型

ipam:

#声明网段,ip地址的管理和配置

config:

#子网配置,指定ip地址的范围:

- subnet: 172.18.0.0/16

######

version: '3'

services:

nginx:

container_name: web1

hostname: nginx

build:

context: /opt/compose-nginx/nginx

dockerfile: Dockerfile

ports:

- 1213:80

networks:

mynet:

ipv4_address: 172.18.0.10

volumes:

- /opt/compose-nginx/www:/usr/local/nginx/html

networks:

mynet:

driver: bridge

ipam:

config:

- subnet: 172.18.0.0/16

wq!

cd compose-nginx

docker-compose -f docker-compose.yml up -d

#docker-compose使用docker-compose进行容器编排

-f 使用特定的compose的模版文件,一般都要docker-compose.yml

-p: project-name 指定项目名称,如果不加,会使用目录名称

-d: 后台运行

docker ps

7.docker-compose安装lnmp

mkdir /opt/lnmp

cd /opt/lnmp

mkdir nginx mysql php

cd nginx

把nginx和nginx.conf,wordpress

vim Dockerfile

cd mysql/

把mysql和my.cnf进去

vim Dockerfile

cd php

把东西全部拖进去

vim Dockerfile

cd lnmp

vim docker-compose.yml

version: '3'

services:

nginx:

hostname: nginx

build:

context: /opt/lnmp/nginx

dockerfile: Dockerfile

ports:

- 1314:80

container_name: nginx_server

networks:

lnmp:

ipv4_address: 172.111.0.10

volumes:

- "nginx-data:/usr/local/nginx/html"

mysql:

hostname: mysql

build:

context: /opt/lnmp/mysql/

dockerfile: Dockerfile

ports:

- 3306:3306

container_name: mysql_server

networks:

lnmp:

ipv4_address: 172.111.0.20

privileged: true

#虽然我们登录容器,显示的是root用户,伪管理员,一旦privileged: true,容器内的root用户和宿主机的root用户,拥有一样的权限,在生产中能不给就不给。

volumes:

- "mysql-data:/usr/local/mysql"

php:

hostname: php

build:

context: /opt/lnmp/php/

dockerfile: Dockerfile

ports:

- 9000:9000

container_name: php_server

networks:

lnmp:

ipv4_address: 172.111.0.30

volumes:

- "nginx-data:/usr/local/nginx/html"

- "mysql-data:/usr/local/mysql/"

networks:

lnmp:

driver: bridge

ipam:

config:

- subnet: 172.111.0.0/16

volumes:

nginx-data:

mysql-data:

cd /opt/lnmp

docker-compose -f docker-compose.yml up -d

docker images

docker ps

docker exec -it mysql_server bash

mysql -u root -p

create database wordpress;

grant all privileges on wordpress.* to 'wordpress'@'%'identified by '123456';

grant all privileges on *.* to 'root'@'%' identified by '123456';

flush privileges;

exit

访问192.168.66.14:1314/wordpress/index.php

文章来源:https://blog.csdn.net/qq_59980732/article/details/134968495
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。