点击上方“TestOps” 订阅

本周TestOps免费试听课课程表

时间 主题
7.23(周二)14:00 Selenium环境搭建与原理
7.24(周三)20:00 Docker使用

软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境不相同,可能导致软件无法运行。

要使软件运行正确,用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能运行。

那么怎么才能解决这个大问题呢?

虚拟机是个好方案~

但是容器化对于资源的消耗会小很多,会是个更优的选择。docker就是Linux容器中最受欢迎的一个。

在上周六与本周三的复习课程中,芒果就带大家一起认识了Docker,这里我们对Docker的基本使用做个小总结。

Docker介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。

要理解Docker的工作原理,需要对以下三个概念有足够清晰的认识。

镜像

我们都知道,操作系统分为内核和用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系统的 root 文件系统。

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

容器

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。

每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层。容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。

仓库

镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

三者之间关系

如下图所示:

其中Docker Client端向Docker守护进程发送请求,新建或者操作容器等。

Docker安装

Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到,所以我们仅仅安装使用社区版。

这里安装系统为CentOS 7:

#安装一些必要的系统工具

还可以通过安装脚本一键安装:

#安装curl

更多系统版本安装请参考:

https://docs.docker.com/install/

Docker使用

获取镜像

Docker Hub 上有大量的高质量的镜像可以用。从 Docker 镜像仓库获取镜像的命令是 docker pull。其命令格式为:

    docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

Docker 镜像仓库地址:地址的格式一般是 [:端口号]。默认地址是 Docker Hub。

仓库名:如之前所说,这里的仓库名是两段式名称,即 /。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。

例:

docker pull ubuntu:18.04

列出镜像

要想列出已经下载下来的镜像,可以使用 docker image ls 命令。

结果列表包含了仓库名、标签、镜像 ID、创建时间 以及 所占用的空间。镜像 ID 则是镜像的唯一标识,一个镜像可以对应多个标签。

例:

docker image ls –q

删除镜像

如果要删除本地的镜像,可以使用 docker image rm 命令,其格式为:

docker image rm [选项] [ ...]

其中, 可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要。

例:

docker image rm centos

docker image rm $(docker image ls -q centos)

新建并启动容器

所需要的命令主要为 docker run。

例如,下面的命令输出一个 “Hello World”,之后终止容器。

docker run ubuntu:18.04 /bin/echo 'Hello world’

这跟在本地直接执行 /bin/echo 'hello world' 几乎感觉不出任何区别。

下面的命令则启动一个 bash 终端,允许用户进行交互。

$ docker run -t -i ubuntu:18.04 /bin/bash

root@af8bae53bdd3:/#

其中,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。

在交互模式下,用户可以通过所创建的终端来输入命令。

启动已终止容器

如果使用了 -d 参数运行容器。

$ docker run --name ubuntu_test -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker logs 查看)。

注:容器是否会长久运行,是和 docker run 指定的命令有关,和 -d 参数无关。

使用 -d 参数启动后会返回一个唯一的 id。

可以通过 docker container ls 或者 docker ps -a命令来查看容器信息。

要获取容器的输出信息,可以通过 docker container logs 命令。

docker container logs [container ID or NAMES]

可以利用 docker container start 命令,直接将一个已经终止的容器启动运行。

例:

docker container start ubuntu_test

容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必需的。除此之外,并没有其它的资源。可以在伪终端中利用 ps 或 top 来查看进程信息。

终止容器

可以使用 docker container stop 来终止一个运行中的容器。

此外,当 Docker 容器中指定的应用终结时,容器也自动终止。

用户通过 exit 命令或 Ctrl+d 来退出终端时,所创建的容器立刻终止。

例:

docker container stop ubuntu_test

终止状态的容器可以用 docker container ls -a 命令看到。

例:

docker container ls –a

处于终止状态的容器,可以通过 docker container start 命令来重新启动。

此外,docker container restart 命令会将一个运行态的容器终止,然后再重新启动它。

进入容器

在使用 -d 参数时,容器启动后会进入后台。

某些时候需要进入容器进行操作,包括使用 docker attach 命令或 docker exec 命令。

attach 命令

例:

docker attach ubuntu_test

注意:如果从这个 stdin 中 exit,会导致容器的停止。

exec 命令

docker exec 后边可以跟多个参数,常用参数为-i -t 参数。

只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。

当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。

例:

docker exec -it ubuntu_test bash

如果从这个 stdin 中 exit,不会导致容器的停止。这就是为什么推荐大家使用 docker exec 的原因。

删除容器

如果要删除本地某个容器,可以使用 docker rm 命令。

docker rm ubuntu_test

这样将导出容器快照到本地文件。

关于Docker镜像以及容器的使用内容非常多,因为篇幅原因,我们仅仅介绍以上部分,对于更多的内容,我们会在之后的文章进行更新。

周六Vip课程预告

本周六芒果将带大家继续TestOps测试运维Python专项课程,在对Docker和Jenkins有个认识之后,我们将学习Django项目的持续集成。

