這里寫目錄標題
- 容器
- 容器的軟件廠商
- docker
- docker引擎
- 虛擬化
- 虛擬化技術
- docker安裝詳解
- 1、安裝檢查
- 2、安裝yum相關的工具
- 3、安裝docker-ce軟件
- 4、查看docker版本
- 5、啟動docker服務
- 6、設置docker開機啟動
- 7、查看有哪些docker容器運行進程
- 8、查看容器里有哪些鏡像
- 9、下載nginx軟件
- 10、啟動一個docker容器的命令
- 11、啟動一個為sc-nginx的容器
- 12、查看防火墻的設置
- 13、防火墻nat詳解
- 14、nginx訪問測試
容器
輕量級的虛擬機,更加節省資源(cpu、內存、磁盤、帶寬等)的虛擬機。
優點:省錢、成本低、速度更加快,擴展性更加強。serverless。
容器的軟件廠商
① docker:提供容器技術的軟件;
② k8s:kubernetes是容器集群管理軟件,可以管理很多臺服務器上的docker啟動的容器。可以實現容器的分布式管理,綜合很多容器的軟件。k8s也是一個軟件,用來管理多臺服務器上的docker容器的。容器集群編排工具。
docker
docker是一個輕量級、可移植的虛擬化技術,通過容器化技術實現應用程序的打包、運輸和運行。
docker
container集裝箱一個封閉的空間,里面可以運行我們的程序。
1、集裝箱container
集裝箱:存放貨物的地方
有隔離作用:靠Linux內核來實現的。一個進程對應一個容器。
2、what a container
a standard unit of software。
1、docker的框架:一個真實的機器里面裝一個linux系統,系統里面裝docker,docker里面再裝容器,每個容器里面裝一個服務。
3、docker和容器的區別
docker都是用來管理容器的一個軟件。
docker引擎
Docker引擎是一種開源容器化技術,用于構建和容器化應用程序。Docker引擎充當客戶端-服務器應用程序,具有:
① 具有長時間運行的守護進程dockerd的服務器。
② 指定程序可用于與Docker守護程序通信和指示docker守護程序的接口的API。
③ 命令行界面(CLI)客戶端泊塢窗。
CLI使用Docker API通過腳本或直接CLI命令來控制Docker守護程序或與Docker守護程序交互。許多其他Docker應用程序使用底層API和CLI。守護程序創建和管理Docker對象,例如鏡像、容器、網絡和卷。
虛擬化
虛擬化virtualization:模擬出來的,不是物理的,算真的。
容器技術:container,存放東西的地方。容納別的東西的器皿。
docker,containerd,k8s等。
虛擬化技術
VMware:workstation :入門級的產品
docker:容器技術的經典代表。
CNF 云原生基金會:Google Redhat ibm等:K8S(kubernetes):containerd(容器運行時軟件)
docker是容器運行時軟件----容器軟件
k8s是管理容器運行時的軟件(docker、containerd、rki等)—k8s理解為管理docker集群的軟件。
k8s是建立再docker上的。
docker和k8s都是使用go語言開發的
只要是與k8s相關的技術都叫云原生相關的技術,容器理解為一個虛擬機,虛擬機是不是運行軟件?
docker安裝詳解
安裝具體流程可以參考之前的文章,這里做個大概的安裝流程介紹:
docker安裝詳細教程
1、安裝檢查
卸載原來安裝過的docker,如果沒有安裝的就不用進行卸載
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
2、安裝yum相關的工具
下載docker-ce.repo文件
yum install -y yum-utils
yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
下載docker-ce.repo文件做個文件存在/etc/yum.repo.d
3、安裝docker-ce軟件
container engine:容器引擎
docker是一個容器管理的軟件
docker-ce:是服務器端軟件 server
docker-ce-cli:是客戶端軟件 client
docker-compose-plugin
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
4、查看docker版本
docker --version
[root@sc-master shell]# docker --version
Docker version 20.10.17, build 100c701
5、啟動docker服務
systemctl start docker
systemctl start docker
6、設置docker開機啟動
systemctl enable docker
systemctl enable docker
1個docker 啟動的每一個容器的背后就是一個linux進程
7、查看有哪些docker容器運行進程
docker ps
[root@sc-master shell]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
8、查看容器里有哪些鏡像
docker images --images 鏡像,鏡像里面包含了我們需要的軟件的代碼和基礎環境。
[root@sc-master shell]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 11 months ago 13.3kB
9、下載nginx軟件
docker pull nginx
[root@sc-master shell]# docker images 查看nginx鏡像軟件
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 2b7d6430f78d 2 days ago 142MB
hello-world latest feb5d9fea6a5 11 months ago 13.3kB
10、啟動一個docker容器的命令
docker run
啟動一個容器,可以理解為開啟一臺虛擬機,相當于將nginx放入容器中進行運行,這樣就可以限制其他的cpu資源。
11、啟動一個為sc-nginx的容器
docker run -d -p 8090:80 --name sc-nginx nginx
[root@sc-master shell]# docker run -d -p 8090:80 --name sc-nginx nginx
1d3e0fdfaf8f971523ce5b539dda1c6c8c609c8e88c29361ed77e2f778e376e0
注解:
-d:在后臺運行demo 、daemon守護進程
-p 8090:80 指定端口映射 DNAT:訪問本機的8090端口,轉發到docker容器的80端口。
–name sc-nginx 指定容器的名字為:sc-nginx
nginx是鏡像的名字
12、查看防火墻的設置
iptables -t nat -L
[root@sc-master shell]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DOCKER all -- anywhere anywhere ADDRTYPE match dst-type LOCAL
DNAT tcp -- anywhere anywhere tcp dpt:8090 to:172.17.0.2:80
查看容器啟動的進程:
[root@sc-master shell]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1d3e0fdfaf8f nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 0.0.0.0:8090->80/tcp, :::8090->80/tcp sc-nginx
13、防火墻nat詳解
圖片理解:使用了nat功能,用戶要去訪問:
docker0:是宿主機與其他容器之間進行通信的網關,也就是lan口。
14、nginx訪問測試
然后去客戶機上能否訪問,訪問宿主機的8090端口,去瀏覽器上輸入:http://宿主機ip地址:8090/
我的是:http://192.168.2.152:8090/
如果因為鏡像沒有訪問到的話,可以先關閉防火墻和重啟docker服務進行解決,如果重啟docker服務的話,可能會導致之前的鏡像停止,所以先查看所有的容器,包括停止的,然后再啟動已經停止的容器。
1、關閉防火墻:
service firewalld stop
2、重啟docker服務
service docker restart
3、查看所有的容器,包括已經停止的
docker ps -a
4、啟動已經停止的容器
docker start sc-nginx
5、再查看是否已經啟動成功
docker ps