• Docker 零基础从入门到使用


    https://blog.csdn.net/sunnyzyq/article/details/101222410

    1. Docker 是什么?

    Docker 是一个引擎
    Docker 是一个应用容器引擎
    Docker 是一个开源的应用容器引擎
    他可以将开发的应用生成镜像,然后发布到任何系统上运行。

    2. Docker 能干什么?

    在讲 Docker 能干什么之前,我们不妨先看看没有 Docker 和有Docker分别是个什么样子的?

    2.1需求

    某公司需要开发一个管理系统,由于业务数据量庞大,需要对每个模块进行独立化。

    比如:将订单管理抽出为一个单独的系统,支付管理抽出为一个单独的系统,会员管理也抽为一个单独的系统,以此类推等等。

    那么,要实现用户下单支付这个逻辑,那么首先需要调用会员管理的相关接口进行登录,调用订单管理的相关借口进行下单,调用支付管理进行支付。这几个模块共同工作才构成了我们一个下单支付的功能。这就是我们常说的分布式微服务系统。

     他和传统的单一模式的区别就是:将整个项目进行了模块划分,以前老一辈项目都是将会员,订单,支付等系统都集合在一个项目中,这样十分不利于后期项目的扩展。

    2.2 有Docker组 VS 无Dokcer组

    为了方便叙述,我们将有无使用Docker分为 有Docker组和无Docker组,让他们开始PK。

    • 第 1 回合:比服务器资源占用量( 资源就是金钱,没啥好说的 )

         无 Docker 组:购买了3台服务器,将开发好的三套系统分别往一台服务器上进行部署。
         有 Docker 组:购买了1台服务器,将开发好的三套系统分别进行 Docker 封装,都部署到这台服务器上。
         砖家点评:无Docker组多买了2台服务器,造成了金钱浪费,有Docker组胜出。

    • 第 2 回合:比项目启动速度( 时间就是金钱,也没啥好说的 )

         无 Docker 组:启动1个服务前前后后花了10秒,则3个启动完毕则花了30秒。
         有 Docker 组:启动1个服务只靠一个命令,花费1秒,那么3个就只需要3秒。
         砖家点评:无Docker组花了30秒,有Docker 组只花了3秒,有Docker组再次胜出。

    • 第3个回合:比项目迁移( 服务器升级啊,机房变更啊,反正就是需要换服务器了 )

        无Docker组:嗒嗒嗒,又重新在新服务器上安装了一大波软件,然后测试,总算迁移成功了,耗时大半天。
        无Docker组:把每个服务的Docker镜像拷贝过去,不用安装任何软件,又一个命令在新服务器上启动成功,耗时2分钟。
        砖家点评:这么显而易见的结果,还要我来点评?我太难了!
    经过上面几个回合的较量,Docker 的优点相信你或多或少已经知道一些了,我也就不总结了,当然Docker的优点远远不止这些,等你们日后学会了,自己去看相关文档摸索,本文只带萌新入门Docker。

    3. Docker 入门

    下面以实际的例子,把我个人网站(http://www.sunnyzyq.cn)改造为 Docker 项目。下面所有操作都是在 Linux 上操作的,请各位同学注意,要是没有Linux, 要么自己花钱买个服务器,要么自己安个虚拟机,个人建议搞我们这行的,还是有必要买个服务器,1年也就几百块,买来想怎么玩儿就怎么玩儿,主要是能学到技术,多好。

    3.1 Docker 安装

    ubuntu14.04以上的版本都是自带docker安装包的;所以可以直接安装;但是这个一般不是最先版本

    sudo apt-get update
    sudo apt-get install docker.io

    安装最新版本

    sudo apt-get update
    curl -s https://get.docker.io/ubuntu/ | sudo sh  

    查看docker是否安装成功

    docker version

     如图,docker即安装成功。但是我们可以看见docker只启动了client,我们通过输入service docker start来开启server,之后再次输入docker version来验证

    启动server

    service docker start

     发现server依然没有启动

    解决方法

    https://www.cnblogs.com/informatics/p/8276172.html

    sudo groupadd docker     #添加docker用户组
    sudo gpasswd -a $USER docker     #将登陆用户加入到docker用户组中
    newgrp docker     #更新用户组
    docker ps    #测试docker命令是否可以使用sudo正常使用

     如图所示,我们的安装已经完成。

    测试

    完成之后,我们来使用docker来测试一下HelloWorld,通过输入docker pull hello-world来拉取hello-world镜像

    这样我们就从仓库拉取到了HelloWorld的镜像,接下来我们来运行一下,通过输入docker run hello-world

    若是出现了上图的内容则说明hello-world运行成功。

    3.2 docker离线安装

    https://blog.csdn.net/weixin_42114013/article/details/107773722

    3.3 docker基础命令

    https://blog.csdn.net/weixin_44462664/article/details/109684557

    1. 查看镜像列表
    1 docker images
    2 docker image ls
    1. 导出镜像
    1 docker save -o <保存路径> <镜像名称(REPOSITORY):标签(TAG)>
    2 3 docker save > <保存路径> <镜像名称(REPOSITORY):标签(TAG)>

    其中 -o 和 > 表示输出到文件,<保存路径> 为目标文件,<镜像名称(REPOSITORY):标签(TAG)> 是源镜像名。

    1. 导入镜像
    1 docker load -i xxx.tar
    2 3 docker load < xxx.tar

    其中 -i 和 < 表示从文件输入,会成功导入镜像及相关元数据,包括 tag 信息。

    1. 删除镜像
    1 docker image rm `<镜像名称(REPOSITORY):标签(TAG)> or <IMAGE ID>`
    2 3 docker rmi `<镜像名称(REPOSITORY):标签(TAG)> or <IMAGE ID>`

       5. 运行容器

     1 docker run -itd --name <自定义容器名> -p <主机端口>:<容器内部端口> <镜像名称(REPOSITORY):标签(TAG)>
     2 
     3 详细参数: 
     4     run            创建并运行一个容器 
     5     -d             后台运行 
     6     -P(大写)      容器内部端口随机映射到主机端口
     7     -p(小写)      容器内部端口绑定到指定的主机端口
     8     -v 源地址(宿主机):目标地址(容器) # 挂载目录到宿主机(宿主机全路径, 容器从 /home 开始)
     9     -it         分配交互式的终端 
    10     --name         指定容器的名字 
    11     /bin/sh        覆盖容器的初始命令
    例如:docker run --name temp <image id> -itd

      6. 停止容器

     docker stop `<CONTAINER ID> or <NAMES>`

      7.移除容器

    1 docker rm <CONTAINER ID>
    2           <NAMES>
    3 
    4 docker rm -f  'docker ps -a -q'        # 删除所有容器

      8. 杀死容器

     docker kill `<CONTAINER ID> or <NAMES>`

      9. 查看容器列表

     docker ps (-a -l -q)

      9. 进入指定容器

     docker exec -it `<CONTAINER ID> or <NAMES>` /bin/bash # 退出容器终端,不会导致容器的停止

      10. 开启/停止/c=重启 指定容器id或者容器名称的容器

     docker start/stop/restart `<CONTAINER ID> or <NAMES>`

      11. 查看容器日志

    docker logs `<CONTAINER ID> or <NAMES>`

      12. 查看容器状态

    docker ps | grep ${CONTAINER_ID}

      13. 镜像打包(保存对容器的修改)

    1 docker commit <CONTAINER ID>  <新的镜像名称(REPOSITORY):标签(TAG)>
    2     -m="提交的描述信息" 
    3     -a="作者"

      14. 查看容器内部详情细节

    docker inspect `<CONTAINER ID> or <NAMES>`

      15. 加载镜像文件

    docker load --input <docker镜像tar包>

      16. 将docker内文件复制到本地

    docker cp temp:/Finone ./  将 Finone文件夹下载到本地

      17. 删除所有容器

    docker rm $(docker ps -aq)

      18. 删除所有镜像

    docker rmi $(docker images -q)

      19. 查看docker是否启动

    systemctl status docker

      20. 启动docker

    systemctl start docker

      21. 关闭docker

    systemctl stop docker

      22. 将本地文件挂载到docker

    docker run --name complie -itd -v <本地绝对路径(Finone)>:/Finone/tmp <镜像id>  /bin/bash

      23. 进入容器

    docker exec -it complie /bin/bash

    https://segmentfault.com/a/1190000015591809

    3.4  -itd 参数

    https://huifeng.blog.csdn.net/article/details/102781663?utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control

    3.5 docker run -v参数

    https://www.cnblogs.com/starfish29/p/10653960.html

    格式:

      -v 本地目录:容器目录  或 -v 容器目录

    示例:

      sudo docker run -it --rm -v $PWD(本地目录):/python(容器目录) python /bin/bash 

      将本机的当前目录,挂载到镜像中的/python目录  

      sudo docker run --rm -it -v /home/hyzhou/docker(本地目录):/data(容器目录) ubuntu:14.04 /bin/bash

      将本机的/home/hyzhou/docker,挂载到镜像中的/data目录

    其他参数:

      -d: 后台运行容器

      -p: 端口映射 5005:5004  指定主机的5005端口映射到容器的5004端口

      -it: 以交互模式运行启动容器

      

  • 相关阅读:
    JVM参数说明介绍
    使用Intellij IDEA的Bookmarks
    js中对小数取整
    idea 中pom.xml依赖版本号报错(报红,如下图所示)
    Springboot项目启动后访问不到Controller
    pringBoot Controller接收参数的几种常用方式
    Spring启动执行流程梳理
    SQL条件语句(IF, CASE WHEN, IF NULL)
    获取tomcat服务器上的部分日志
    Linux下 SpringBoot jar项目后台运行、查看、停用
  • 原文地址:https://www.cnblogs.com/xinmomoyan/p/14794716.html
Copyright © 2020-2023  润新知