一、docker的三个重要概念

1、镜像:打包项目带上环境,即镜像

Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数。镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像可以用来创建Docker容器,用户可以使用设备上已有的镜像来安装多个相同的Docker容器。

2、容器:镜像创建的运行实例,Docker利用容器来运行应用

每个容器都是相互隔离的、保证安全的平台。我们可以把容器看做是一个轻量级的Linux运行环境。

3、仓库:存放镜像(文件)的地方,分为共有仓库和私有仓库

Docker Hub:国外的

阿里云:配置镜像加速

二、通过命令验证docker容器相当一个轻量级的Linux运行环境,且每个容器内都有一个属于自己的文件系统,容器之间相互隔离

  • 了解docker的镜像命令、容器命令后,回来理解容器概念特性就非常容易了。

验证1: docker容器相当一个轻量级的Linux运行环境

可以看到,分别在centos容器、tomcat容器、nginx容器内部查看了系统的版本信息, 发现他们底层系统都是Linux ,通过命令,观察他们的版本信息,发现他们的系统版本,可以是不一样的,可以是linux发行版的RedHat系列(centos),也可以是linux发行版的Debian系列(debian)

验证2: 容器的特性是相互隔离,各自运行各自的程序,各自有各自的环境。每个容器内都有一个属于自己的文件系统,互不影响

通过 命令ls ,分别在centos容器、tomcat容器、nginx容器内部查看到他们 有属于自己的文件系统,都是不同的。

通过命令ip,分别在centos容器、tomcat容器、nginx容器内部查看到,在centos系统可以直接得到ip信息,而一开始tomcat、nginx容器内部,都是ip命令找不到,后来,咱通过给tomcat容器修改一下apt源的镜像,并更新一下命令,然后安装iproute2(没给nginx容器安装iproute2命令)的情况下,分别在tomcat、nginx容器内部查看ip命令,发现只有tomcat 容器可以正常使用ip命令。 由此,证明了容器隔离的特性

centos 容器

