• docker入门


    1、docker安装centos7

    1、删除旧版本

    sudo yum remove docker \
    
    docker-client \
    
    docker-client-latest \
    
    docker-common \
    
    docker-latest \
    
    docker-latest-logrotate \
    
    docker-logrotate \
    
    docker-engine
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2、安装一些工具包

    sudo yum install -y yum-utils \
    
    • 1

    3、设置镜像的仓库

    sudo yum-config-manager \
     --add-repo \
     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    • 1
    • 2
    • 3

    5、更新软件源

    yum makecache fast
    
    • 1

    6、安装最新版本

    sudo yum install docker-ce docker-ce-cli containerd.io
    
    • 1

    7、启动docker

    systemctl start docker
    
    • 1

    8、测试docker

    sudo docker run hello-world
    
    • 1

    9、阿里云镜像加速

    https://cr.console.aliyun.com/cn-shanghai/instances/mirrors

    配置

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2、常用命令

    1、帮助命令

    # 查看版本
    docker version 
    # 显示docker的系统信息包括镜像和容器
    docker info
    
    • 1
    • 2
    • 3
    • 4

    2、镜像命令

    # 查看所有镜像
    docker images
    # 列出所有镜像
    docker images -a
    # 只显示镜像的id
    docker images -q
    
    # 搜索镜像
    docker search xxx
    # 过滤搜索大于等于
    docker search xxx --filter=stars=200
    
    # 拉取镜像下载镜像(最新版本)
    docker pull xxx
    # 拉取镜像下载镜像(指定版本)
    docker pull xxx:xxx
    
    # 删除镜像(-f强制)
    docker rmi -f 镜像id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3、容器命令

    # 拉取容器下载镜像(最新版本)
    docker pull xxx
    # 拉取容器下载镜像(指定版本)
    docker pull xxx:xxx
    
    # 启动并进入容器,根据镜像创建一个容器并运行一个命令,操作的对象是 镜像;
    docker run -it xxx /bin/bash
    
    # 进入容器,新开一个命令行在运行的容器中执行命令,操作的对象是 容器。
    docker exec -it 容器id /bin/bash
    # 进入容器,当前正在运行的命令行
    docker attach 容器id
    
    # 容器停止并退出
    exit
    # 容器不停止退出
    Ctrl + P + Q
    
    # 查看有哪些容器,正在运行的
    docker ps
    # 查看有哪些容器,正在运行的和没在运行的都列出来
    docker ps -a
    
    # 移除容器,但是镜像文件还在
    docker rm 容器id
    
    # 启动和停止容器
    docker start 容器id
    docker restart 容器id
    docker stop 容器id
    docker kill 容器id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    4、其他常用命令

    # 后台启动
    docker run -d centos
    # 后台启动,并且指定端口 -p 服务器端口:docker容器端口
    docker run -p 80:80 -d nginx
    
    # 显示日志
    docker logs --tf --tail 条数 容器id
    
    # 把容器的文件拷贝到主机中
    docker cp 容器id:容器中文件的目录(/home/test.java) 主机目录(/home)
    
    # 提交一个自己的镜像
    docker commit -m="描述信息" -a="作者" 容器id 目标镜像名
    
    #容器卷相关
    # 所有相关命令
    docker volume --help
    # 查看有哪些卷
    docker volume ls
    # 查看具体卷配置
    docker volume inspect 卷名
    
    #查看当前镜像怎么构建的,构建步骤
    docker history 镜像id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    在这里插入图片描述

    3、常用工具安装

    1. nginx

    安装:docker pull nginx

    运行:docker run -p 80:80 -d nginx/id

    2. tomcat

    安装:docker pull tomcat:9.0.54

    运行:docker run -p 8080:8080 tomcat/id

    3. docker 可视化工具

    安装并运行:docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

    运行:docker run -d -p 8088:9000 portainer/portainer

    4. mysql

    下载安装并挂载文件

    docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
    
    • 1

    4、容器数据卷

    1. 什么是容器卷技术

    1. 不同位置的文件夹双向绑定数据
    2. 容器里面的文件夹和本地的文件夹数据双向绑定,修改数据文件,都会同步。

    2. 使用

    docker run -it -v 本地主机文件位置:容器文件位置 容器名字或者id /bin/bash
    
    • 1

    3. 具名挂载、匿名挂载、指定路径挂载

    具名挂载和匿名挂载后,文件都在宿主机的/var/lib/docker/volumes/xxx/_data中

    # 匿名挂载
    -v 容器内路径
    # 具名挂载
    -v 卷名:容器内路径
    # 指定路径挂载
    -v /宿主机路径:/容器内路径
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    相关命令:

    # 所有相关命令
    docker volume --help
    # 查看有哪些卷
    docker volume ls
    # 查看具体卷配置
    docker volume inspect 卷名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4. 数据卷容器

    多个容器通过数据卷进行共享数据

    命令:–volumes-form 要被共享的容器

    docker run -d .. -p.. --volumes-form 要被共享的容器
    例:docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-form mysql01 mysql:5.7
    
    • 1
    • 2

    5、DockerFile

    构建自己镜像的脚本文件

    1. 常用指令

    #基础镜镜像,—切从这里开始构建
    FROM
    #镜像是谁写的,姓名+邮箱
    MAINTAINER
    #镜像构建的时候需要运行的命令
    RUN
    #步骤: tomcat镜像,这个tomcat压缩包!添加内容,如果添加的是压缩包,则会自动解压
    ADD
    #镜像的工作目录
    WORKDIR
    #挂载的目录
    VOLUME["",""]
    #默认开启端口配置
    EXPOSE
    #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
    CMD
    #指定这个容器启动的时候要运行的命令,可以追加命令
    ENTRYPOINT
    #当构建一个被继承 DockerFile 这个时候就会运行 ONBUILD的指令。触发指令。
    ONBUILD
    #类似ADD ,将我们文件拷贝到镜像中
    COPY
    #构建的时候设置环境变量!
    ENV
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    2. 使用

    docker build -f DockerFile文件位置 -t 要构建的镜像名 .(注意有一个点)

    docker build -f /dockerfile1 -t test/centos:1.0 .(不加版本号则会默认是latest)
    
    • 1

    3. 构建一个centos

    from centos
    MAINTAINER tuzhi<666666@qq.com>
    
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    
    EXPOSE 80
    
    CMD echo $MYPATH
    CMD echo "===end==="
    CMD /bin/bash
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4. 构建一个tomcat

    1. 在服务器上上传tomcat文件盒和jdk文件,并且创建Dockerfile文件
    FROM centos
    MAINTAINER tuzhi
    ADD jdk-8u221-linux-x64.tar.gz /usr/local/
    ADD apache-tomcat-7.0.39.tar.gz /usr/local/
    RUN yum install vim
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    ENV JAVA_HOME /usr/local/jdk1.8.0_221
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV CATALINA_HOME /usr/local/apache-tomcat-7.0.39
    ENV CATALINA_BASH /usr/local/apache-tomcat-7.0.39
    ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
    EXPOSE 8080
    CMD /usr/local/apache-tomcat-7.0.39/bin/startup.sh && tail -F /url/local/apache-tomcat-7.0.39/bin/logs/catalina.out
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    1. 创建镜像

      docker build -t diytomcat .
      
      • 1
    2. 运行镜像并且挂载文件夹

      docker run -d -p 9090:8080 --name tuzhitomcat -v /home/diytomcat-dockerfile/build/tomcat/test:/usr/local/apache-tomcat-8.0.30/webapps/test -v /home/diytomcat-dockerfile//build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-8.0.30/logs diytomcat
      
      
      • 1
      • 2

    5. 发布镜像

    1. DockerHub

    1. 注册账号https://hub.docker.com/

    2. 登录

      docker login -u xxx -p xxx
      
      • 1
    3. 在Docker Hub上创建仓库[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

    4. 修改镜像名和添加镜像版本

      docker tag 镜像id 镜像名称
      docker tag xxx tuzhii/diytomcat:1.0
      
      • 1
      • 2
    5. 发布(只能发布带有版本号的,镜像名要和Docker Hub上的仓库名一样)

      docker push 镜像名:版本号
      docker push tuzhii/diytomcat:1.0
      
      • 1
      • 2

    2. 阿里云

    1. 选择容器镜像服务

    2. 创建容器实例

    3. 创建镜像仓库:仓库信息选择本地仓库

    4. 登录

      docker login --username xxx(阿里云中有给)
      
      • 1
    5. 修改镜像名称和添加版本

      docker tag 镜像id 镜像名称
      docker tag xxx tuzhii/diytomcat:1.0
      
      • 1
      • 2
    6. 上传发布(只能发布带有版本号的,镜像名要和Docker Hub上的仓库名一样)

      docker push 镜像名:版本号
      docker push tuzhii/diytomcat:1.0
      
      • 1
      • 2

    6. 小节

    在这里插入图片描述

    6、Docker 网络

    1. 自定义网络(类似网卡,另外一个网络段区域)

    1. 自定义网络打通容器之间的网络通讯

    docker network create --driver bridge --subnet 192.168.0.0/16 --gatway 192.168.0.1 mynet
    
    • 1

    2. 把容器注册到自己的网络中就可以互通了

    使用–net

    docker run -d -P --name tomcat01 --net mynet tomcat
    docker run -d -P --name tomcat02 --net mynet tomcat
    
    • 1
    • 2

    2.不同网络的容器联通

    docker network connect mynet tomcat03(在docker0网卡下的)
    
    • 1

    7、打包自己都SpringBoot项目镜像并运行

    1. 在项目根目录创建DockerFile

      FROM java:8
      COPY *.jar /app.jar
      CMD ["--server.port=8080"]
      EXPOSE 8080
      ENTRYPOINT ["java","-jar","/app.jar"]
      
      • 1
      • 2
      • 3
      • 4
      • 5
    2. 把jar包和DockerFile上传到服务器中

    3. 构建镜像:docker build -t testSpringboot .

    4. 运行镜像:docker run -d -P --name SpringbootTest testSpringboot

    omcat

    
    ## 2.不同网络的容器联通
    
    ~~~bash
    docker network connect mynet tomcat03(在docker0网卡下的)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    7、打包自己都SpringBoot项目镜像并运行

    1. 在项目根目录创建DockerFile

      FROM java:8
      COPY *.jar /app.jar
      CMD ["--server.port=8080"]
      EXPOSE 8080
      ENTRYPOINT ["java","-jar","/app.jar"]
      
      • 1
      • 2
      • 3
      • 4
      • 5
    2. 把jar包和DockerFile上传到服务器中

    3. 构建镜像:docker build -t testSpringboot .

    4. 运行镜像:docker run -d -P --name SpringbootTest testSpringboot

  • 相关阅读:
    kubernetes 通过HostAliases属性配置域名解析
    docker安装单机版redis、集群版redis
    《WEB前端框架开发技术》HTML5响应式旅游景区网站——榆林子州HTML+CSS+JavaScript
    HTML-注册页面
    刷题记录:牛客NC22598Rinne Loves Edges
    Docker网络模式与cgroup资源控制
    vue安装element ui失败
    spring多数据源动态切换的实现原理及读写分离的应用
    基于SpringBoot的火车订票管理系统
    如何使tstringgrid中心的单元格文本对齐
  • 原文地址:https://blog.csdn.net/qq_44255146/article/details/125996301