美文网首页科研信息学
Docker使用教程(1): 安装及入门

Docker使用教程(1): 安装及入门

作者: code养牧人 | 来源:发表于2021-04-12 20:48 被阅读0次

    一. 前言

    其实笔者对偏运维向的技术了解的不多, 写这个系列的文章完全是为了记录. 因为在下前段时间花了2天的时间学习了docker的使用, 但果不其然. 一星期后只剩下了零星的记忆, 奈何当时觉得使用太简单了, 并没有留下笔记.

    • 也是写这篇文章时才发现docker已经被Kubernetes弃用了, 新的解决方案叫Containerd. 怀着忐忑的心情一顿百度. 生怕刚谈的女...额不是, 刚学的技术还没有好好的感受, 就又要开始下一轮相亲, 了解别的技术是什么样的.

    • 不过经过我的一通了解, 貌似他们说的弃用和跟我这个开发人员没多大关系. 详情请看在下搜索到的两篇文章:
      https://zhuanlan.zhihu.com/p/330485868
      https://zhuanlan.zhihu.com/p/336239777
      所以呢, docker使用继续记录~

    二. docker安装

    先放个官网: https://hub.docker.com/
    不过这个官网有点儿奇怪...因为它把我感觉最重要的东西放到底部去了...

    image.png

    打开官网, 滑到页面底部, 将看见这个.

    ok, 下边儿就结合官方的说明, 记录一下docker的安装(基于Centos7):

    1. 更新系统
      sudo yum update
    2. 移除旧版本的docker
     sudo yum remove docker \
               docker-client \
               docker-client-latest \
               docker-common \
               docker-latest \
               docker-latest-logrotate \
               docker-logrotate \
               docker-engine
    
    1. 安装依赖项及添加docker存储库
    sudo yum install -y yum-utils
    
    // 1. 官方存储库, 有点儿慢, 建议使用 2 阿里镜像存储库
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    // 2. 阿里镜像存储库
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    1. 安装最新稳定版docker
    // 总共三个
    sudo yum install docker-ce docker-ce-cli containerd.io
    
    1. 启动docker
      sudo systemctl start docker
    2. 验证是否安装成功(不必担心是否会有垃圾存在系统中, 放心执行)
      sudo docker run hello-world
    3. 成功的样子


      image.png

    三. docker基础概念

    高深的概念不会讲, 也不会讲...就使用上来看, 有一个镜像和一个容器. 镜像和容器的关系, 就像类和对象. 一个类可以生成多个对象实例, 多个对象实例互不干扰. 这么说有点儿抽象, 具体的话呢, 就是docker中有tomcat的镜像, 有redis的镜像, 有mysql的镜像等等, 拉取一下这些镜像, 就能运行一个或多个这些中间件.

    而docker的主要作用在我看来主要有四点:

    1. 简化开发环境安装. 如果只安装一个确实还好, 但是前段时间学习shading jdbc...时间都浪费在虚拟机搭建和多个mysql安装上了...
    2. 环境统一. 将开发完毕的spring boot项目连同依赖的中间件(mysql, redis, mq, es等)一块儿制作成一个镜像, 部署直接拉取这个镜像跑起来完事儿.
    3. 简化部署. 可能你会觉得上边儿拉镜像运行已经很方便了...但是不妨想想假如有100+以上的服务器...有点儿绝望. 不过这就涉及到Kubernetes了, 这个在下不甚精通, 也就不多说了.

    四. docker基础命令入门

    所有的命令都可以加上--help查看帮助, 包括docker

    1. 查看本地镜像: docker images

      image.png
      -a 展示全部
      -q 仅展示id
      可以配合表达式使用: docker rmi -f $(docker images -qa) // 强制删除所有镜像
    2. 删除镜像: docker rmi 镜像名或镜像id
      比如: docker rmi hello-world 或者 docker rmi d1165f221234
      之所以可以通过镜像名删, 是因为每个镜像的名字是不能重复的(不同版本有不同的标识)
      -f 强制删除

    3. 搜索镜像: docker search 镜像名, 例: docker search tomcat

      image.png
      不过我觉得如果是不熟悉的镜像还是到官网看看, 对于初学者来说, 对, 没错, 每个镜像都应该去官网看看. 比如说tomcat, 翻完它, 因为有非常多有用的东西: https://hub.docker.com/_/tomcat
    4. 拉取镜像: docker pull tomcat:9.0, tomcat有非常多的版本, 可是我们上边儿的搜索只能看到一个大的版本. 所以需要到官网看看, 如果没有指定版本, docker会默认拉取最新的版本. 对于tomcat来说, 就是tomcat10.xxx了

      image.png
      拉取完毕可以使用docker images -a查看一下
    1. 通过镜像启动容器: docker run [可选参数] image
      --name="tomcat01" #容器名字 tomcat01
      -d #后台方式运行
      -it # 使用交互方式运行 进入容器查看内容
      -p # 指定容器的端口 -p 8080:8080, 后面的端口表示容器内的端口, 前面的端口表示映射到系统外部的端口, 这样就可以外部端口访问了.
      启动一下: docker run -d -it -p 8080:8080 --name="tomcat01" tomcat:9.0

      image.png
      访问一下:
      image.png
      咦, 怎么404了? 不过这至少说明启动成功了. 这是因为docker的tomcat中的webapps目录中没有任何工程项目, 所以当然就404了.
    2. 查看容器: docker ps
      -a # 查看所有, 包括未运行的容器

    3. 上边儿的tomcat 404了, 我们来搞它一下, 进入容器看看. 进入一个容器通常有两种办法:
      (1) docker attach 容器id 这种方式不常用, 会进入到容器正在运行的终端, 拿tomcat来说...就是会进到打印日志的终端. 而且还不能Ctrl C结束, 因为这样会把容器一块儿结束了, 来看看:

      image.png
      就这样, 然后就没反应了...Ctrl C结束吧...
      image.png
      然后容器也不运行了...
      (2) docker exec -it 容器id bash常用, 会开启一个新的终端进入容器. 最后的bash貌似是指定在终端中所使用的命令集, 总之必须加上. 试试看:
      image.png
      ok, 已经进入容器了. 看到那个webapps.dist了吗, 里边儿装的就是原本tomcat自带的工程项目, 让我们把它移动到webapps目录下:
      image.png
      然后退出容器: exit, 接着重启容器...
    4. 停止、启动、重启容器命令
      停止: docker stop 容器id
      启动: docker start 容器id
      重启: docker restart 容器id

      image.png
      再次访问:
      image.png
      成功了! 恭喜你, 已经学会了docker的基本使用
    5. 容器的删除: docker rm 容器id
      -f # 默认无法删除运行中的容器, 可以加上-f参数强制删除
      这个命令和删除镜像很像, 镜像是rmi, 容器是rm, 很好记.

    下一篇将实战记录一下mysql的安装, 还有容器和系统之间文件的拷贝和同步, 因为经常需要将中间件的数据备份起来, 比如mysql的数据库. 最后, 感谢你的阅读, 如果文章中有说的不对的地方, 欢迎指正. 另外, 如果大家有使用上的小技巧也可以留言交流.

    相关文章

      网友评论

        本文标题:Docker使用教程(1): 安装及入门

        本文链接:https://www.haomeiwen.com/subject/brszkltx.html