累成一条狗

Linux(Centos7)安装、使用 Docker

一、Linux(CentOS7) 上安装 docker

1、docker 是什么?

  docker 是一种 虚拟化容器技术,一个开源的应用容器引擎。
  基于镜像,可以秒级启动各种容器(运行一次镜像就生成一个容器,类似于 Java 中 类与对象)。
  各容器间相互隔离,且每个容器均是一个完整的运行环境。
  可以很方便的让开发者打包应用以及相关依赖包到一个可移植的轻量级的容器中,并发布到 Linux 上。
参考地址:
  https://www.cnblogs.com/l-y-h/p/11337051.html
  https://docs.docker.com/
  https://www.runoob.com/docker/docker-tutorial.html

 

2、安装

(1)官方文档地址:
  https://docs.docker.com/

(2)找到官方文档位置,根据文档一步步执行即可。
  Step1:进入官网,选择 Get Docker,并选择 Docker for Linux。

 

 

 

Step2:选择 相应的 Linux 系统,此处我选择 CentOS.

 

 

 

(3)安装流程
  Step1:卸载旧版本。
    查看当前系统是否有 docker 旧版本存在,存在则删除旧版本。

【方式一:(先查找是否存在,再删除)】
    rpm -qa | grep docker
    
【方式二:(直接删除,不管是不是存在,root 用户不需要输入 sudo)】
    sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

 

 

 

  Step2:安装 Docker 仓库。
  使用 Docker 仓库进行安装,用来简化安装、升级等操作。也可采用 RPM 方式手动安装。
  所需软件包:
    yum-config-manager 需要 yum-util。
    device mapper 存储驱动程序 需要 device-mapper-persistent-data、 lvm2。

【安装所需软件包:(yum-utils、device-mapper-persistent-data、lvm2)】
    sudo yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
      
【设置稳定的仓库(用于下载 docker):】
    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo

 

 

 

  Step3:安装社区版的 Docker(Docker Engine-Community)
    安装最新版本的 Docker Engine-Community 和 containerd.

【安装最新的 Docker:】
    sudo yum install docker-ce docker-ce-cli containerd.io
    
【查看当前版本,若有版本数据,则安装成功】
    docker -v

 

 

 

  Step4:启动 docker,并检查是否成功启动。

【启动、关闭 docker:(方式一)】
    sudo systemctl start docker
    sudo systemctl stop docker
    
【启动、关闭 docker:(方式二)】
    sudo service docker start
    sudo service docker stop
    
【检查是否启动成功:(方式一,查看本地镜像)】
    sudo docker images
    
【检查是否启动成功:(方式二,运行 hello-world 镜像)】
    sudo docker run hello-world

 

 

 

  Step5:设置开机自启动。
    每次开机都得重新输入命令用于启动 docker,很麻烦,所以一般设置开机自启动。

【查看是否开机自启动:】
    systemctl list-unit-files | grep enable
    或者
    systemctl list-unit-files | grep docker

【开机自启动:】
    sudo systemctl enable docker    

 

 

 

(4)配置镜像加速(此处使用 阿里云镜像)
    默认下载地址比较慢(dockerhub),使用镜像加速可以提高软件下载速度。
  Step1:登陆 阿里云官网,然后点击 控制台。

 

 

 

  Step2:进入控制台,点击列表框,选择产品服务中的 容器镜像服务。

 

 

 

  Step3:进入 容器镜像服务后,选择镜像加速器,按照步骤操作即可。

 

 

 

  Step4:配置镜像加速器。

【加速器地址:】
    https://y5krm9wr.mirror.aliyuncs.com

【修改配置文件:】
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://y5krm9wr.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

 

 

 

二、常用命令 -- 镜像仓库管理相关命令

  用于从 远程镜像仓库下载镜像到本地。

1、docker pull(从镜像仓库中拉取指定的镜像)

【格式:】
    docker pull [选项] 镜像名[:版本号]
选项:
    -a      拉取所有镜像
注:
    :版本号 可以不存在,不存在时,获取最新的镜像。

【举例:】
    docker pull mysql:8.0.19

 

 

 

2、docker search(从 Dcoker Hub 中查找镜像)

