Linux(Ubuntu):搭建Docker

1. Docker Compose 简介及安装

Docker Compose 是一种用于通过使用单个命令创建和启动 Docker 应用程序的工具。我们可以使用它来配置应用程序的服务。

它是开发,测试和升级环境的利器。

它提供以下命令来管理应用程序的整个生命周期:

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

要实现 docker compose安装,需要包括以下步骤:

以下是在 Ubuntu 系统中安装 Docker Compose 的说明:

curl -L https://github.com/docker/compose/releases/到这个网址直接下载即可,但是我已经提前下载好了拖进来安装即可

  • 将应用程序环境变量放在 Docker 文件中以公开访问。

  • 使用命令查看环境变量: cat /etc/environment

  • 具体给你显示的环境变量为:

     

  • 也就是说我们把下载好的docker compose放到任意一个环境变量目录下即可使用

  • 使用 mv docker-compose /usr/bin  把docker compose移动到该目录下即可

     

  • 这个时候我们可以看到该权限为和组权限为suchuanqi 可读可写,但不能执行,而且是都不能执行,所以要对权限进行修改,使用命令 chown -R root:root docker-compose   进行修改,具体如下所示:

     

  •  然后设置可执行权限,具体命令如下所示: chmod +x docker-compose   即变为可执行文件

      

  • 然后使用命令 docker-compose version 进行版本的查看,并验证是否能够执行
  • 注意我们真正的操作Docker是基于Docker Compose来进行操作的

2. Docker Compose 使用

创建一个 docker-compose.yml 配置文件:

root@localhost:/usr/local/docker/tomcat# vi docker-compose.yml  在这里创建,docker-compose.yml文件,并编写下面的内容

注意:在编写配置文件是不能够是tab键只能使用空格键进行缩进

1version: '3' 2 3services: 4 5 webapp: 6 7 restart: always 8 9 image: training/webapp 10 11 container_name: webapp 12 13 ports: 14 15 - 5000:5000

下面是我电脑里面的配置

1version: '3' 制定服务器解析版本 2 3services: 要启动的服务器列表 4 5 tomcat: 服务器的名称为tomcat,随便起不可以重复 6 7 restart: always 这里表示只要docker-compose启动那么tomcat也总是跟着启动 8 9 image: tomcat 这里表示镜像名称为tomcat,如果没有会自动的去docker远程仓库区拉去镜像 10 11 container_name: tomcat 随便启,但是不能够出重复的 12 13 ports: 映射端口号 14 15 - "8080:8080"

参数说明:

  • version:指定脚本语法解释器版本
  • services:要启动的服务列表
  • webapp:服务名称,可以随便起名,不重复即可
  • restart:启动方式,这里的 always 表示总是启动,即使服务器重启了也会立即启动服务
  • image:镜像的名称,默认从 Docker Hub 下载
  • container_name:容器名称,可以随便起名,不重复即可
  • ports:端口映射列列表,左边为宿主机端口,右边为容器端口

前台运行:

1suchuanqi@UbuntuBase:/usr/local/docker/python$ docker-compose up 前台启命令docker-compose up, 但是这种操作并不好会占用主线程,阻止其他线程操作 2 3Creating network "python_default" with the default driver 4 5Creating webapp ... 6 7Creating webapp ... done 8 9Attaching to webapp 10 11webapp | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

后台运行:

1suchuanqi@UbuntuBase:/usr/local/docker/python$ docker-compose up -d 这里是后台启动docker-compose,不会占用当前主线程 2 3Creating webapp ... 4 5Creating webapp ... done 6 7lusifer@UbuntuBase:/usr/local/docker/python$

运行效果:

 

通过docker-compose启动了tomcat我们可以通过:

docker-compose logs -f tomcat  进行对tomcat日志的打印工作,可以看到日志

3. Docker Compose 命令

前台运行

docker-compose up

后台运行

docker-compose up -d

启动

docker-compose start

停止

docker-compose stop     注意停止的时候必须在有docker-compose.yml的配置文件中进行使用

停止并移除容器

docker-compose down      这里的删除是在docker ps -a 删除tomcat容器的,因为我的tomcat在docker-compose里面进行设置

4. Docker Compose 实例教程:

Docker Compose 运行 Tomcat

docker-compose.yml 配置文件:

1version: '3' 2services: 3 tomcat: 4 restart: always 5 image: tomcat 6 container_name: tomcat 7 ports: 8 - 8080:8080 9 volumes: 10 - /usr/local/docker/tomcat/webapps/:/usr/local/tomcat/webapps/ 11 environment: 12 TZ: Asia/Shanghai 13 14开启

Docker Compose 运行 mysql

创建``docker-compose.yml 配置文件:使用vi docker-compose.yml``创建该文件并进行编译操作

1version: '3' 2services: 3 mysql: 4 restart: always 5 image: mysql:5.7 6 container_name: mysql 7 ports: 8 - 3306:3306 9 environment: 10 TZ: Asia/Shanghai 11 MYSQL_ROOT_PASSWORD: 123456 12 command: 13 --character-set-server=utf8mb4 这里是设置字符及UTF-8 14 --collation-server=utf8mb4_general_ci 15 --explicit_defaults_for_timestamp=true 16 --lower_case_table_names=1 这里是忽略大小写 17 --max_allowed_packet=128M 18 --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO" 19 volumes: 20 - mysql-data:/var/lib/mysql 21 22volumes: 23 mysql-data:

我们可以通过

docker-compose logs -f mysql  进行日志的查看

在关闭任何关于docker-compose的先关服务时必须要进入到有docker.compose.yml的文件夹使用:

docker-compose down  进行关闭,不能使用类似于docker stop xxxx等命名,因为这样关闭的话就没有使用docker-compose进行托管了

配置继承环境下的docker-compose   也就是把mysql   tomcat结合在一起进行配置,具体如下所示, 然后部署一个项目:

 

我们可以通过:

/var/lib/docker/volumes  来进行访问到mysql存放数据文件的的路径
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Linux(Ubuntu):搭建Docker - HelloWorld