虛擬機(VM)與容器對比(docker)
-
1.容器秒級啓動,虛擬機分鐘級
-
2.容器磁盤一般使用爲MB,虛擬機一般爲GB
-
3.容器性能接近原生,虛擬機弱於原生
-
4.系統支持量:單機支持上千個容器,單機一般支持幾十個虛擬機
-
docker整體是一個CS架構
- 客戶端發起命令到引擎,引擎解析命令再從docker hub(鏡像倉庫)上面拉取鏡像
-
拉取鏡像比較慢,就可以配置鏡像加速器
- 可以通過阿里雲的容器鏡像服務裏面的鏡像加速器進行配置
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
- 可以通過阿里雲的容器鏡像服務裏面的鏡像加速器進行配置
docker常用命令
-
1.查看docker運行狀態
systemctl status docker
-
2.停止docker
systemctl stop docker
-
3.重啓docker
systemctl restart docker
-
4.列出鏡像
docker images
-
5.拉取centos鏡像
docker pull centos
-
6.查看docker鏡像
docker search 鏡像名字
-
7.刪除鏡像
docker rm 鏡像名稱/鏡像id(刪除多個就直接空格後面加上就可以了)
-
8.創建一個交互式容器(創建之後就直接進去了容器,退出容器後容器就直接退出了)
docker run -i -t --name=c1 centos /bin/bash
或者docker run -it --name c1 centos /bin/bash
- -i:交互式容器
- -t:tty終端(分配一個終端,操作容器)
- -name:指定容器的名稱(唯一,不能重複 )
-
9.創建一個守護式容器(後臺運行且創建後不直接進入容器,且進入容器退出容器後容器不停止c3爲容器名)
docker run -itd --name c3 centos /bin/bash
- 進入守護式容器
docker exec -it c3 /bin/bash
- 進入守護式容器
-
10.查看正在運行的容器
- 1.查看正在運行的容器
docker ps
- 2.查看歷史容器,所有容器
docker ps -a
- 3.查看最後一次運行的容器
docker ps -l
- 1.查看正在運行的容器
-
11.停止容器
- 1.停止容器
docker stop 容器名
- 2.運行容器
docker start 容器名
- 1.停止容器
-
12.查看容器的詳細信息
docker inspect 容器名(會列出一大串的json文件,包含這個容器的詳細信息)
-
13.刪除容器(不能刪除正在運行的容器)
docker rm 容器名
- 刪除所有容器
docker rm `docker ps -a -q`
- 刪除所有容器
-
14.查看容器日誌
docker logs 容器名稱/id
-
15.文件拷貝
- 1.從宿主機拷貝到容器目錄
docker cp 文件名 容器名:/root(容器目錄)
- 2.從容器拷貝到宿主機
docker cp 容器名:/容器裏面到文件路徑+文件名 宿主機到目錄
- 1.從宿主機拷貝到容器目錄
-
16.容器的目錄掛載(在啓動容器的時候進行目錄掛載)
docker run -itd --name 容器名 -v 宿主機目錄:容器內目錄 centos /bin/bash
-
17.查看命令的用法
docker commit --help
docker鏡像製作的兩種方式
-
1.使用docker commit命令
-
2.使用docker build和Dockerfile文件
-
18.使用docker commit製作鏡像
docker commit 原鏡像名 新鏡像名
-
19.端口映射並執行容器內的腳本
docker run -itd --name=t1(容器名) -p 8888(宿主機的端口):8080(容器內的端口) 容器鏡像名 /bin/bash
docker exec 容器名 /usr/local/startup.sh
-
20.鏡像打包-導入鏡像
- 1.鏡像打包
docker save -o /root/tomcat.tar(保存的目錄與鏡像打包後的名字) mytomcat(本地鏡像名字)
- 2.導入鏡像
docker load -i /root/tomcat.tar(鏡像打包後的名字)
- 1.鏡像打包
-
21.容器打包
- 1.容器打包
docker export -o /root/t1.tar t1(容器名)
- 2.導入容器
docker import t1.tar(打包的容器文件) mytomcat:latest(容器名字與tag)
Dockerfile
- 使用DSL語法
1.構建命令(在rw_test目錄下構建鏡像)
docker build -t 鏡像名字 --rm=true
- -t表示選擇指定生成鏡像的用戶名,倉庫名和tag
- –rm=true 表示指定在生成鏡像過程中刪除中間產生的臨時容器
docker倉庫
- 1.先註冊docker hub的賬號(https://hub.docker.com)
- 2.在裏面創建一個新的倉庫(Create Repository)
- 3.設置鏡像標籤
- local-image:tagname(本地鏡像) - new-repo:tagname(倉庫id:tag名稱) - 4.本地登錄docker hub - docker login - 5.推送鏡像 ```docker push new-repo:tagname```
- 1.容器打包
docker網絡管理
-
默認網絡
- 查看docker網絡
docker network ls
- Docker中默認的三種網絡分別爲bridge,host和none,其中名爲bridge的網絡就是默認的bridge驅動網絡,也是容器創建時默認的網絡管理方式,配置後可以與宿主機通信從而實現與互聯網通信功能,而host和none屬於無網絡,容器添加這兩個網絡時不能與外界網絡通信。
- 以上三種網絡bridge,host和none都是在非集羣下Docker提供的默認網絡,而在Docker Swarm集羣環境下,除了這三種默認網絡外,Docker還提供了docker_gwbridge和ingress兩種默認網絡
- 查看容器使用的網絡情況:
docker network inspect bridge
- 查看docker網絡
-
創建一個使用自定義的isolated_nw網絡(需要預先創建)的容器
- 1.創建名爲isolated_nw的網絡
docker network create --driver bridge isolated_nw
- 2.創建一個c3的容器並且網絡爲自定義網絡
docker run --network=isolated_nw -itd --name=c3 busybox
- 1.創建名爲isolated_nw的網絡
-
爲容器2新增一個自定義的isolated_nw網絡連接
docker network connect isolated_nw c2
-
如果兩個容器的網絡不一致就不能夠通信
Docker swarm集羣
- 創建docker swarm
- 1.在manager1機器上創建docker swarm集羣
docker swarm init --advertise-addr 192.168.200.162
(–advertise-addr將該IP地址的機器設置爲集羣管理節點;如果是單節點,無需該參數) - 2.查看管理節點集羣信息
docker node ls
- 3.向docker swarm中添加工作節點:在兩個工作節點中分別執行如下命令,ip地址是manager節點的
docker swarm join --token xxx 192.168.200.138:2377 (worker1)
docker swarm join --token xxx 192.168.200.138:2377 (worker2)
- (–token xxx:向指定集羣中加入工作節點的認證信息,xxx認證信息是在創建docker swarm時產生的)
- 1.在manager1機器上創建docker swarm集羣