【格式:】
    docker search [选项] 镜像名
选项:
    -s 指定数       显示 stars 不小于 指定数的镜像。

【举例:】
    docker search -s 20 mysql

 

 

 

三、常用命令 -- 本地镜像管理命令

  用于管理本地的镜像。

1、docker images(列出本地镜像列表)

【格式:】
    docker images [选项] [镜像名]
选项:
    -a          列出所有镜像
    -q          只显示镜像 ID(IMAGE ID)
    --no-trunc  显示完整的镜像信息
    --digests   显示镜像摘要信息

【举例:】 
    [root@localhost ~]# docker images mysql
    [root@localhost ~]# docker images --no-trunc

 

 

 

2、docker rmi(删除镜像)

【格式:】
    docker rmi [选项] 镜像名
选项:
    -f    强制删除
    
【举例:】
    docker rmi tomcat

 

 

 

3、docker tag(标记本地镜像,将其归入某个仓库)

  相当于一个镜像的不同名字。

【格式:】
    docker tag 原镜像名 新镜像名
    
【举例:】
    [root@localhost ~]# docker tag tomcat:latest mytomcat 

 

4、删除 tag 为 none 的 docker 镜像

【命令:】
    docker rmi $(docker images -f "dangling=true" -q)

 

四、常用命令 -- 管理容器的生命周期命令

  运行一个镜像,就可以生成一个 容器,容器内部是一个完整的运行环境。
  一个镜像可以生成多个容器,类似于 Java 中 类 与 对象的关系。
  需要对各个容器进行管理。

1、docker run(创建一个容器并运行)

【格式:】
    docker run [选项] 镜像文件名
选项:
    -d              指在后台运行容器,返回容器 ID。
    -i              以交互模式运行容器,通常与 -t 连用(即 -it)。
    -t              为容器分配一个伪输入终端。
    -P              随机端口映射,将容器内部端口随机映射到主机的端口
    -p              指定端口映射,将容器内部端口映射到主机指定端口,格式:-p 主机端口:容器端口
    --name          指定启动容器的名字,格式: --name 容器名
    -e             指定环境变量,格式:-e 环境变量名=环境变量值
    -v             文件挂载,将容器内部文件与主机文件绑定,格式 -v 主机文件路径:容器文件路径
    
【举例:】
    docker run --name mysqlDemo -d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:8.0.19
上面命令为:
    docker run mysql:8.0.19            执行 mysql:8.0.19 版本的镜像,生成一个容器
    --name mysqlDemo                   容器命名为 mysqlDemo
    -d                                 后台运行
    -e MYSQL_ROOT_PASSWORD=123456      设置登陆密码为 123456,登陆用户为 root
    -p 3306:3306                       将容器内部 3306 端口映射到 主机的 3306 端口,即通过 主机的 3306 可以访问容器的 3306 端口

 

 

 

2、docker start/stop/restart(启动、关闭、重启容器)

【docker start 格式:】
    docker start 容器名
    
【docker stop 格式:】
    docker stop 容器名
    
【docker restart 格式:】
    docker restart 容器名
    
【举例:】
    [root@localhost ~]# docker stop mysql

 

 

 

3、docker kill(杀掉一个正在运行的容器)

【格式:】
    docker kill [选项] 容器名
选项:
    -s     向容器发送一个信号

【举例:】
    [root@localhost ~]# docker kill mysqlDemo

 

 

 

4、docker rm(删除容器)

【格式:】
    docker rm [选项] 容器名
选项:  
    -f          强制删除一个运行中的容器
    -v          删除与容器相关联的 卷
    
【举例:】
     [root@localhost ~]# docker rm -f mysqlDemo 

 

 

 

5、docker create(创建一个容器,但不启动容器)

【格式:】
    docker create [选项] 镜像名
选项基本与 docker run 一样(没有 -d)。

【举例:】
    [root@localhost ~]# docker create --name mysqlDemo1  -e MYSQL_ROOT_PASSWORD=123456 -p 3312:3306 mysql:8.0.19

 

 

 

6、docker exec(在运行的容器中执行命令)

【格式:】
    docker exec [选项] 容器名 命令
