Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数。镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像可以用来创建Docker容器,用户可以使用设备上已有的镜像来安装多个相同的Docker容器。
每个容器都是相互隔离的、保证安全的平台。我们可以把容器看做是一个轻量级的Linux运行环境。
Docker Hub:国外的
阿里云:配置镜像加速
验证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的容器 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的容器 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的容器 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