zoukankan      html  css  js  c++  java
  • docker 容器

    Docker学习地址:

    视频:https://www.bilibili.com/video/av32048704/?p=38

    文档:http://www.runoob.com/docker/docker-install-mysql.html

    安装Docker教程

    建议安装Ubuntu系统,CentOS使用CentOS7,CentOS6支持性不好

    Ubuntu 16.04 Server 版安装过程图文详解  https://www.linuxidc.com/Linux/2017-11/148341.htm

    Ubuntu 16.04安装docker详细步骤  https://blog.csdn.net/jinking01/article/details/82490688
    {
    sudo apt-get install -y docker-ce 这个步骤之前的命令也要执行,否则会提示找不到docker-ce
    }

    知识体系:

    1、镜像

    相关命令:

    docker images(查看所有镜像)

    docker pull redis(拉取最新版本的镜像,redis)

    docker pull redis:3(拉取指定版本,redis)

    利用私服拉取镜像

    docker rmi 【镜像名称】(删除镜像)

    docker search redis(远程搜索关于redis的镜像)

    2、容器

    docker ps(查看正在运行的容器)

    docker ps -a(查看所有容器)

    docker create --name 【容器名称】 -p 【外部暴露端口】:【内部端口】 【镜像名称:版本号】

    =》docker create --name redis-container -p 16379:6379 redis:3(创建容器,存储redis镜像)

    docker start 【容器名称/容器ID】(启动容器)

    =》名称/ID可以不写全,只要能辨认出即可

    docker stop 【容器名称/容器ID】(关闭容器)

    docker run -d(创建容器,与create命令一致)

    =》create创建成功后返回的是ID,而run成功后返回的是日志信息

    docker rm 【容器名称/ID】(删除容器)

    docker rm 【容器名称/ID】 -f(强制删除容器)

    容器相当于一个沙箱,有时我们需要进入容器内做一些操作,比如修改配置文件等;

    -it代表-i和-t

    -i指打开容器的标准输入(容器跟它有交互,可以输入东西)

    -t指分配一个伪终端,并且绑定到容器的标准输入上(我们可以看到一个界面)

    docker exec -it 【容器名称/ID】 /bin/bash(进入容器内部)

    exit(进入容器内部后的退出命令)

    docker logs -f 【容器名称/ID】(查看某容器的日志输出)

    =》一般配合start使用,

    =》docker start redis && docker logs -f redis

    3、数据管理,挂载目录

    在create或者run容器时,可以通过-v参数指定主机的目录,挂载到容器中的某一个目录上,这样容器就在这个目录读写数据了。从而实现了容器和数据的分离。

    docker pull percona:5.6

    docker pull 域名/percona:5.6(私服下载)

    docker create --name percona -v /data/mysql-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root123 percona:5.6
    (主机目录-容器外部目录:挂载目录-容器内部目录,-e就是指定参数,指定ROOT用户的密码)

    =》percona容器虽然可以创建成功,但是启动后在列表中一直看不见

    sudo docker run -d percona(创建容器,如果没有镜像,则会自动拉取)

    4、构建镜像

    docker的镜像必须基于某一个镜像

    java -jar -Dport=16868(JVM运行参数)jar包名称 [运行参数:--port=16868]

    java -jar -Dport=16868 springcloud-eureka-server-1.0-SNAPSHOT.jar

    java -jar springcloud-eureka-server-1.0-SNAPSHOT.jar --port=16890

    sudo docker pull java:8

    ===Dockerfile文件内容===
    FROM java:8
    COPY ./springcloud-eureka-server-1.0-SNAPSHOT.jar /itcast-eureka/springcloud-eureka-server-1.0-SNAPSHOT.jar
    COPY ./app-entrypoint.sh /
    RUN chmod +x /app-entrypoint.sh
    EXPOSE 3306

    ENTRYPOINT ["/app-entrypoint.sh"]


    ===app-entrypoint.sh文件===
    #!/bin/bash

    java -jar /itcast-eureka/springcloud-eureka-server-1.0-SNAPSHOT.jar

    sudo docker build -t itcast-eureka-container:1.0.0 .(制作镜像,点"."代表当前目录)

    docker tag 93e5281934c5 itcast-eureka-image:1.0.0(重命名镜像名称和版本,原来的不会被删除)

    sudo docker create --name eureka-server-container -t -p 6868:6868 itcast-eureka-image:1.0.0

    sudo docker start eureka-server-container && sudo docker logs -f eureka-server-container

    Got permission denied while trying to connect to the Docker daemon socket at unix

    备注:

    1、sudo是指将ROOT管理员权限赋予其他用户

    2、--help(查看某命令的帮助信息)

    3、一个容器只能包含一个镜像吗?

    4、可以针对一个内部端口,创建多个容器-改变容器名称和外部端口即可,如此一来就可以毫不费劲的装N个Reids了

    5、容器删掉后,镜像不会被删除

    6、percona是mysql的衍生版-组织优化版本

  • 相关阅读:
    不忘初心,方得始终
    我的博客开通了~第一个帖子奉上
    @TableLogic表逻辑处理注解(逻辑删除)
    nginx笔记
    ERROR: permission denied for relation hycom 权限被拒绝
    Mybatis-plus学习笔记
    SpringBoot学习笔记
    org.apache.ibatis.binding.BindingException原因总结(找不到映射文件)
    SpringBoot优先加载设置
    Date时间处理
  • 原文地址:https://www.cnblogs.com/syjp/p/10529176.html
Copyright © 2011-2022 走看看