Docker
-
? 學習目標:
· 掌握Docker基礎知識,能夠理解Docker鏡像與容器的概念
· 完成Docker安裝與啟動
· 掌握Docker鏡像與容器相關命令
· 掌握Tomcat Nginx 等軟體的常用應用的安裝
· 掌握docker遷移與備份相關命令
· 能夠運用Dockerfile撰寫創建容器的腳本
? 能夠搭建與使用docker私有倉庫
?
? 鯨魚背上有集裝箱 ,
? 在大海里面---------宿主機系統Window10
? 鯨魚 --------docker
? 集裝箱 ---------容器實體 來自 我們的鏡像模板.
一 Docker簡介
1. 什么是虛擬化
? 將一臺計算機虛擬出多個邏輯計算機,每個邏輯計算機可運行不同的作業系統
? 應用程式相互獨立不受影響
2. Docker是什么?
? Docker是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的、可移植的、自給自足的容器,基于Go語言實作的云開源專案 也就是通過對應用組件的封裝, 分發, 部署, 運行 等生命周期 , 的管理 ,使用戶的App (可以是一個WEB應用或資料庫應用等)及其 運行環境能夠做到 " 一次封裝, 到處運行 "
解決了運行環境和配置問題軟體容器 , 方便做持續集成并有助于整體發布的容器虛擬化技術
3. Docker通常用于如下場景:
- web應用的自動化打包和發布;
- 自動化測驗和持續集成、發布;
- 在服務型環境中部署和調整資料庫或其他的后臺應用;
- 從頭編譯或者擴展現有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環境,
4. Docker的基本組成
? ①docker鏡像 (就像千層餅)
? 就是一個只讀的模板 . 鏡像可以用來創建Docker容器 , 一個鏡像可以創建很多個容器
? 
? ② docker容器
? ![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hDkVy4Ng-1627126926368)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626871712903.png)]](https://img.uj5u.com/2021/07/27/250283270909242.png)
? ③鏡像倉庫
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-wWlideMO-1627126926370)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626871772620.png)]](https://img.uj5u.com/2021/07/27/250283270909243.png)
總結
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eHVnJnyY-1627126926372)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1626871670782.png)]](https://img.uj5u.com/2021/07/27/250283270909244.png)
二 常用命令
1. 幫助命令
? docker version : 顯示 Docker 版本資訊
? docker info : 顯示 Docker 系統資訊,包括鏡像和容器數
? docker help : 幫助檔案
2.鏡像命令
①docker images 列出本地主機上的鏡像模板
OPTIONS :
docker images -a 列出本地所有鏡像(含中間映像層)
docker images -q 只顯示鏡像 ID
docker images --digests 顯示鏡像摘要資訊
docker images --no-trunc 顯示完整的鏡資訊
② search 就是去 Github上查找有哪些鏡像
? docker search 某個鏡像名字 . 比如 : docker search tomcat
docker search -s 30 tomcat : 查找點贊數超過30的tomcat
docker search -s 30 --no-trunc tomcat 顯示完整的鏡像描述
③ docker pull 下載鏡像
docker pull 某個鏡像名字 比如 : docker pull tomcat
④ docker rmi 洗掉鏡像
docker rmi rmi -f鏡像ID : 洗掉單個
docker rmi rmi -f鏡像名1 鏡像名2 :洗掉多個 比如: docker rmi rmi -f tomcat nginx
docker rmi rmi -f${docker images -qa} : 洗掉全部
3.容器相關命令
①查看運行的容器
docker ps 查看正在運行的容器
docker ps -a 查看所有容器
docker ps –l 查看最后一次運行的容器
docker ps -f status=exited 查看停止的容器
②互動式方式創建容器(前臺)
docker run -it --name=mycentos centos /bin/bash
# docker run:表示創建容器
# -it:表示運行容器并進入它的命令列
# --name=mycentos:給當前的容器命名
# centos: 使用該鏡像創建
# /bin/bash:放在鏡像名后的是命令,這里我們希望有個互動式 Shell,因此用的是 /bin/bash
執行之后我們可以把每個容器都看成一個小電腦或者服務器
③退出當前容器
exit
退出之后,容器也退出了,沒有洗掉
④創建后臺容器(守護式方式創建容器 后臺)
docker run -id --name=mycentos2 centos
docker exec -it mycentos2 /bin/bash
退出之后容器沒有退出
⑤啟動與停止容器
docker start mycentos2
docker stop mycentos2
4. 檔案拷貝
概念:把作業系統里面的檔案拷貝到容器當中
命令:
linux作業系統到容器
docker cp 需要拷貝的檔案或目錄 容器名稱:容器目錄
touch a.txt
例如: docker cp a.txt mycentos2:/usr/local/
進入到容器當中
docker exec -it mycentos2 /bin/bash
看容器中有哪些檔案
cd /usr/local ls
容器到作業系統(需要退出容器)
docker cp 容器名稱:容器目錄 需要拷貝的檔案或目錄
例如: docker cp mycentos2:/usr/local/a.txt ./
5.目錄掛載
概念:將宿主機的目錄與容器內的目錄進行映射(共享)
命令:
宿主機目錄:容器目錄
docker run -id --name=mycentos3 -v /usr/local/mydata:/usr/local/mydata centos
進入cd /usr/local/mydata
touch b.txt
vim b.txt 編輯內容
進入容器看看內容
docker exec -it mycentos3 /bin/bash
cd /usr/local/mydata
ls
cat b.txt
exit
查看容器IP地址
docker inspect mycentos3
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos3
洗掉容器
docker stop mycentos3
docker rm mycentos3
docker rmi 6f5604be75c1
三 應用部署
1.mysql部署
拉取mysql鏡像: docker pull centos/mysql-57-centos7
創建容器
docker run -di --name=容器名字 -p 宿主機埠:容器埠 -e MYSQL_ROOT_PASSWORD=mysql密碼 鏡像名稱
docker run -di --name=mysql88 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123 centos/mysql-57-centos7
利用docker ps 看是否映射成功
2.Nginx部署
拉取鏡像 : docker pull nginx
創建Nginx容器:gitlab-ctl
docker run -di --name=mynginx3 -p 82:80 nginx
docker exec -it mynginx /bin/bash
vi /etc/nginx/nginx.conf
3.redis部署
拉取鏡像 :docker pull redis
創建容器 :
docker run -di --name=myredis -p 6389:6379 redis
docker exec -it myredis /bin/bash
4.docker安裝tomcat
拉取鏡像 :docker pull tomcat
創建Nginx容器
docker run -di --name=mytomcat -p 8090:8080 tomcat
docker cp myweb.war mytomcat:/usr/local/tomcat/webapps/
https://www.cnblogs.com/yds941268778/p/12748308.html
四 遷移與備份
1.容器保存為鏡像
命令 :docker commit myredis my_redis_image
看當前系統的鏡像 :docker images
創建備份redis容器 :docker run -di --name=my_redis_image_instance -p 6399:6379 my_redis_image
可以看到一個新的容器 :docker ps
2.鏡像備份
? docker save -o my_redis_image.tar my_redis_image
3.鏡像恢復與遷移
需要先洗掉原有鏡像
docker stop my_redis_image_instance
docker rm my_redis_image_instance
docker rmi my_redis_image
docker load -i my_redis_image.tar
docker images
五 Dockerfile
1.什么是Dockerfile
? 之前我們都是用的別人的鏡像,如果我們想自己開發一個鏡像就需要用到dockerfile
? Dockerfile其實就是一個文本檔案,由一系列命令和引數構成
2.操作步驟
a.創建目錄
mkdir –p /usr/local/software/my_docker
b.上傳jdk-8u152-linux-x64.tar.gz檔案到目錄/usr/local/software/my_docker
c.創建dockerfile檔案
vim Dockerfile
參看資料里面的檔案
d.執行命令構建鏡像
docker build -t='jdk1.8' .
e.執行
docker run -it --name=myjdk jdk1.8 /bin/bash
六 Docker私有倉庫
1.拉取私有倉庫鏡像
docker pull registry
2.啟動私有倉庫容器
docker run -di --name=registry -p 5000:5000 registry
3.訪問地址
http://10.211.55.95:5000/v2/_catalog
4.創建并修改組態檔
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://8y2y8njn.mirror.aliyuncs.com"],
"insecure-registries":["10.211.55.95:5000"]
}
5.重啟docker服務
systemctl restart docker
6.標記此鏡像為私有倉庫的鏡像
docker tag redis 10.211.55.95:5000/private_redis
7.再次啟動私服容器(因為上面重啟的docker服務)
docker start registry
8.上傳標記的鏡像
docker push 10.211.55.95:5000/private_redis
9.從私有倉庫拉取鏡像(在另外一臺機器上拉取)
也需要配置vim /etc/docker/daemon.json 這個檔案
{
"registry-mirrors": ["https://8y2y8njn.mirror.aliyuncs.com"],
"insecure-registries":["10.211.55.95:5000"]
}
需要重啟另外一臺服務器
systemctl restart docker
docker pull 10.211.55.95:5000/private_redis
docker images
docker push 10.211.55.95:5000/private_redis
9.從私有倉庫拉取鏡像(在另外一臺機器上拉取)
也需要配置vim /etc/docker/daemon.json 這個檔案
{
“registry-mirrors”: [“https://8y2y8njn.mirror.aliyuncs.com”],
“insecure-registries”:[“10.211.55.95:5000”]
}
需要重啟另外一臺服務器
systemctl restart docker
docker pull 10.211.55.95:5000/private_redis
docker images
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290386.html
標籤:其他
上一篇:這么詳細?拿去吧你! ssh + vmtools + net-tools + vim 虛擬機基礎環境配置 超詳細安裝教程/介紹 Ubuntu18.04 SDN軟體定義網路實驗
下一篇:csrf&ssrf漏洞詳解
