一、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