当前位置 博文首页 > 好好学习天天向上:SpringBoot学习(四)--Docker

    好好学习天天向上:SpringBoot学习(四)--Docker

    作者:[db:作者] 时间:2021-07-15 22:00

    四、Docker

    Docker是直接安装在操作系统之上。

    一.核心概念

    1、Docker镜像(images)

    类似于WINDOWS镜像

    2、Docker容器(Container)

    类似于虚拟机,轻量级虚拟机

    3、Docker客户端(CLIENT)

    客户端通过命令行或者其他工具来使用DOCKER

    4、Docker主机(HOST)

    一个物理或者虚拟的主机,用于执行DOCKER守护进程和容器

    5、Docker仓库(Registry)

    存放DOCKER镜像的地方

    二.Docker的安装

    1、WINDOWS安装

    直接安装…

    1.遇到问题一:Cannot enable Hyper-V service

    之后再看吧。

    2、Linux安装(CENTOS7)

    Linux安装DOCKER需要内核版本大于3

    [root@VM-0-11-centos /]# uname -r
    3.10.0-1127.13.1.el7.x86_64
    

    yum安装docker

    yum install docker
    

    确认安装成功

    [root@VM-0-11-centos /]# docker -v
    Docker version 1.13.1, build 7d71120/1.13.1
    

    启动docker

    systemctl start docker
    

    设置开机启动

    systemctl enable docker
    

    停止docker

    systemctl stop docker
    

    三.Docker的使用

    1、搜索镜像(docker search xxx)

    docker search mysql
    

    2、下载镜像

    下载默认版本

    docker pull mysql
    

    下载指定版本

    docker pull mysql:版本号
    

    3、查看下载的镜像

    docker images
    

    4、删除(必须没有生成的容器,无论容器是否运行)

    docker rmi imageid
    

    5、启动

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    
    # 运行tomcat镜像的lastest版本,命名为mytomcat
    docker run --name mytomcat -d tomcat:lastest
    

    OPTIONS说明:

    -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

    -d: 后台运行容器,并返回容器ID;

    -i: 以交互模式运行容器,通常与 -t 同时使用;

    -P: 随机端口映射,容器内部端口随机映射到主机的端口

    -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

    –name=“nginx-lb”: 为容器指定一个名称;

    –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

    –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

    -h “mars”: 指定容器的hostname;

    -e username=“ritchie”: 设置环境变量;

    –env-file=[]: 从指定文件读入环境变量;

    –cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;

    -m :设置容器使用内存最大值;

    –net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

    –link=[]: 添加链接到另一个容器;

    –expose=[]: 开放一个端口或一组端口;

    –volume , -v: 绑定一个卷

    6、停止

    docker stop ID OR NAME
    docker stop mytomcat
    

    7、查看所有的容器(包括已经停止的)

    docker ps -a
    

    8、删除容器(容器必须为停止状态)

    docker rm id or name
    

    9、重启停止了的容器

    docker start id or name
    

    10、端口映射

    将服务器端口和docker内的端口进行映射

    # 9000为服务器端口,6379为docker容器端口
    -p 9000:6379 
    

    启动做了端口映射的容器

    docker run -d --name tomcattest -p 9000:8080 tomcat:latest
    

    11、查看日志

    docker logs id or name
    

    12、挂载

    -v
    

    13、进入容器(退出不停止)

    docker exec -it  CONTAINER_ID OR CONTAINER_NAME  bash
    

    -it的意思

     exec:                                     Run a command in a running container(在运行的容器中运行命令)
    exec -i:  --interactive(相互作用的)       Keep STDIN open even if not attached(即使没有连接,也要保持STDIN打开)
    exec -t:   --tty                          Allocate a pseudo-TTY(分配一个 冒充的终端设备)
    

    三.Docker环境搭建

    1、mysql

    如果只这么执行会无法启动

    docker run -d --name dockermysql -p 13306:3306 mysql:latest
    

    查看无法启动原因

    docker logs dockermysql 
    

    未配置数据库密码,必须指定或者设置为无密码。

    2021-06-09 11:59:05+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
        You need to specify one of the following:
        - MYSQL_ROOT_PASSWORD
        - MYSQL_ALLOW_EMPTY_PASSWORD
        - MYSQL_RANDOM_ROOT_PASSWORD
    
    

    如果顺序不同可能会启动失败,这个顺序亲测成功。

    docker run -p 13306:3306  --name dockermysql  -e MYSQL_ROOT_PASSWORD=pwd-d bingozhou/mysql5.7
    

    连接navicat报错,需要进入docker容器

    docker exec -it dockermysql bash
    

    再进入数据库

    mysql -u root -p
    
    # 使用MYSQL库
    use mysql
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';  ### 123456 mysql的登录密码
    #刷新
    flush privileges;
    

    2、redis

    docker run -p 16379:6379  --name dockerredis   -d redis:latest
    

    3、rabbitmq

    4、elasticsearch

    5、Nacos

    1.下载

    docker pull nacos/nacos-server
    

    2.启动(单机模式)

    docker run \
      --name nacos \
      --restart=always \
      -d \
      -e MYSQL_MASTER_SERVICE_HOST=127.0.0.1 \
      -e MYSQL_MASTER_SERVICE_PORT=3306 \
      -e MYSQL_MASTER_SERVICE_DB_NAME=nacos_config \
      -e MYSQL_MASTER_SERVICE_USER=root \
      -e MYSQL_MASTER_SERVICE_PASSWORD=123456\
      -e SPRING_DATASOURCE_PLATFORM=mysql \
      -e MYSQL_DATABASE_NUM=1 \
      -e NACOS_USER=nacos\
      -e NACOS_PASSWORD=nacos\
      -e JVM_XMS=512m \
      -e JVM_XMX=512m \
      -e JVM_XMN=256m \
      -e JVM_MS=32m \
      -e JVM_MMS=80m \
      -p 8848:8848 \
      nacos/nacos-server:latest
    
    cs