选项:
    -d              以分离模式在后台运行。
    -i              以交互模式运行容器,通常与 -t 连用(即 -it)。
    -t              为容器分配一个伪输入终端。

【举例:】
    [root@localhost ~]# docker exec -it mysql /bin/bash

 

 

 

五、常用命令 -- 查看容器信息命令

1、docker ps(查看当前容器列表)

【格式:】
    docker ps [选项]
选项:
    -a           显示所有容器,包括未运行的容器
    -l           显示最近创建的容器
    -n 指定数     显示最近创建的 指定数 的容器。比如: -n 7,显示最近创建的 7 个容器
    -q           只显示容器 ID
    
【举例:】
    [root@localhost ~]# docker ps -an 10

 

 

 

2、docker top(查看容器中运行的进程信息)

【格式:】
    docker top 容器名

【举例:】
    [root@localhost ~]# docker top mysql

 

 

 

3、docker logs(获取容器的日志)

【格式:】
    docker logs [选项] 容器名
选项:
    -f          跟踪日志输出
    --tail      显示最新的 n 条日志,格式: --tail=指定数
    -t          显示时间戳

【举例:】
    [root@localhost ~]# docker logs --tail=10 mysql

 

 

 

4、docker port(查看映射端口)

【格式:】
    docker port 容器名
    
【举例:】
    docker port mysql

 

 

 

5、docker info(显示 docker 系统信息)

【格式:】
    docker info

【举例:】
    [root@localhost ~]# docker info

 

 

 

6、docker version、docker -v(显示 docker 版本信息)

【格式:】
    docker version
    docker -v

【举例:】
    [root@localhost ~]# docker version
    [root@localhost ~]# docker -v

 

 

 

六、Docker 上安装 mysql 8.0.19 镜像

1、查找 想要安装的 mysql 版本

【方式一:官网搜索】
    https://hub.docker.com/
    https://hub.docker.com/_/mysql?tab=tags
    
【方式二:(通过命令行查询)】
    docker search mysql

 

 

 

 

 

 

2、下载镜像

  通过官网地址,可以查看到 想要下载的版本,使用 pull 命令拉取镜像即可.
  此处我选择 8.0.19 版本的 mysql。
  如果没有 设置版本,则会自动下载最新的版本(即 docker pull mysql 会下载最新的版本 latest)。

【命令行下载:】
    docker pull mysql:8.0.19
    
【查看镜像是否成功下载:(即查看本地镜像)】
    docker images

 

 

 

3、运行容器

【运行容器:】
    docker run -p 3306:3306 --name mysql \
    -v /usr/mydata/mysql/log:/var/log/mysql \
    -v /usr/mydata/mysql/data:/var/lib/mysql \
    -v /usr/mydata/mysql/conf:/etc/mysql/conf.d \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d mysql:8.0.19
    
分析:
    docker run -d mysql:8.0.19             以后台的方式运行 mysql 8.0.19 版本的镜像,生成一个容器。
    --name mysql                           容器名为 mysql
    -e MYSQL_ROOT_PASSWORD=123456          设置登陆密码为 123456,登陆用户为 root
    -p 3306:3306                           将容器内部 3306 端口映射到 主机的 3306 端口,即通过 主机的 3306 可以访问容器的 3306 端口
    -v /usr/mydata/mysql/log:/var/log/mysql    将容器的 日志文件夹 挂载到 主机的相应位置
    -v /usr/mydata/mysql/data:/var/lib/mysql   将容器的 数据文件夹 挂载到 主机的相应位置
    -v /usr/mydata/mysql/conf:/etc/mysql/conf.d   将容器的 自定义配置文件夹 挂载到主机的相应位置
    
【查看容器是否启动:】
    docker ps -a

 

 

 

 

 

 

4、使用

【本机使用:(使用交互式方式进入)】
    docker exec -it mysql /bin/bash
    
