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

一. 前言

其实笔者对偏运维向的技术了解的不多, 写这个系列的文章完全是为了记录. 因为在下前段时间花了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的数据库. 最后, 感谢你的阅读, 如果文章中有说的不对的地方, 欢迎指正. 另外, 如果大家有使用上的小技巧也可以留言交流.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容