进程 LeetCode USB串口通信 Java中高进阶架构 reactjs optimization lambda junit hive constructor vue优势 sql视频教程 bootstrap框架 jquery去除空格 string转16进制 nikto扫描web漏洞 python正则 python中assert pythonfor循环 python字典get python编程教程 windows搭建python开发环境 python加入环境变量 java编程课程 java中的继承 java的环境配置 java定义字符串 数据库系统概论第五版 图解设计模式 王者荣耀自动刷冒险 微信骰子表情包 什么模拟器最好 明解c语言 灰色按钮激活精灵 头条视频解析 松下plc编程软件 正则表达式数字 dnf选择角色卡死 pp安卓助手 losecontrol
当前位置: 首页 > 学习教程  > 编程语言

Docker——10——Docker-compose——代发

2020/10/8 18:33:53 文章标签:

docker-compose docker容器的编排工具:解决相互有依赖关系的多个容器的管理工具(单台dockerhost上)。简单理解:可以同时管理(增、删、改、查等)多个容器。 官网文档地址:https://docs.docker.…

docker-compose

docker容器的编排工具:解决相互有依赖关系的多个容器的管理工具(单台dockerhost上)。简单理解:可以同时管理(增、删、改、查等)多个容器。

官网文档地址:https://docs.docker.com/compose/overview/

docker镜像在创建之后,往往需要自己手动pull来获取镜像,然后执行 run 命令来运行。当服务需要用到多种容器,容器之间又产生了各种依赖和连接的时候,部署一个服务的手动操作是令人感到十分厌烦的。

docker-compose技术,就是通过一个 .yml 配置文件,将所有的容器的部署方法、文件映射、容器连接等等一系列的配置写在一个配置文件里,最后只需要执行docker-compose up命令就会像执行脚本一样的去一个个安装容器并自动部署他们,极大的便利了复杂服务的部署。

docker-compose安装布署

[root@docker01 ~]# curl -L https://github.com/docker/compose/releases/download/1.26.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@docker01 ~]# chmod +x /usr/local/bin/docker-compose

验证已有docker-compose命令

[root@docker01 ~]# docker-compose -v
docker-compose version 1.26.0, build d4451659

设置tab键的空格距离

[root@docker01 ~]# vim .vimrc
set tabstop=2
[root@docker01 ~]# source .vimrc

docker-compose的配置文件实例

通过识别一个docker-compose.yml的配置文件,去管理容器。

[root@docker01 ~]# mkdir compose
[root@docker01 ~]# cd compose/
[root@docker01 compose]# vim docker-compose.yaml
version: "3"
services:
  nginx:
    container_name: web-nginx
    image: nginx
    restart: always
    ports:
      - 90:80
    volumes:
      - ./webserver:/usr/share/nginx/html

第一个部分: version: 指定语法格式的版本
第二部分: service:定义服务,(想要运行什么样的容器)
nginx:服务的名称
container_name:web-nginx //容器名称
image:nginx:latest //使用的镜像
restart:always
ports://端口映射
- 80:80

运行docker-compose规定的容器

PS:在执行这条命令的当前目录下,也需要有一个docker-compose.yml的配置文件,并且通常只有一个

[root@docker01 compose]# docker-compose up			#终端——111
Creating network "compose_default" with the default driver
Pulling nginx (nginx:)...
latest: Pulling from library/nginx
d121f8d1c412: Pull complete
ebd81fc8c071: Pull complete
655316c160af: Pull complete
d15953c0e0f8: Pull complete
2ee525c5c3cc: Pull complete
Digest: sha256:9a1f8ed9e2273e8b3bbcd2e200024adac624c2e5c9b1d420988809f5c0c41a5e
Status: Downloaded newer image for nginx:latest
Creating web-nginx ... done
Attaching to web-nginx
web-nginx | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
web-nginx | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
web-nginx | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
web-nginx | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
web-nginx | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
web-nginx | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
web-nginx | /docker-entrypoint.sh: Configuration complete; ready for start up
占用终端……


[root@docker01 compose]# curl 127.0.0.1:90			#终端——222
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.19.2</center>
</body>
</html>