每周六全天Vip课程,每周三晚免费课程总结及回顾答疑

TestOps|测试运维

精益技术 赋能过程

点击右上角"..."将好文分享给朋友吧

长按二维码关注我们

docker镜像启动后端口号是多少_初识Docker相关推荐

  1. docker镜像启动后端口号是多少_14,Docker容器必知必会,你会了吗?

    来,直接大家提供亲测有效的操作,节省大家的学习时间 1,首先,明确安装一个软件的步骤 查找镜像 拉取镜像 通过镜像创建容器 启动容器 那么关于镜像的操作,在上一篇文章,我们已经讲过了,如果你还不清楚, ...

  2. docker镜像启动后端口号是多少_java项目docker云化入门

    01 创建java项目 从spring官网快速开始找一份样例代码即可,代码样例如下: 1.指定pom父文件和依赖 <parent><groupId>org.springfram ...

  3. docker镜像启动后端口号是多少_智能家居从新出发: 第一篇 群晖docker安装homeassistant...

    原文作者:sev7er 说明 K友这里已经有很多大神出过homeassistant的原创,为什么我还有写这篇文章呢?Homeassistant现在版本是0.92,经过更新,一些架构.配置方法都变了. ...

  4. docker镜像启动后端口号是多少_RSS、智能家居、个人博客、维基百科……Docker 入门指南...

    如果你购买过 VPS 云主机,那么或多或少,你都可能听说过 Docker.如果你从未听说过 Docker,那么本文可能能够为你开启新世界. 利用 Docker,你能够非常轻松地部署各类服务,无论是个人 ...

  5. docker 镜像修改的配置文件自动还原_基于Docker搭建Redis一主两从三哨兵

    作者丨oscarwin来源:https://juejin.im/post/5d26b03de51d454fa33b1960 这段时间正在学习Redis和容器相关的内容,因此想通过docker搭建一套r ...

  6. 常用docker镜像启动了解

    常用docker镜像启动了解 curl -o /etc/yum.repos.d/docker.repo http://mirrors.aliyun.com/docker-ce/linux/centos ...

  7. docker 镜像启动报错

    docker 镜像启动报错 docker endpoint with name zookeeper already exists in network bridge 1.错误描述 1.启动docker ...

  8. 群晖nas中使用registry搭建docker镜像私人服务器以及设置群晖远程docker服务

    群晖nas中使用registry搭建docker镜像私人服务器以及设置群晖远程docker服务 折腾群晖服务器很有快感,一是因为自家群晖ds216+低功耗,24小时开机也不觉得费电,二是因为群晖系统也 ...

  9. docker 镜像修改的配置文件自动还原_原创 | 全网最实在的docker入门教程四

    作者:潘吉祥 上一篇我们学习了如何使用Dockerfile制作自己的镜像,不过这种方式更像纯粹的运维方式,作为开发者来说,未免有些小繁琐,一个不小心写错些命令就执行失败,我们还不知道错误在哪,这着实有 ...

最新文章

  1. 自己做网站翻译服务器 - 添加网站,猎场seo视频教程:站群之间应该如何进行链接-专业...
  2. [Java] java中的接口定义
  3. 深入浅出组合逻辑电路(3)常见的几种编码器
  4. iOS应用开发视频教程笔记(二)My First iOS App
  5. html js 回调函数,js中回调函数的学习笔记
  6. 玩一下易语言 和字有多种读音,注定了它的重要性!!
  7. Spring核心内容
  8. json代码恶搞地图完整版qqxml地图卡片代码
  9. 如何缩小png图片大小kb?如何让png图片变小?
  10. 亲爱的,别把上帝缩小了 ---- 读书笔记3
  11. Grafana实现SQL查询参数查询
  12. mysql 命令行操作
  13. Yii Framework 开发教程(37) Zii组件-Dialog示例
  14. 日语学习之——五十音图、浊音半浊音、拗音、长音促音
  15. 95 后女孩从月入3000到月入10万
  16. GitModel|Task04|随机模拟
  17. 送书 | 用啥selenium!JS逆向不香吗?
  18. Android融云会话及会话列表的实现
  19. kernal源码下载地址
  20. 简单递归——整数划分

热门文章

  1. java 线程访问控件_多线程下访问控件的方式
  2. xmos驱动_独家!XMOS发表最新Xcore.ai“跨界处理器”
  3. c#ref和out的相同点_C#中ref和out的使用小结
  4. 将windows c盘安装在linux,将WindowsC盘hda1安装在Linux文件系统的/winsys目录下,命令是()。...
  5. matlab中投影,MATLAB在极射赤平投影中的应用
  6. 通过JS+DIV+CSS排版布局实现选项卡效果
  7. JavaScript的NaN-唯一 一个自己不等于自己的对象!!
  8. 指数体系与因素分析:概念、作用与种类
  9. 对话Pauly Comtois:赫斯特商业媒体中的企业DevOps采用
  10. 互联网金融网站走马观花