欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker快速入门指南(二)-镜像安装

程序员文章站 2022-06-03 11:37:44
...

4. Docker应用部署

4.1 以MySQL部署为例

参考:https://www.runoob.com/docker/docker-install-mysql.html

4.1.1. 拉取镜像

#从仓库拉取MYSQL 5.7镜像(具体版本可先进行search查询)
docker pull centos/mysql-57-centos7

4.1.2 创建容器

#创建mysql容器 -p: 设置端口映射 -e: 设置环境变量 MYSQL_ROOT_PASSWORD 是root用户的【远程】登陆密码
docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql57 (5eab2c29156912dd2c719b0ea56ecac051292d19aca531fe970f8bcd77ad8b51):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3305 -j DNAT --to-destination 172.17.0.4:3305 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)).
 # 若报此异常,请检查防火墙,保证防火墙为开启状态
 #centos7命令开启防火墙,各版本略有差异
 # systemctl start firewalld  

4.1.3 操作容器MySQL

#进入容器
docker exec -it mysql5.7 /bin/bash
#登录mysql 【这里登录没有密码】
mysql -u root -p 

4.1.4 远程登录mysql

Docker快速入门指南(二)-镜像安装

使用Navicat在windows中进行远程登录在docker容器中的mysql。

注意:因为容器创建时已使用端口映射,这里我们使用的是宿主机的ip的映射的端口
访问时,如果连接不上,请关闭容器所在主机的防火墙,或开放对应的端口

5. Docker Compose

5.1 Compose简介

5.1.1 概念

Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。它是一个定义和运行多容器的
docker应用工具。使用compose,你能通过YMAL文件配置你自己的服务,然后通过一个命令,你能使用配置文件创建和运行所有的服务。

5.1.2 组成

Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。

  • 工程(project):Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例。

  • 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。每个服务都有自己的名
    字、使用的镜像、挂载的数据卷、所属的网络、依赖哪些其他服务等等,即以容器为粒度,用户需要Compose所完成的任务。

  • 项目(project):由一组关联的应用容器组成的一个完成业务单元,在docker-compose.yml中定义。即是
    Compose的一个配置文件可以解析为一个项目,Compose通过分析指定配置文件,得出配置文件所需完成的所有容器管理与部署操作。

Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如:要部署一个Web项目,除了Web服务容器,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

5.1.3 Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。

  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。

  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

5.2 安装与卸载

Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我们以编译好的二进制包方式安装在Linux系统中。

5.2.1. 安装

curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose -version

5.2.2. 卸载

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

5.3 Compose常用命令参考

Compose命令的基本的使用格式为:

docker-compose [-f 参数...] [options] 1 [COMMAND] [ARGS...]

命令选项如下:

-f,–file FILE指定使用的Compose模板文件,默认为docker-compose.yml,可以多次指定。
-p,–project-name NAME指定项目名称,默认将使用所在目录名称作为项目名。
-x-network-driver 使用Docker的可拔插网络后端特性(需要Docker 1.9 及以后版本)
-x-network-driver DRIVER指定网络后端的驱动,默认为bridge(需要Docker 1.9 及以后版本)
-verbose输出更多调试信息
-v,–version打印版本并退出
常用命令
1) up
#创建并启动容器 【在工程目录下执行】
docker-compose up -d
2)stop
#停止服务容器,不会删除
docker-compose stop [options] [SERVICE…]
3)down
#停止并移除容器、网络、镜像和数据卷
docker-compose down [options]

更多参考:https://cloud.tencent.com/developer/article/1494959

5.4 Compose模版文件

模板文件是使用Compose的核心,涉及的指令关键字也比较多,大部分指令与docker run 相关参数的含义都是类
似的。默认的模板文件名称为docker-compose.yml,格式为YAML格式。

#版本,docker-compose.yml的语法版本,一般使用3.1之后
version: "3.7"
services:
  #服务  这里的web可自定义
  web:
  	#镜像信息
    images: nginx
    #容器名  这里的web可自定义
    container_name: web
    ports:
      #端口映射
      - "8080:80"
    #设置环境变量
    environment: MYSQL_ROOT_PASSWORD: "root"
    # 目录挂载
    volumes:
      - /usr/local/abc:/usr/local/cba
    #服务启动后执行的命令
    command: /bin/bash
#volumes:

#networks:
# 若有设置networks  可使用docker network ls命令查看

Docker Compose的模板文件主要分为3个区域,如下:
services
服务,在它下面可以定义应用需要的一些服务,每个服务都有自己的名字、使用的镜像、挂载的数据卷、所属的网络、依赖哪些其他服务等等。
volumes
数据卷,在它下面可以定义的数据卷(名字等等),然后挂载到不同的服务下去使用。
networks
应用的网络,在它下面可以定义应用的名字、使用的网络类型等等。