[root@docker01 compose]# docker-compose up			#终端——111
……
web-nginx | 2020/09/14 10:05:09 [error] 28#28: *1 directory index of "/usr/share/nginx/html/" is forbidden, client: 172.18.0.1, server: localhost, request: "GET / HTTP/1.1", host: "127.0.0.1:90"
web-nginx | 172.18.0.1 - - [14/Sep/2020:10:05:09 +0000] "GET / HTTP/1.1" 403 153 "-" "curl/7.29.0" "-"


[root@docker01 ~]# cd compose/
[root@docker01 compose]# echo hello > webserver/index.html			#终端——222
[root@docker01 compose]# curl 127.0.0.1:90
hello


[root@docker01 compose]# docker-compose up			#终端——111
……
web-nginx | 172.18.0.1 - - [14/Sep/2020:10:07:37 +0000] "GET / HTTP/1.1" 200 6 "-" "curl/7.29.0" "-"


ctrl + c 结束
^CGracefully stopping... (press Ctrl+C again to force)
Stopping web-nginx ... done


[root@docker01 compose]# docker ps -a			#容器也会随之停止
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
8a317877ed7e        nginx               "/docker-entrypoint.…"   10 minutes ago      Exited (0) 39 seconds ago                       web-nginx

PS: docker-compose up 之后,会显示都做了什么操作,并占用终端,如果想要退出终端占用,加-d 选项

保持后台运行

[root@docker compose]# docker-compose up -d
Starting web-nginx ... done
启动
[root@docker01 compose]# docker-compose start
Starting nginx ... done
[root@docker01 compose]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
8a317877ed7e        nginx               "/docker-entrypoint.…"   12 minutes ago      Up 19 seconds       0.0.0.0:90->80/tcp   web-nginx
停止运行
[root@docker compose]# docker-compose stop
Stopping web-nginx ... done
重启
[root@docker compose]# docker-compose restart
Restarting web-nginx ... done

并且,在运行container的过程中,还可以支持Dockerfile

[root@docker01 compose]# vim Dockerfile
FROM nginx
COPY ./webserver/index.html /usr/share/nginx/html/index.html
修改docker-compose.yaml文件
[root@docker01 compose]# vim docker-compose.yaml
version: "3"
services:
  nginx:
    build: .
    container_name: web-nginx
    image: nginx:v1.0
    restart: always
    ports:
      - 91:80
运行docker-compose命令的时候,如果文件内有Dockerfile,可以提前执行:docker-compose build 或者在up -d 的时候添加 - -build 选项
[root@docker01 compose]# docker-compose up -d --build
Building nginx
Step 1/2 : FROM nginx
 ---> 7e4d58f0e5f3
Step 2/2 : COPY ./webserver/index.html /usr/share/nginx/html/index.html
 ---> 81c075630db6
Successfully built 81c075630db6
Successfully tagged nginx:v1.0
Recreating web-nginx ... done


[root@docker01 compose]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                NAMES
bf151a86107d        nginx:v1.0          "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:91->80/tcp   web-nginx
[root@docker01 compose]# curl 127.0.0.1:91
hello

修改docker-compose.yaml文件,验证是否可以自动映射端口

[root@docker01 compose]# vim docker-compose.yaml
version: "3"
services:
  nginx:
    build: .
    container_name: web-nginx
    image: nginx:v1.0
    restart: always
    ports:
      - 80


[root@docker01 compose]# docker-compose stop			#停止之前的
Stopping web-nginx ... done
[root@docker01 compose]# docker-compose rm				#删除之前的
Going to remove web-nginx
Are you sure? [yN] y
Removing web-nginx ... done

[root@docker01 compose]# docker-compose up -d --build
Building nginx
Step 1/2 : FROM nginx
 ---> 7e4d58f0e5f3
Step 2/2 : COPY ./webserver/index.html /usr/share/nginx/html/index.html
 ---> Using cache
 ---> 81c075630db6
Successfully built 81c075630db6
Successfully tagged nginx:v1.0
Creating web-nginx ... done

[root@docker01 compose]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
79c8333d4ee4        nginx:v1.0          "/docker-entrypoint.…"   23 seconds ago      Up 22 seconds       0.0.0.0:32768->80/tcp   web-nginx

[root@docker01 compose]# curl 127.0.0.1:32768
hello

docker-compose管理命令介绍

1、compose具有管理应用程序整个生命周期的命令

启动,停止和重建服务
查看正在运行的服务的状态
流式传输运行服务的日志输出
在服务上运行一次性命令

2、常用命令

帮助信息

[root@docker compose]# docker-compose --help