# 创建centos的容器
docker pull centos
docker run -it --name centos01 centos /bin/bash
# ———————————————————————————————————————— ls 命令查看目录信息————————————————————————————————————
[root@dfd0ef52fc43 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
# -----------------------------------这个时候,查看系统的版本信息---------------------------------
[root@dfd0ef52fc43 /]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
[root@dfd0ef52fc43 /]# cat /etc/redhat-release
CentOS Linux release 8.4.2105
# ========================================使用命令 ip =====================================
[root@eed52d253e26 /]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
12: eth0@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever

tomcat 容器

# 创建tomcat的容器
docker pull tomcat:9.0
docker run -it --name tomcat01 tomcat:9.0 /bin/bash
# ———————————————————————————————————————— ls 命令查看目录信息————————————————————————————————————
root@f1cfb81dedfd:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
# -----------------------------------这个时候,查看系统的版本信息---------------------------------
root@f1cfb81dedfd:/usr/local/tomcat# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@f1cfb81dedfd:/usr/local/tomcat# cat /etc/debian_version
11.2
# ========================================使用命令 ip =====================================
root@f1cfb81dedfd:/usr/local/tomcat# ip a
bash: ip: command not found
# ~~~~~~~~~~~~~~~~~~~~~~~~ 给tomcat容器修改一下apt源的镜像,并更新一下命令,然后安装iproute2~~~~~~~~~~~~~~~~~~
# 修改apt下的sources.list
# 先备份,可以选择创建一个文件夹,然后拷贝一份放进去
root@f1cfb81dedfd:/etc/apt# mkdir cat sources.list.backup
root@f1cfb81dedfd:/etc/apt# cp sources.list ./sources.list.backup
root@f1cfb81dedfd:/etc/apt/sources.list.backup# cd ../
# 使用命令 echo 覆盖+追加方式
deb https://mirrors.aliyun.com/debian bullseye main
deb https://mirrors.aliyun.com/debian-security bullseye-security main
deb https://mirrors.aliyun.com/debian bullseye-updates main
# 执行一下更新命令:
apt-get update -y
# 执行下载 iproute2命令:
apt install -y iproute2 # 再次执行ip 命令
root@f1cfb81dedfd:/usr/local/tomcat# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever

nginx 容器

# 创建nginx的容器
docker pull nginx
docker run -it --name nginx01 nginx /bin/bash
# ———————————————————————————————————————— ls 命令查看目录信息————————————————————————————————————
root@7b002c0ac35e:/# ls
bin dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var
boot docker-entrypoint.d etc lib media opt root sbin sys usr
# -----------------------------------这个时候,查看系统的版本信息---------------------------------
root@7b002c0ac35e:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@7b002c0ac35e:/# cat /etc/debian_version
11.2
# ========================================使用命令 ip =====================================
root@f4cc7c858a88:/# ip a
bash: ip: command not found
# ~~~~~~ 在给tomcat容器修改一下apt源的镜像,并更新一下命令,然后安装iproute2(没给nginx容器安装iproute2命令哦),查看ip命令~~~~~~
root@f4cc7c858a88:/# ip a
bash: ip: command not found

通过命令验证docker容器相当一个轻量级的Linux运行环境,且每个容器内都有一个属于自己的文件系统,容器之间相互隔离的更多相关文章

  1. 尝试自己搭一个简单的typescript运行环境

    开发typescript项目有一些现成的脚手架,比如:typescript-library-starter,它的配置齐全,更适合用在实际项目开发上.其实在学习阶段可以自己搭建一个简单的typescri ...

  2. 通过Jetty搭建一个简单的Servlet运行环境

    最近在做一些简单的Servlet开发的时候,感觉每次调试的时候都要发布到tomcat上很麻烦,把程序共享给同事也很麻烦,需要帮他设置本地的tomcat环境. 在网上找了找其他的Servlet运行环境, ...

  3. 服务 {49A27252-A326-4EF1-B698-6EBC7068833C} 的计时器作业 id {573BE459-DF82-481C-84BD-CA14D287450B} 配置刷新的上一个实例仍在运行,因此将跳过当前的实例。请考虑增加作业之间的时间间隔。

    在SharePoint2007的错误日志中发现大量如下错误: 07/02/2013 16:17:25.99     OWSTIMER.EXE (0x0958)     0x097C    Window ...

  4. 基于Netty和SpringBoot实现一个轻量级RPC框架-Server篇

    前提 前置文章: Github Page:<基于Netty和SpringBoot实现一个轻量级RPC框架-协议篇> Coding Page:<基于Netty和SpringBoot实现 ...

  5. 使用 Docker 搭建 Java Web 运行环境

    黄勇的博客 Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐 ...

  6. 转:使用 Docker 搭建 Java Web 运行环境

    原文来自于:http://www.codeceo.com/article/docker-java-web-runtime.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都 ...

  7. 使用 Docker 搭建 Java Web 运行环境(转)

    原文 http://www.importnew.com/21798.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几 ...

  8. Elite Container DELPHI下的一个轻量级IoC对象容器

    一.简介: Elite Container是DELPHI下的一个轻量级IoC对象容器(IoC:Inverse of Control,反转控制).它是参考了Java中的Spring框架(主要是配置文件的 ...

  9. 理解Docker(3):Docker 使用 Linux namespace 隔离容器的运行环境

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

随机推荐

  1. Java线程池七个参数详解

    Java多线程开发时,常常用到线程池技术,这篇文章是对创建java线程池时的七个参数的详细解释. 从源码中可以看出,线程池的构造函数有7个参数,分别是corePoolSize.maximumPoolS ...

  2. DWR是什么?有什么作用?

    DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站. 它可以允许在浏览器里的代码使用运行 ...

  3. Spring Boot 的配置文件有哪几种格式?它们有什么区别?

    .properties 和 .yml,它们的区别主要是书写格式不同.    1).properties    app.user.name = javastack    2).yml    app:   ...

  4. Linux上如何设置nginx开机启动

    连接上linux后输入以下命令--vim /etc/init.d/nginx 然后在这个空文件写入下面内容: 保存好后,修改下该文件权限--chmod 777 /etc/init.d/nginx 然后 ...

  5. Constant Pool和String Constant Pool详解

    Constant Pool常量池的概念: 在讲到String的一些特殊情况时,总会提到String Pool或者Constant Pool,但是我想很多人都不太明白Constant Pool到底是个怎 ...

  6. zookeeper 负载均衡和 nginx 负载均衡区别?

    zk 的负载均衡是可以调控,nginx 只是能调权重,其他需要可控的都需要自己写插件:但是 nginx 的吞吐量比 zk 大很多,应该说按业务选择用哪种方式.

  7. vue 3d轮播组件 vue-carousel-3d

    开发可视化项目时,需要3d轮播图,找来找去发现这个组件,引用简单,最后实现效果还不错.发现关于这个组件,能搜到的教程不多,就分享一下我的经验. 插件github地址:https://wlada.git ...

  8. scanf()函数的原理

    最近使用scanf发现了自己对scanf函数还是不太了解,主要出现在无意中出现的一个错误: scanf正确的写法是,scanf中以什么格式输入变量,则变量的类型就应该是什么格式,如下面scanf输入到 ...

  9. uView的DatetimePicker详解

    uView UI号称: 是全面兼容nvue的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水 亲身感受,用起来真的坑太多, 官方文档太简洁, 很多配置都没说明也没代码, 上百度查 ...

  10. JavaScript实现表单的校验以及匹配正则表达式

    运行效果: 未填写信息报错: 匹配正则表达式: 信息校验无误: 源代码如下: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 ...