【外部访问:(访问主机的 3306 端口即可)】
    ifconfig 可以查看 主机的 ip 地址(比如连接 :192.168.217.129:3306

 

 

 

 

 

 

5、修改配置文件(比如修改默认字符集)

  在启动过程中,已经将 /etc/mysql/conf.d 挂载到了 /usr/mydata/mysql/conf 上,所以在 /usr/mydata/mysql/conf 目录下 新建一个 my.cnf 文件,并添加配置信息,即可修改 mysql 容器的配置。

【查看 当前 mysql 的字符集:】
    show variables like "%character%";

初始字符集。

 

 

创建 /usr/mydata/mysql/conf/my.cnf ,并重启容器。

 

 

【在 /usr/mydata/mysql/conf 下新建一个 my.cnf 文件】
    [client]
    # 设置字符集为 utf-8
    default-character-set=utf8
    
    [mysql]
    # 设置字符集为 utf-8
    default-character-set=utf8
    
    [mysqld]
    # 设置登陆用户
    # user=root
    # 设置字符集编码为 utf-8
    character-set-server=utf8

【重启容器】
    docker restart mysql

 

 

 

七、Docker 安装 Redis

1、查找需要安装的镜像

【方式一:官网搜索】
    https://hub.docker.com/
    https://hub.docker.com/_/redis?tab=tags
    
【方式二:(通过命令行查询)】
    docker search redis

 

 

 

2、下载镜像

【下载最新的镜像:】
    docker pull redis

 

 

 

3、运行容器

【运行容器:】
使用 docker run -v 挂载文件时,若想挂载文件,需要先在主机上创建文件,否则会当成目录挂载。
    mkdir -p /usr/mydata/redis/conf
    touch /usr/mydata/redis/conf/redis.conf

需要使用 redis-server /etc/redis/redis.conf 指定配置文件启动 redis。
    docker run -p 6379:6379 --name redis \
     -v /usr/mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
     -v /usr/mydata/redis/conf/data:/data \
     -d redis redis-server /etc/redis/redis.conf 
     
分析:
    docker run -d redis   运行 redis 最新镜像,并生成一个容器
    --name redis          容器名为 redis
    -p 6379:6379          指定端口映射,容器的 6379 端口映射到 主机的 6379 端口,
    -v /usr/mydata/redis/conf/redis.conf:/etc/redis/redis.conf   挂载 redis 的配置文件到主机的指定位置
    -v /usr/mydata/redis/conf/data:/data   挂载 redis 的数据到主机的指定位置
    redis-server /etc/redis/redis.conf    表示根据 /etc/redis/redis.conf 配置文件启动。

 

 

 

4、使用

【使用交互式方式进入 redis 容器】
    docker exec -it redis /bin/bash
    
【使用交互式方式 打开 redis-cli】
    docker exec -it redis redis-cli

 

 

 

5、修改配置文件(比如数据持久化)

  使用默认配置文件启动 redis 时,数据不会持久化(即 appendonly = no)。
  当 redis 重启后,数据就会丢失。

 

 

修改配置文件,添加数据持久化(即 appendonly = yes)。

【编辑 /usr/mydata/redis/conf/redis.conf】
    vim /usr/mydata/redis/conf/redis.conf

    appendonly yes

 

八、Docker 安装 Nginx

参考地址:

  https://www.cnblogs.com/l-y-h/p/12844824.html#_label3

 

九、Docker 数据卷、自定义镜像(DockerFile)、Docker-Compose

1、数据卷

(1)什么是 Docker 数据卷?

【数据卷:】
    数据卷本质就是磁盘中的某个目录,其可以与 Docker 容器中某个目录相关联。
    可以 理解成 将宿主机的一个目录 映射 到 容器的某个目录中。
    
【为什么使用 数据卷:】
    Docker 通过镜像启动一个容器后,容器会产生一些数据,如果不对这些数据进行处理,当容器被删除后,数据将会丢失。
    可以将这些数据 映射 到 数据卷中,这样就可以保存在 磁盘。
    再次启动容器后,可以挂载到 数据卷,从而获取数据(实现数据持久化、共享等)。
    且 操作 数据卷中的数据,容器数据也会随之变化,大大提高修改、查看数据的效率(不用进入容器内部)。 

 

(2)数据卷常用命令

【创建数据卷:】
    docker volume create 数据卷名称
注:
    创建数据卷后,数据默认会存放在 /var/lib/docker/volumes/数据卷名称/_data 目录下。
比如:
    docker volume create testVolume 
    会创建一个 /var/lib/docker/volumes/testVolume/_data/ 目录。
    
【查看数据卷详细信息:】
    docker volume inspect 数据卷名称
比如:
    docker volume inspect testVolume
    
【查看全部数据卷:】
    docker volume ls

【输出数据卷:】
    docker volume rm 数据卷名称
比如:
    docker volume rm testVolume

 

 

 

(3)数据卷 映射到 容器目录中

【格式:】
    -v 数据卷:容器内部指定目录
注:
    将数据卷 映射到 容器指定目录

【方式一:(不推荐)】
    docker run 镜像ID(镜像名)-v 数据卷名称:容器内部指定目录
注:
    当 数据卷不存在时,Docker 会自动创建,且将容器内部自带文件存放在 默认路径中。
比如:
    docker run -d mysql:8.0.19 -v mysqlLog:/var/log/mysql

【方式二:(推荐)】
    docker run 镜像ID(镜像名)-v 磁盘路径:容器内部指定目录 
注:
    直接指定磁盘路径作为数据卷时,路径下是空的。
比如:
    docker run -d mysql:8.0.19 v /usr/mydata/mysql/log:/var/log/mysql

 

(4)补充命令

docker stop $(docker ps)                     查询所有容器并停止。

【cp 从主机 复制文件到 容器中】
    docker cp 磁盘目录(文件) 容器名:容器目录(文件)     
注:
    将文件从磁盘目录 复制到 容器目录中。
比如:
    docker cp test2.txt mysql2:/var/log/mysql    
    将当前目录下 test2.txt 复制到 mysql2 容器的 /var/log/mysql 目录下。

 

2、自定义镜像(Dockerfile)

(1)说明
  Docker 仓库中存在各种各样的镜像,每次下载同一个镜像后,还得重新配置一遍,非常麻烦。
  可以通过 Dockerfile 文件自定义镜像,按照指令 构建镜像。

(2)Dockerfile 常用指令

【FROM(from)】
    指定当前镜像 是基于 哪个镜像创建的。
格式:
    from 镜像
比如:
    from mysql:8.0.19           此镜像基于 mysql:8.0.19 构建
    
【RUN(run)】
    容器构建(docker build)时需要运行的命令。
格式:
    run 命令一 && 命令二 
    run ["文件", "参数一", "参数二"]
比如:
    run echo '开始构建镜像 ========== ' &&  echo ' ========== 开始构建镜像'

【CMD(cmd)】
    指定容器启动(docker run)时运行的命令。
    若存在多个 CMD,则以最后一个 CMD 为主。
    可以被 docker run 传入的参数覆盖。
格式:
    cmd 命令
    cmd ["命令", "参数1", "参数2"]    
    cmd ["参数1", "参数2"]   此写法作为 ENTRYPOINT 的默认参数
比如:
    cmd echo '开始启动容器 ========== ' &&  echo ' ========== 开始启动容器'
    
【ENTRYPOINT(entrypoint)】
    类似于 cmd,但是其不会被 docker run 传入的参数覆盖(但是若使用了 --entrypoint 的参数可以覆盖)。
格式:
    entrypoint 命令
    entrypoint ["命令", "参数1", "参数2"]
比如:
    entrypoint ["echo", "hello"]
    cmd ["world"]            
注:
    此时,若 docker run 不传入任何参数时,则 cmd 将作为 entrypoint 参数,
    即 entrypoint ["echo", "hello", "world"]
                
【COPY(copy)】
    将 指定文件或目录 复制到 镜像中的指定位置。
格式:
    copy src desc
比如:
    copy test.txt /root/test        将当前目录下 test.txt 复制到 容器 /root/test 目录下
    
【ADD(add)】
    将 指定文件或目录 复制到 镜像中的指定位置。
    会自动处理 URL 以及 解压 tar 文件。
格式:
    add src desc
比如:
    add test2.txt /root/test        将当前目录下 test.txt 复制到 容器 /root/test 目录下
       
【MAINTAINER(maintainer)】
    设置维护者信息(姓名、邮箱等)
格式:
    maintainer 数据1 数据2
比如:
    maintainer lyh lyh@163.com   设置维护者 姓名、邮箱
    
【EXPOSE(expose)】
    设置当前容器对外暴露的端口号。
格式:
    expose port1 port2
比如:
    expose 8080          容器对外暴露端口号为 8080
    
【ENV(env)】
    设置环境变量。
格式:
    env key value
比如:
    env map helloworld     通过 $map 可以获取环境变量值为 helloworld
    
【WORKDIR(workdir)】
    指定镜像默认的工作目录。
格式:
    workdir 目录
比如:
    workdir /root/work

【VOLUME(volume)】
    定义默认数据卷,若启动容器时忘记通过 -v 进行数据卷映射到 容器目录,将会自动挂载到 默认数据卷。
    持久书数据,避免数据丢失。
格式:
    volume 路径
    volume ["路径1", "路径2"]

 

(3)制作镜像
  将编写好的 Dockerfile 文件以及需要复制的文件 制作成镜像。

【docker build】
    docker build -t 镜像名称 .
或者
    docker build -t 镜像名称[:tag] .
注:
    命令末尾的点 . 指的是 上下文路径(为 Dockerfile 文件所在位置)。
    docker 构建镜像时 会 将上下文路径中所有的文件 进行打包(所以此路径下不要放置无关文件)。

 

(4)Dockerfile 编写举例 以及 使用 docker build 自定义镜像。
  一般都是新建一个空目录 来进行 自定义镜像操作,避免打包不必要的文件。
  创建一个名为 Dockerfile 的文件(文件名不一致将导致 docker build 出错)。

【Dockerfile:】
# 设置基础镜像
from            mysql:8.0.19

# 设置维护者信息                   
maintainer      lyh lyh@163.com

# docker build 时会触发,
run echo '开始构建镜像 ========== ' &&  echo ' ========== 开始构建镜像'

# docker run 时会触发
entrypoint ["echo", "启动镜像"]
cmd ["hello world"]

# 将当前目录下的 test.txt 复制到 /root/test 目录下
copy test.txt /root/test

# 将当前目录下的 test2.txt 复制到 /root/test 目录下
add test2.txt /root/test

# 对外暴露端口为 8080
expose 8080

# 设置环境变量
env map helloworld
run echo $map

# 指定容器默认工作目录
workdir /root/work

# 指定默认数据卷路径
volume /var/lib/docker/volumes/defaultVolume

【构建自定义镜像:】
    docker build -t customize_mysql .
    
【查看当前自定义镜像信息:】
    docker inspect customize_mysql

 

 

 

 

 

 

 

 

 

 

 

 

3、Docker-Compose 管理容器

(1)说明
  使用 docker run 启动一个容器时,需要配置上大量参数,当配置集群 或者 需要启动多个容器时 时,若一个一个去启动,那工作量将变得很大,且容易出错。
  使用 Docker-Compose 可以进行容器的管理。其通过 docker-compose.yml 文件去维护容器参数信息。通过该 yml 文件可以很方便的 管理、启动 容器。

(2)下载、安装

【官方地址:】
    github 地址: https://github.com/docker/compose
    文档地址:https://docs.docker.com/compose/
    安装文档地址:https://docs.docker.com/compose/install/

【下载:(此处为 1.27.4 版本,若需要其他版本,替换即可)】
    curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
注:
    此方式下载速度较慢,可以去 github 上找到对应版本 下载到本地后 再发送到 服务器上。
            
【给下载后的 docker-compose 添加可执行权限】
    chmod +x /usr/local/bin/docker-compose

【查看 docker 以及 docker-compose 版本号:】
    docker -v
    docker-compose -v
    
【查看环境变量:(非必须操作)】
    echo $PATH     可以查看当前环境变量
    which 指令      比如:which docker 可以查看 docker 指令所在目录
注:
    若 docker-compose 不在环境变量中,可以进行配置(方便在任意目录执行 docker-compose)。
    打开 /etc/profile 文件,在 PATH 中追加指令所在目录即可。
比如:
    vim /etc/profile
    export PATH="/usr/local/bin/:$PATH" 
    source /etc/profile

 

 

 

 

 

 

(3)docker-compose 命令
  执行 docker-compose 命令时,默认会在当前目录下找 docker-compose.yml 文件。

【基于 docker-compose.yml 文件启动容器:】
    docker-compose up -d
注:
    -d 表示后台执行

【关闭并删除 docker-compose 维护的容器:】
    docker-compose down
    
【开启、关闭、重启 已存在的 docker-compose 维护的容器:】
    docker-compose start
    docker-compose stop
    docker-compose restart
    
【查看由 docker-compose 管理的容器:】
    docker-compose ps

【查看日志:】
    docker-compose logs -f    

 

(4)docker-compose.yml 常用参数
  yml 编写时 需要注意 缩进 以及 空格(不要使用 Tab 键,容易出错)。

【docker-compose.yml】
# 指定 compose 文件版本,与 docker 兼容,高版本的 docker 一般使用 3.x。
version: '3.7'

# 定义需要管理的 所有服务 信息
services:
  # 此处指的是服务的名称
  mysqlService:
    # 指定构建镜像的上下文路径(一般与 Dockerfile 一起使用)。
#    build:
#      # 指定 Dockerfile 所在路径
#      context: ../
#      # 指定 Dockerfile 名称(默认为 Dockerfile)
#      dockerfile: Dockerfile

    # 指定容器的名称(等同于 docker run --name)
    container_name: mysql2

    # 指定镜像路径(可以是远程仓库镜像 或者 本地镜像)
    image: mysql:8.0.19

    # 设置环境变量
    environment:
      # 设置 MySQL 登陆用户为 root,登陆密码为 123456
      MYSQL_ROOT_PASSWORD: 123456
      # 指定时区
      TZ: Asia/Shanghai

    # 定义 宿主机 与 容器的端口映射
    ports:
      - 3307:3306

    # 定义 宿主机 与 容器的数据卷映射
    volumes:
      - /usr/mydata/mysql/log:/var/log/mysql
      - /usr/mydata/mysql/data:/var/lib/mysql
      - /usr/mydata/mysql/conf:/etc/mysql/conf.d

    # 定义容器重启策略,no 表示任何情况下都不重启(默认),always 表示总是重新启动。
    # 若使用 swarm 集群模式,需使用 restart_policy 替代 restart
    restart: always

 

 

 

 

 

 

 

 

 

(5)docker-compose 配合 Dockerfile 使用
  使用 docker-compose.yml 文件 以及 Dockerfile 文件,在生成自定义镜像的 同时 启动当前镜像,并由 docker-compose 维护、管理。
  docker-compose.yml 文件通过 build 参数可以找到 Dockerfile 文件。

【Dockerfile】
from mysql:8.0.19

【docker-compose.yml】
# 指定 compose 文件版本,与 docker 兼容,高版本的 docker 一般使用 3.x。
version: '3.7'

# 定义需要管理的 所有服务 信息
services:
  # 此处指的是服务的名称
  mysqlService:
    # 指定构建镜像的上下文路径(一般与 Dockerfile 一起使用)。
    build:
      # 指定 Dockerfile 所在路径
      context: ../
      # 指定 Dockerfile 名称(默认为 Dockerfile)
      dockerfile: Dockerfile

    # 指定容器的名称(等同于 docker run --name)
    container_name: mysql2

    # 指定镜像路径(可以是远程仓库镜像 或者 本地镜像)
    image: mysql:8.0.19

    # 设置环境变量
    environment:
      # 设置 MySQL 登陆用户为 root,登陆密码为 123456
      MYSQL_ROOT_PASSWORD: 123456
      # 指定时区
      TZ: Asia/Shanghai

    # 定义 宿主机 与 容器的端口映射
    ports:
      - 3307:3306

    # 定义 宿主机 与 容器的数据卷映射
    volumes:
      - /usr/mydata/mysql/log:/var/log/mysql
      - /usr/mydata/mysql/data:/var/lib/mysql
      - /usr/mydata/mysql/conf:/etc/mysql/conf.d

    # 定义容器重启策略,no 表示任何情况下都不重启(默认),always 表示总是重新启动。
    # 若使用 swarm 集群模式,需使用 restart_policy 替代 restart
    restart: always

 

 

 

posted on 2020-04-02 20:20  累成一条狗  阅读(8290)  评论(1编辑  收藏  举报

导航