创建或重新创建服务使用的镜像

[root@docker compose]# docker-compose build

通过容器发送SIGKILL信号强行停止服务

[root@docker compose]# docker-compose kill nginx

PS:kill 服务名称,默认所有服务

显示service的日志信息

[root@docker compose]# docker-compose logs

暂停(挂载)和恢复服务

[root@docker compose]# docker-compose pause
  • docker-compose pause #暂停服务
  • docker-compose unpause #恢复被暂停的服务

查看服务中的端口与物理机的映射关系

[root@docker compose]# docker-compose port nginx 80

例如:docker-compose port nginx_web 80 #查看服务中80端口映射到物理机上的哪个端口

显示当前项目下的容器

[root@docker compose]# docker-compose ps

注意,此命令与docker ps不同作用,此命令会显示停止后的容器(状态为 Exited),只针对某个项目。

用于拉取服务依赖的镜像

[root@docker compose]# docker-compose pull

用于重启某个服务中的所有容器

[root@docker compose]# docker-compose restart

例如:docker-compose restart service_name #只有正在运行的服务可以使用重启命令,停止的服务是不可以重启

删除停止的服务(服务里的容器)

[root@docker compose]# docker-compose rm
  • -f #强制删除
  • -v #删除与容器相关的卷(volumes)

用于在服务中运行一个一次性的命令

[root@docker compose]# docker-compose run nginx ls /

这个命令会新建一个容器,它的配置和srvice的配置相同。但两者之间还是有两点不同之处
1、run指定的命令会直接覆盖掉service配置中指定的命令
2、run命令启动的容器不会创建在service配置中指定的端口,如果需要指定使用–service-ports指定

启动/停止运行某个服务的所有容器

[root@docker compose]# docker-compose start/stop
  • docker-compose start 启动运行某个服务的所有容器
  • docker-compose stop 停止运行某个服务的所有容器

指定某个服务启动的容器个数

[root@docker compose]# docker-compose scale nginx=2
  • -f #用于指定配置文件
  • -p #用于指定项目名称

PS:如果需要运行多个容器,那么容器名称就不要给了,会随机生成,还有注意端口映射问题,不要冲突(docker-compose port 字段支持仅写一个容器暴露的端口)。
备注:docker-compose 运行时是需要指定service名称,可以同时指定多个,也可以不指定。不指定时默认就是对配置文件中所有的service执行命令。

搭建wordpress的博客

[root@docker01 compose]# mkdir wp
[root@docker01 compose]# cd wp/
[root@docker01 wp]# vim docker-compose.yaml
version: "3.1"
services:
  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
        WORDPRESS_DB_HOST: db
        WORDPRESS_DB_USER: wordpress
        WORDPRESS_DB_PASSWORD: 123.com
        WORDPRESS_DB_NAME: wordpress
  db:
    image: mysql:5.7
    restart: always
    environment:
        MYSQL_DATABASE: wordpress
        MYSQL_USER: wordpress
        MYSQL_PASSWORD: 123.com
        MYSQL_ROOT_PASSWORD: 123.com


[root@docker01 wp]# docker-compose up -d

[root@docker01 wp]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
c348b7d23d2a        mysql:5.7           "docker-entrypoint.s…"   29 seconds ago      Up 27 seconds       3306/tcp, 33060/tcp     wp_db_1
e10c0068386a        wordpress           "docker-entrypoint.s…"   29 seconds ago      Up 27 seconds       0.0.0.0:8080->80/tcp    wp_wordpress_1

注册登录wordpress:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
切换默认中文
在这里插入图片描述

[root@docker01 wp]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
c348b7d23d2a        mysql:5.7           "docker-entrypoint.s…"   29 seconds ago      Up 27 seconds       3306/tcp, 33060/tcp     wp_db_1
e10c0068386a        wordpress           "docker-entrypoint.s…"   29 seconds ago      Up 27 seconds       0.0.0.0:8080->80/tcp    wp_wordpress_1

[root@docker01 wp]# docker exec -it wp_db_1 bash
root@c348b7d23d2a:/# mysql -uroot -p123.com -h127.0.0.1
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+
5 rows in set (0.00 sec)

mysql> use wordpress;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-----------------------+
| Tables_in_wordpress   |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_termmeta           |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
12 rows in set (0.00 sec)

本文链接: http://www.dtmao.cc/news_show_250059.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?