久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Python開發加薪利器之Docker的使用實踐

瀏覽:123日期:2022-06-18 08:41:57
目錄1. Docker概述1.1 虛擬機技術VS容器化技術1.2 名詞概念2. Docker安裝2.1 環境查看2.2 卸載舊的版本2.3 安裝必要的包2.4 添加GPG密鑰2.6 安裝Docker引擎2.7 添加當前用戶到 docker 用戶組2.9 配置阿里云鏡像加速3. Docker run 運行流程圖4. Docker工作原理5. Docker常見命令5.1 幫助命令5.2 鏡像命令5.3 容器命令5.4 常見其他命令6. 實戰6.1 部署Nginx6.2 端口暴露(端口轉發)6.3 部署Elasticsearch6.4 可視化 Portainer7. Docker鏡像講解7.1 鏡像是什么7.2 Docker鏡像加載原理7.3 分層理解7.4 commit鏡像總結:8. 容器數據卷8.1 容器數據卷是什么8.2 使用數據卷8.3 實戰:安裝MySQL8.4 匿名掛載和具名掛載1. Docker概述 Docker為什么火,因為十分的輕巧。 Docker是基于Go語言開發的。1.1 虛擬機技術VS容器化技術

虛擬機技術:

資源占用 多冗余步驟多 啟動慢

容器化技術:容器化技術不是模擬一個完整的操作系統。

1.2 名詞概念

鏡像(image)

docker鏡像好比是一個模版,可以通過這個模版來創建容器服務,mysql鏡像==>run==>mysql01容器(提供服務),通過這個鏡像可以創建多個容器。

容器(container)

docker利用容器技術,獨立運行一個或者一組應用。通過鏡像來創建的。

基本命令有啟動、停止、刪除等。

目前可以把容器理解為就是一個簡易的Linux系統。

倉庫(repository)

倉庫就是存放鏡像的地方。倉庫分為公有倉庫和私有倉庫。默認是國外的倉庫(DockerHub),國內有阿里云等(配置鏡像加速)

2. Docker安裝2.1 環境查看

2.1.1 查看內核版本

uname -r

Python開發加薪利器之Docker的使用實踐

2.1.2 查看系統信息

sudo cat /etc/os-release

Python開發加薪利器之Docker的使用實踐

2.2 卸載舊的版本

sudo apt-get remove docker docker-engine docker.io containerd runc

2.3 安裝必要的包

2.3.1 更新apt程序包索引

sudo apt-get update

2.3.2 安裝必要的包

sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release2.4 添加GPG密鑰

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

上面是官網提供的,但是速度很慢,建議使用阿里云的GPG Key。

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

2.5 添加穩定Docker-ce軟件源

echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable' | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

上面是官網提供的,但是速度很慢,建議使用阿里云提供的。

sudo add-apt-repository 'deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable'

注意:添加錯了可以用以下命令刪除

#查詢keyid,下圖sudo apt-key list#keyid 就是9DC8那一串sudo apt-key del <keyid>#加參數-r可以移除sudo add-apt-repository -r 'deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable'

Python開發加薪利器之Docker的使用實踐

2.6 安裝Docker引擎

2.6.1 安裝apt包索引

這樣就可以安裝Docker Engine和containerd的最新版本

sudo apt-get update

2.6.2 安裝

sudo apt-get install docker-ce docker-ce-cli containerd.io

如果要安裝指定版本的Docker引擎,在repo中列出可用版本,然后選擇安裝

apt-cache madison docker-ce

Python開發加薪利器之Docker的使用實踐

sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io2.7 添加當前用戶到 docker 用戶組

添加后,以后就可以不用 sudo 運行 docker 了。

將當前用戶添加到 docker 組

sudo gpasswd -a ${USER} docker

重新登錄或者用以下命令切換到docker組(建議重啟Ubuntu)

newgrp - docker

重啟docker服務

sudo service docker restart

不加sudo直接執行docker命令檢查效果

docker ps

2.8 測試是否安裝成功

首先啟動Docker

systemctl start docker

查看Docker版本來判斷是否安裝成功

docker version

Python開發加薪利器之Docker的使用實踐

2.9 配置阿里云鏡像加速

sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-’EOF’{ 'registry-mirrors': ['https://eko3tl65.mirror.aliyuncs.com']}EOFsudo systemctl daemon-reloadsudo systemctl restart docker3. Docker run 運行流程圖

Python開發加薪利器之Docker的使用實踐

4. Docker工作原理

Docker是一個Client·Server結構的系統,Docker的守護進程運行在主機上,通過Socket從客戶端訪問,DockerServer接受到DockerClient的指令,就會去執行這個指令。

Python開發加薪利器之Docker的使用實踐

5. Docker常見命令5.1 幫助命令

# 顯示docker的版本信息docker version# 顯示docker的系統信息 包括鏡像和容器的數量docker info# 幫助命令docker 命令 --help

幫助文檔地址:官方文檔

5.2 鏡像命令

5.2.1 docker images

查看所有本地的主機上的鏡像

malulu@malulu:~/桌面$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx latest 519e12e2a84a 4 days ago 133MBhello-world latest d1165f221234 5 weeks ago 13.3kB# 解釋REPOSITORY鏡像的倉庫源TAG鏡像的標簽IMAGE ID鏡像的IDCREATED鏡像的創建時間SIZE鏡像的大小# 可選項 -a, --all # 列出所有鏡像 -q, --quiet # 只顯示鏡像的ID

5.2.2 docker search

搜索鏡像

Python開發加薪利器之Docker的使用實踐

# 可選項--filter=STARS=3000# 搜索出來的鏡像就是STARS大于3000的

Python開發加薪利器之Docker的使用實踐

5.2.3 docker pull

下載鏡像

# 下載鏡像docker pull 鏡像名[:tag]malulu@malulu:~/桌面$ docker pull mysqlUsing default tag: latest# 如果不寫tag(版本) 默認就是latestlatest: Pulling from library/mysqlf7ec5a41d630: Already exists# 分層下載 docker image的核心 聯合文件系統 9444bb562699: Pull complete 6a4207b96940: Pull complete 181cefd361ce: Pull complete 8a2090759d8a: Pull complete 15f235e0d7ee: Pull complete d870539cd9db: Pull complete 5726073179b6: Pull complete eadfac8b2520: Pull complete f5936a8c3f2b: Pull complete cca8ee89e625: Pull complete 6c79df02586a: Pull complete Digest: sha256:6e0014cdd88092545557dee5e9eb7e1a3c84c9a14ad2418d5f2231e930967a38# 簽名Status: Downloaded newer image for mysql:latestdocker.io/library/mysql:latest# 真實地址# 下面兩條命令等價docker pull mysqldocker pull docker.io/library/mysql:latest# 指定版本下載 必須在倉庫有這個版本malulu@malulu:~/桌面$ docker pull mysql:5.75.7: Pulling from library/mysqlf7ec5a41d630: Already exists 9444bb562699: Already exists 6a4207b96940: Already exists 181cefd361ce: Already exists 8a2090759d8a: Already exists 15f235e0d7ee: Already exists d870539cd9db: Already exists 7310c448ab4f: Pull complete 4a72aac2e800: Pull complete b1ab932f17c4: Pull complete 1a985de740ee: Pull complete Digest: sha256:e42a18d0bd0aa746a734a49cbbcc079ccdf6681c474a238d38e79dc0884e0eccStatus: Downloaded newer image for mysql:5.7docker.io/library/mysql:5.7

5.2.4 docker rmi

刪除鏡像

# 刪除指定的鏡像docker rmi -f 鏡像ID# 刪除多個鏡像docker rmi -f 鏡像ID 鏡像ID 鏡像ID 鏡像ID # 刪除全部鏡像docker rmi -f $(docker images -aq)5.3 容器命令

說明:我們有了鏡像才可以創建容器。

這里下載一個centos鏡像來測試學習。

docker pull centos

5.3.1 新建容器并啟動

docker run [可選參數] image# 參數說明--name='Name'# 容器名字 mysql01 mysql02 用來區分容器-d# 后臺方式運行-it# 使用交互方式運行(需要提供一個控制臺) 進入容器查看內容-p# 指定容器的端口 -p 8080:8080-p ip:主機端口:容器端口-p 主機端口:容器端口 (常用)-p 容器端口容器端口-P# 隨機指定端口# 測試# 啟動并進入容器malulu@malulu:~/桌面$ docker run -it centos /bin/bash[root@a8d9ce9627a4 /]# ls# 查看容器內的centos 基礎鏡像 很多命令都是不完善的bin etc lib lost+found mnt proc run srv tmp vardev home lib64 media opt root sbin sys usr# 從容器中退回主機[root@a8d9ce9627a4 /]# exitexitmalulu@malulu:~/桌面$

5.3.2 列出所有的運行的容器

# 列出當前正在運行的容器docker ps# 可選項-a# 列出當前正在運行的容器 + 歷史運行過的容器-n=?# 顯示最近創建的n個容器-q# 只顯示容器的編號

Python開發加薪利器之Docker的使用實踐

5.3.3 退出容器

exit# 直接停止容器并退出ctrl+P+Q# 容器不停止退出

Python開發加薪利器之Docker的使用實踐

5.3.4 刪除容器

# 刪除指定的容器 不能刪除正在運行的容器 強制刪除用rm -fdocker rm 容器ID# 刪除所有的容器# 方式一 常用docker rm -f $(docker ps -aq)# 方式二docker ps -a -q|xargs docker rm

5.3.5 啟動和停止容器的操作

docker start 容器ID# 啟動容器docker restart 容器ID# 重啟容器docker stop 容器ID# 停止當前正在運行的容器docker kill 容器ID# 強制刪除當前容器5.4 常見其他命令

5.4.1 后臺啟動容器

# 后臺啟動容器docker run -d 鏡像名# 比如 后臺啟動centosdocker run -d centos# 問題 docker ps 時 發現 centos 停止了# 常見的坑:docker容器使用后臺運行,就必須要有一個前臺進程,docker發現沒有應用,就會自動停止# 比如nginx,容器啟動后,發現自己沒有提供服務,就會立刻停止,就是沒有程序了

Python開發加薪利器之Docker的使用實踐

5.4.2 查看日志

docker logs -f -t --tail number 容器ID# 可選項 -tf# 顯示日志 --tail number# 要顯示日志條數# 自己編寫一段shell腳本docker run -d centos /bin/sh -c 'while true;do echo 666;sleep 1;done'

Python開發加薪利器之Docker的使用實踐

5.4.3 查看容器中進程信息

docker top 容器ID

Python開發加薪利器之Docker的使用實踐

5.4.4 查看鏡像的元數據

docker inspect 容器ID

Python開發加薪利器之Docker的使用實踐

5.4.5 進入當前正在運行的容器

我們通常容器都是使用后臺方式運行的,有時需要進入容器,修改一些配置

# 方式一# 命令docker exec -it 容器ID bashShell# 測試malulu@malulu:~/桌面$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES9ff3b9c7ebd5 centos '/bin/sh -c ’while t…' 8 seconds ago Up 6 seconds lucid_wrightmalulu@malulu:~/桌面$ docker exec -it 9ff3b9c7ebd5 /bin/bash[root@9ff3b9c7ebd5 /]# lsbin etc lib lost+found mnt proc run srv tmp vardev home lib64 media opt root sbin sys usr[root@9ff3b9c7ebd5 /]# # 方式二docker attach 容器ID# 測試malulu@malulu:~/桌面$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES9ff3b9c7ebd5 centos '/bin/sh -c ’while t…' 8 minutes ago Up 8 minutes lucid_wrightmalulu@malulu:~/桌面$ docker attach 9ff3b9c7ebd5666666666666666666# docker exec# 進入容器后開啟一個新的終端 可以在里面操作(常用)# docker attach# 進入容器正在執行的終端 不會啟動新的終端

5.4.6 從容器內拷貝文件到主機

注意:是從容器內拷貝到主機。

docker cp 容器Id:容器內路徑 目的的主機路徑

只要容器存在就可以,跟容器是否運行沒有關系。

拷貝是一個手動過程,后面我們使用 -V 數據卷的技術,可以實現自動同步。

Python開發加薪利器之Docker的使用實踐

5.4.5 小結

Python開發加薪利器之Docker的使用實踐

attach Attach local standard input, output, and error streams to a running containerbuild Build an image from a Dockerfilecommit Create a new image from a container’s changescp Copy files/folders between a container and the local filesystemcreate Create a new containerdiffInspect changes to files or directories on a container’s filesystemevents Get real time events from the serverexecRun a command in a running containerexport Export a container’s filesystem as a tar archivehistory Show the history of an imageimages List imagesimport Import the contents from a tarball to create a filesystem imageinfoDisplay system-wide informationinspect Return low-level information on Docker objectskillKill one or more running containersloadLoad an image from a tar archive or STDINlogin Log in to a Docker registrylogout Log out from a Docker registrylogsFetch the logs of a containerpause Pause all processes within one or more containersportList port mappings or a specific mapping for the containerps List containerspullPull an image or a repository from a registrypushPush an image or a repository to a registryrename Rename a containerrestart Restart one or more containersrm Remove one or more containersrmi Remove one or more imagesrun Run a command in a new containersaveSave one or more images to a tar archive (streamed to STDOUT by default)search Search the Docker Hub for imagesstart Start one or more stopped containersstats Display a live stream of container(s) resource usage statisticsstopStop one or more running containerstag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGEtop Display the running processes of a containerunpause Unpause all processes within one or more containersupdate Update configuration of one or more containersversion Show the Docker version informationwaitBlock until one or more containers stop, then print their exit codes6. 實戰6.1 部署Nginx

第一步:搜索鏡像,建議去DockerHub搜索,可以看到幫助文檔

https://registry.hub.docker.com/search?q=nginx&type=image

Python開發加薪利器之Docker的使用實踐

第二步:拉取鏡像

malulu@malulu:~/桌面$ docker pull nginxUsing default tag: latestlatest: Pulling from library/nginxf7ec5a41d630: Already exists aa1efa14b3bf: Pull complete b78b95af9b17: Pull complete c7d6bca2b8dc: Pull complete cf16cd8e71e0: Pull complete 0241c68333ef: Pull complete Digest: sha256:75a55d33ecc73c2a242450a9f1cc858499d468f077ea942867e662c247b5e412Status: Downloaded newer image for nginx:latestdocker.io/library/nginx:latestmalulu@malulu:~/桌面$

第三步:運行測試

# -d 后臺運行# --name 給容器命名# -p 宿主機端口:容器內部端口malulu@malulu:~/桌面$ docker run -d --name nginx01 -p 3344:80 nginx699b9cecd0a07f8db6e888722a2dada1c9b9be6d77efc7996c4b6758dd72f587malulu@malulu:~/桌面$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES699b9cecd0a0 nginx '/docker-entrypoint.…' About a minute ago Up About a minute 0.0.0.0:3344->80/tcp nginx01malulu@malulu:~/桌面$ curl localhost:3344# 進入容器malulu@malulu:~/桌面$ docker exec -it nginx01 /bin/bashroot@699b9cecd0a0:/# whereis nginxnginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginxroot@699b9cecd0a0:/# cd /etc/nginx/root@699b9cecd0a0:/etc/nginx# lsconf.dfastcgi_paramskoi-utf koi-win mime.types modules nginx.conf scgi_paramsuwsgi_params win-utfroot@699b9cecd0a0:/etc/nginx# exit

Python開發加薪利器之Docker的使用實踐

第四步:公網訪問

Python開發加薪利器之Docker的使用實踐

Python開發加薪利器之Docker的使用實踐

6.2 端口暴露(端口轉發)

Python開發加薪利器之Docker的使用實踐

6.3 部署Elasticsearch

# es 暴露的端口很多# es 十分的耗內存# es 數據一般需要放置到安全目錄 掛載docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e 'discovery.type=single-node' elasticsearch:tag

# --net somenetwork 網絡配置# 啟動 Elasticsearchdocker run -d --name elasticsearch01 -p 9200:9200 -p 9300:9300 -e 'discovery.type=single-node' elasticsearch:7.12.0# 啟動之后,服務器會特別卡# 所以需要增加內存的限制# 修改配置文件 -e 環境配置修改docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e 'discovery.type=single-node' -e ES_JAVA_OPTS='-Xms64m -Xmx512m' elasticsearch:7.12.0

# 查看CPU使用情況docker stats 容器ID

Python開發加薪利器之Docker的使用實踐

# 測試es是否安裝成功curl localhost:9200

Python開發加薪利器之Docker的使用實踐

6.4 可視化 Portainer

Docker圖形化界面管理工具,提供一個后臺面板供我們操作。

訪問測試:

http://192.168.2.143:8088http://localhost:8088

為用戶 admin 設置密碼 admin123456

登錄成功后,選擇本地Docker環境

Python開發加薪利器之Docker的使用實踐

進入之后的面板

Python開發加薪利器之Docker的使用實踐

Python開發加薪利器之Docker的使用實踐

可視化面板我們平時不會使用,用來測試玩玩。

7. Docker鏡像講解7.1 鏡像是什么

鏡像是一種輕量級、可執行的獨立軟件包,用來打包軟件運行環境和基于運行環境開發的軟件,它包含運行某個軟件所需的所有內容,包括代碼、運行所需庫、環境變量和配置文件。所有的應用,直接打包docker鏡像,就可以直接跑起來。

如何獲取到鏡像:

從遠程倉庫下載 朋友拷貝給你 自己制作一個鏡像DockerFile7.2 Docker鏡像加載原理

UnionFS(聯合文件系統)

我們下載的時候看到的一層層就是這個!Union文件系統(UnionFS)是一種分層、輕量級并且高性能的文件系統,它支持對文件系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬文件系統下(unite several directories into a single virtual filesystem)。Union文件系統是Docker鏡像的基礎。鏡像可以通過分層來進行繼承,基于基礎鏡像(沒有父鏡像),可以制作各種具體的應用鏡像。

特性:一次同時加載多個文件系統,但從外面看起來,只能看到一個文件系統,聯合加載會把各層文件系統疊加起來,這樣最終的文件系統會包含所有底層的文件和目錄。

Docker鏡像加載原理

Docker的鏡像實際上由一層層的文件系統組成,這種層級的文件系統叫做UnionFS。

系統啟動需要引導加載。

bootfs(boot file system)主要包含bootloader(加載器)和kernel(內核),bootloader主要是引導加載kernel,Linux剛啟動時會加載bootfs文件系統,在Docker鏡像的最底層是bootfs。這一層與我們典型的Linux/Unix系統是一樣的,包含boot加載器和內核。當boot加載完成之后整個內核就都在內存中了,此時內存的使用權已由bootfs轉交給內核,此時系統也會卸載bootfs。

rootfs(root file system),在bootfs之上,包含的就是典型Linux系統中的 /dev,/proc,/bin,/etc 等標準目錄和文件。rootfs就是各種不同的操作系統發行版,比如Ubuntu, Centos等等。容器就是一個小的虛擬機環境。

平時我們在虛擬機中安裝CentOs都是好幾個G,為什么在Docker里面才200多M?

Python開發加薪利器之Docker的使用實踐

對于一個精簡的OS,rootfs可以很小,只需要包含最基本的命令,工具和程序庫就可以了,因為底層直接用Host的kernel,自己只需要提供rootfs就可以了。由此可見對于不同的linux發行版,bootfs基本是一致的,rootfs會有差別,因此不同的發行版可以公用bootfs。

所以說,虛擬機是分鐘級別,容器是秒級別。是因為啟動虛擬機需要啟動內核引導,非常慢,而容器底層還是使用主機的內核。

7.3 分層理解

分層的鏡像

我們可以去下載一個鏡像,注意觀察下載的日志輸出,可以看到的是一層一層的在下載。

Python開發加薪利器之Docker的使用實踐

**思考:**為什么Docker鏡像要采用這種分層的結構呢?最大的好處,我覺得莫過于是資源共享了。比如有多個鏡像都從相同的Base鏡像構建而來,那么宿主機只需在磁盤上保留一份Base鏡像,同時內存中也只需要加載一份Base鏡像,這樣就可以為所有的容器服務了,而且鏡像的每一層都可以被共享。查看鏡像分層的方式可以通過 docker image inspect 命令。

docker image inspect redis:latest

Python開發加薪利器之Docker的使用實踐

理解:

所有的Docker鏡像都起始于一個基礎鏡像層,當進行修改或增加新的內容時,就會在當前鏡像層之上,創建新的鏡像層。舉一個簡單的例子,假如基于Ubuntu Linux 16.04創建一個新的鏡像,這就是新鏡像的第一層;如果在該鏡像中添加Python包,就會在基礎鏡像層之上創建第二個鏡像層;如果繼續添加一個安全補丁,就會創建第三個鏡像層。該鏡像當前已經包含3個鏡像層,如下圖所示(這只是一個用于演示的很簡單的例子)

Python開發加薪利器之Docker的使用實踐

在添加額外的鏡像層的同時,鏡像始終保持是當前所有鏡像的組合,理解這一點非常重要。下圖中舉了一個簡單的例子,每個鏡像層包含3個文件,而鏡像包含了來自兩個鏡像層的6個文件。

Python開發加薪利器之Docker的使用實踐

上圖中的鏡像層跟之前圖中的略有區別,主要目的是便于展示文件。下圖中展示了一個稍微復雜的三層鏡像,在外部看來整個鏡像只有6個文件,這是因為最上層中的文件7是文件5的一個更新版本。

Python開發加薪利器之Docker的使用實踐

這種情況下,上層鏡像層中的文件覆蓋了底層鏡像層中的文件。這樣就使得文件的更新版本作為一個新鏡像層添加到鏡像當中。Docker通過存儲引擎(新版本采用快照機制)的方式來實現鏡像層堆棧,并保證多鏡像層對外展示為統一的文件系統。Linux上可用的存儲引擎有AUFS、Overlay2、Device Mapper、Btrfs 以及ZFS。顧名思義,每種存儲引擎都基于Linux中對應的文件系統或者塊設備技術,并且每種存儲引擎都有其獨有的性能特點。Docker在Windows上僅支持windowsfilter一種存儲引擎。下圖展示了與系統顯示相同的三層鏡像。所有鏡像層堆疊并合并,對外提供統一的視圖。

Python開發加薪利器之Docker的使用實踐

特點

Docker鏡像都是只讀的,當容器啟動時,一個新的可寫層被加載到鏡像的頂部。這一層就是我們通常說的容器層,容器之下的都叫鏡像層。

Python開發加薪利器之Docker的使用實踐

7.4 commit鏡像

如何提交一個自己的鏡像呢?

docker commit 提交容器成為一個新的鏡像docker commit -m='提交的描述信息' -a='作者' 容器Id 目標鏡像名:[TAG]

實戰測試:

# 1.啟動一個默認的tomcat# 2.發現這個默認的tomcat是沒有webapps應用,是因為官方鏡像默認webapps下面是沒有文件的# 3.自己拷貝進去了基本的文件

Python開發加薪利器之Docker的使用實踐

# 4.將我們操作過的容器通過commit提交為一個鏡像。我們以后就使用我們修改過的鏡像即可。

Python開發加薪利器之Docker的使用實踐

總結:

如果你想要保存當前容器的狀態 ,就可以通過commit來提交,獲得一個鏡像。就好比虛擬機的快照。

8. 容器數據卷8.1 容器數據卷是什么

將應用和環境打包成一個鏡像!

數據?如果數據都在容器中,那么我們容器刪除,數據就會丟失!需求:數據可以持久化

MySQL,容器刪了,相當于刪庫跑路!需求:MySQL數據可以存儲到本地

容器之間可以有一個數據共享的技術!Docker容器中產生的數據,同步到本地!

這就是卷技術!相當于目錄的掛載,將我們容器內的目錄,掛載到Linux上面!

**總結:**為什么使用容器卷?為了容器的持久化和同步操作,容器間也是可以數據共享的(即多個容器使用同一個本地目錄)

8.2 使用數據卷

方式一:直接使用命令來掛載 -v

docker run -v 主機內目錄:容器內目錄

通過命令 docker inspect 來查看掛載信息,如下:

'Mounts': [ {'Type': 'bind','Source': '/home/ceshi',# 主機內地址'Destination': '/home',# docker容器內地址'Mode': '','RW': true,'Propagation': 'rprivate' }],

測試文件的同步:

Python開發加薪利器之Docker的使用實踐

8.3 實戰:安裝MySQL

思考:MySQL的數據持久化問題。

# 獲取鏡像docker pull mysql:5.7# 運行容器 需要做數據掛載# 注意: 安裝啟動mysql時 需要配置密碼的# 官方測試(DockerHub) docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag# 啟動docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Malulu@960610 --name mysql01 mysql:5.7# 啟動成功后 在使用Navicat來測試# Navicat連接到Ubuntu的3310 3310和容器內的3306映射 此時我們就可以連接上了

Python開發加薪利器之Docker的使用實踐

假設我們將容器刪除,我們掛載到本地的數據卷依舊沒有丟失,這就實現了容器數據持久化的功能。

8.4 匿名掛載和具名掛載

8.4.1 匿名掛載

# 查看所有卷的信息docker volume ls# 匿名掛載-v 容器內目錄docker run -d -P --name nginx -v /etc/nginx nginx# 這樣就屬于匿名掛載 在 -v 后只寫了容器內目錄 沒有寫主機的目錄

Python開發加薪利器之Docker的使用實踐

8.4.2 具名掛載

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx

Python開發加薪利器之Docker的使用實踐

通過 -v 卷名:容器內目錄 的格式屬于具名掛載。

使用命令 docker volume inspect 卷名 來查看這個這個卷的信息。

Python開發加薪利器之Docker的使用實踐

所有的Docker容器內的卷,在沒有指定目錄的情況下都是在主機的 /var/lib/docker/volumes/xxx/_data 目錄下。

Python開發加薪利器之Docker的使用實踐

我們通過具名掛載可以方便的找到我們的一個卷,大多數情況下使用具名掛載

如何確定是具名掛載還是匿名掛載還是指定路徑掛載?

-v 容器內路徑 # 匿名掛載-v 卷名:容器內路徑# 具名掛載-v /宿主機路徑:容器內路徑 # 指定路徑掛載

擴展:

# 通過 -v 容器內路徑:ro rw 改變讀寫權限ro readonly # 只讀rw readwrite# 可讀可寫# 一旦設置了這個權限 容器對我們掛載出來的內容就有限定了docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginxdocker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx# ro 只要看到ro就說明這個路徑只能通過宿主機來操作 容器內部是無法操作的

8.5 初識DockerFile

DockerFile就是用來構建Docker鏡像的構建文件,這個文件其實就是一個命令腳本。

通過這個腳本可以生成鏡像,鏡像是一層一層的,腳本是一個一個的命令,每個命令都是一層。

# 創建一個dockerfile文件 名字可以隨機 建議Dockerfile# 文件中的內容 # 指令(大寫) 參數FROM centosVOLUME ['volume01','volume02']CMD echo '-----end-----'CMD /bin/bash# 這里的每個命令鏡像的一層

通過 docker build 來創建自己的命令。

docker build -f ./dockerfile1 -t malulu-centos:1.0 .

Python開發加薪利器之Docker的使用實踐

啟動自己創建的鏡像

Python開發加薪利器之Docker的使用實踐

這兩個卷在外部一定有同步的目錄。

Python開發加薪利器之Docker的使用實踐

查看一下卷掛載的路徑。

Python開發加薪利器之Docker的使用實踐

Python開發加薪利器之Docker的使用實踐

然后測試一下剛才創建的兩個文件是否同步到宿主機。

Python開發加薪利器之Docker的使用實踐

這種方式我們以后用的非常多,因為我們通常會構建自己的鏡像。假設構建鏡像時沒有掛載卷,就需要手動掛載(具名掛載)。

未完待續,值得期待!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 欧美视频二区 | 日韩欧美国产一区二区 | 欧美一区二区另类 | 免费三片在线观看网站 | 影音先锋中文字幕在线 | 日韩精品在线观看视频 | 波多野结衣 一区二区 | 五月婷婷综合激情网 | 成人羞羞网站 | 日本中文在线 | 色爱区综合 | 日韩成人在线观看视频 | 91精品国产综合久久精品 | 国产美女网站 | www亚洲一区 | 国产高清在线视频 | 欧美精品在线视频 | 久久久精品国产 | 91视频免费看片 | 日本一区二区三区视频免费看 | 九色91视频 | h网站在线观看 | 欧美亚洲视频 | 精品久久99| 国产精品久久7777 | 欧美久久精品 | 91精品久久久久久久久中文字幕 | 国产传媒在线视频 | 亚洲h视频| 欧美色综合天天久久综合精品 | 成人综合视频在线 | 国产精品乱码一区二区三区 | 久久天天躁狠狠躁夜夜躁2014 | www久久久久 | 亚洲欧洲一区 | 久久久久99 | 日韩欧美在线一区 | 国产免费一区二区 | 神马久久久久久久久 | 成人在线精品 | 亚洲午夜精品一区二区三区 | 欧美一级片在线 | 国产人妖在线 | 久久久久黄 | 日韩久久久久久 | 视频羞羞 | 日韩中文字幕在线免费 | 欧洲一级毛片 | 免费成人在线网站 | 伊人夜夜躁av伊人久久 | 亚洲欧美在线一区二区 | 在线视频中文字幕 | 国产伦精品一区二区三区高清 | 国产成人啪精品午夜在线观看 | 日韩在线不卡 | www久久99 | 青青草在线免费视频 | 在线不卡一区 | 三级成人在线 | 国产精品久久久久久久久免费丝袜 | 精品伊人久久 | 国产激情精品视频 | 国产精品a免费一区久久电影 | 怡红院免费在线视频 | 亚洲欧美一区二区三区不卡 | 久久精品国产免费 | 久久久久免费观看 | 国产一二三在线 | 四虎永久免费影院 | 天天操综| 国产成人一区二区三区 | 欧美精品国产精品 | 国产精品网站在线观看 | 中文字幕欧美在线 | 波多野结衣一区二区三区高清 | 国产成人亚洲精品 | 伊人狠狠干 | 精品1区| 亚洲精品成人久久久 | 日本手机在线视频 | 日韩欧美在线综合 | 国产乱码久久久久久一区二区 | 久久精品亚洲欧美日韩精品中文字幕 | 亚洲高清视频在线 | av影片在线 | 毛片免费网站 | 成人伊人 | 国产福利一区二区 | 国产亚洲欧美在线 | 国产在线精品视频 | 一区二区三区四区在线视频 | 香蕉久久久久久 | 日韩拍拍 | 日日视频 | 在线播放国产一区二区三区 | 亚洲高清视频在线观看 | 中文字幕精品一区久久久久 | 亚洲午夜视频在线观看 | 日韩久久一区二区 | 久久99深爱久久99精品 | 成人一区二区三区四区 | 美女一级a毛片免费观看97 | 日韩免费一区二区 | 在线观看欧美日韩 | 狠狠操天天干 | www.操操操.com | 成人精品久久 | 免费在线观看一区二区 | 国产99久久久久久免费看农村 | 国产精品中文字幕在线 | 亚洲视频中文字幕 | 欧美激情国产日韩精品一区18 | 久久久片| 另类天堂av | 久久男人天堂 | 夜夜久久 | 久久男人天堂 | 亚州av | 综合久久网 | 青青草久久爱 | 久久国产欧美日韩精品 | 黄色免费观看 | 国产精品欧美一区二区三区 | 精品少妇一区二区三区日产乱码 | 国产三区四区 | 日本一区视频在线观看 | 亚洲无吗电影 | 精品久久久久久久人人人人传媒 | 国产一区二区精品丝袜 | 激情毛片 | 午夜寂寞福利视频 | 性色浪潮 | 国产精品乱码一区二区三区 | 天天干天天操 | 欧美1区2区3区 | 日韩欧美国产一区二区 | 亚洲国产日韩a在线播放性色 | 免费国产一区 | 一区二区三区免费av | 成人免费在线视频 | 国产在视频一区二区三区吞精 | 久草在线在线精品观看 | 欧美色综合天天久久综合精品 | 亚洲嫩草| 国产福利在线观看视频 | 黄色影视在线免费观看 | 国产高潮呻吟久久渣男片 | 欧洲亚洲视频 | 999久久久久久久久 国产欧美在线观看 | 成年免费视频 | 伊人久久精品久久亚洲一区 | 中文字幕亚洲一区 | 亚洲精品久久久 | 综合伊人 | 高清久久| 久久99精品久久久久子伦 | 91免费在线看| 国产精品久久久久久久久久久杏吧 | 欧美日韩精品久久久 | 亚洲国产综合在线 | 一区二区三区四区日韩 | 成人亚洲在线观看 | 一区二区三区在线免费观看 | 99亚洲国产 | 一区二区免费播放 | 欧美亚洲日本 | 成人在线精品视频 | 99热影院| 国产精品成人在线观看 | 国产99久久精品一区二区永久免费 | 欧美一区二区 | 国产精品综合一区二区 | 精品国产31久久久久久 | 日韩免费视频 | 午夜色播 | 欧美精品一区二区三区中文字幕 | 久久久久久久久久国产精品 | 成人av教育 | 在线不卡a资源高清 | 久久精品一区二区 | 国产精品一区三区 | 91久久久久久久久久久久久 | 色橹橹欧美在线观看视频高清 | 亚洲精品久久久久久久久久久久久 | 日本一本视频 | 91亚洲国产 | 精品亚洲国产成av人片传媒 | 在线观看不卡一区 | 日韩欧美一区二区视频 | www国产亚洲精品久久网站 | 日av一区| 国精品一区二区三区 | 成人一级片 | 91视频在线网址 | 成人h视频| 精品国产乱码久久久久久88av | 国产成人av一区二区三区 | 在线成人www免费观看视频 | 国产综合精品视频 | 日韩在线中文 | 香港三级日本三级a视频 | 欧美一区二区另类 | 涩涩天堂| 国产真实精品久久二三区 | av国产精品 | 国产小视频在线播放 | 伊人网亚洲 | 99热在线精品播放 | 热久久这里只有精品 | 国产一区二区三区久久久久久 | 国产区精品| a级片在线观看 | 日本久草| 久草精品视频 | 国产福利视频 | 国产精品久久久久婷婷二区次 | 日韩爱爱网址 | 精品国产一区二区三区久久久蜜月 | 免费观看一级毛片 | 一区二区色 | 日本污视频在线观看 | 免费久久网站 | 国产精品美女久久久久久久久久久 | 91精品欧美久久久久久久 | 成人福利视频 | 日本福利网站 | 色综合天天综合网国产成人网 | 日韩免费电影 | 日韩在线观看视频一区二区三区 | 一区二区三区四区精品 | 天天操夜夜干 | 国产精品视频免费观看 | 日韩欧美国产一区二区三区 | 国产一区二精品区在线 | 国产精品久久a | 国产无毛 | 国产欧美视频在线 | 国产精品27页 | 欧美在线a | 欧美黑人一级爽快片淫片高清 | 高清视频一区二区三区 | 欧美不卡视频一区发布 | av免费在线观看网站 | 中文字幕7777| 亚洲网在线 | 国产亚洲精品久久久闺蜜 | 一本大道综合伊人精品热热 | 亚洲一区二区三区在线视频 | 亚洲精品国产精品国自产 | 成人免费网站 | 一区二区在线不卡 | 欧美精品1 | 国产精品国产精品国产专区不卡 | 久久毛片| 91久久精品一区二区三区 | 成人国产精品久久久 | 午夜精品久久久久久久白皮肤 | 午夜免费片 | 狠狠操麻豆 | 久久久久久亚洲精品 | 国产精品久久久久久久午夜 | 香蕉久久久久久 | 在线观看亚洲a | 成人亚洲免费视频 | 艹逼网 | 亚洲成人第一 | 少妇精品视频在线观看 | 亚洲一区二区三区在线视频 | 国产精品色一区二区三区 | 国产欧美一区二区精品婷 | 亚洲成人一区 | 中文字幕在线永久 | 欧美视频在线一区 | www日韩| 一呦二呦三呦国产精品 | 在线欧美一区 | 国产精品久久av | 免费人成电影 | 成人国产综合 | 国产乱码精品一区二区三 | 在线观看免费av网站 | 超碰国产一区 | 一区二区视频 | 久草在线 | 国精品产品区三区 | 在线免费国产视频 | 成人在线小视频 | 欧美a区| 天堂亚洲| 欧美日韩亚洲成人 | 亚洲不卡在线观看 | 少妇精品视频在线观看 | 成人在线免费 | 国产色在线 | 国产一级黄色大片 | 在线一级片 | 青青久草在线 | 日韩一区二区福利 | 日韩欧美中文 | 色视频网站在线观看一=区 日韩一二三区 | 国语av在线| 精品国产乱码一区二区三区 | 黄色在线观看网址 | www久久久| 国产日韩精品视频 | 五月天婷婷综合 | 欧美伊人影院 | 麻豆一区| 亚洲精品在线视频 | 日韩免费 | 免费视频爱爱太爽了 | 成人久久久久久久久 | 欧美日韩在线精品 | 日韩在线观看中文字幕 | 成人欧美日韩一区二区三区 | 看片国产 | 国产成人99久久亚洲综合精品 | 欧美久久久 | 国产一区二区视频在线观看 | 天堂在线www | 国产精品亚洲欧美日韩一区在线 | 午夜窝窝| 亚洲一区二区三区四区五区午夜 | 国产一区欧美 | 国产一级毛片在线视频 | 国产精品毛片一区二区在线看 | 欧美视频网站 | 欧美日韩一区二区在线 | 亚洲国产青草 | 毛片特级 | 全毛片 | 久久999视频| 99久草| 91丝袜| 日韩在线资源 | 久久久久久香蕉 | 久久夜视频| 亚洲一区综合 | 国产精品一区二区三区在线免费观看 | 亚洲欧洲一区二区 | 亚洲看片 | 黄视频网站免费看 | 国产视频一区在线 | 久久久精品网站 | 亚洲一级淫片 | 国产中文字幕在线观看 | 亚洲日韩中文字幕 | 蜜桃av中文字幕 | 日韩在线欧美 | 国产日韩精品视频 | 久久成人国产 | 国产成人久久 | 欧美日韩国产在线观看 | 在线色av| 亚州视频在线 | 自拍偷拍视频网站 | 国产真实精品久久二三区 | 日韩一区二区免费视频 | 午夜精品一区二区三区在线播放 | 久久精品国产一区二区三 | 美日一级毛片 | 国产一区亚洲二区三区 | 欧美日韩在线免费观看 | 久久久精品日本 | 国产成人久久精品一区二区三区 | 色综合国产 | 精品乱码久久久 | 国产一区二区三区四区 | 夜夜操操| 不卡一区二区三区视频 | 亚洲一区视频在线播放 | 久久综合激情 | 欧美视频精品 | 亚洲一区二区三区四区五区午夜 | 成人精品一区二区三区 | 99国内精品久久久久久久 | 久草精品视频在线播放 | 欧美激情一区二区三区在线观看 | 国产免费观看一区二区三区 | 国产一区二区在线播放 | 国产精品免费观看 | 羞羞的视频网站 | 99看| 狠狠色狠狠色合久久伊人 | 一级毛片免费高清 | 欧美激情高清 | 91精品国产综合久久久久久漫画 | 欧美精品片 | 国产精品日韩在线观看 | 日韩精品一区二区三区在线播放 | 精品在线一区二区 | 久操综合| 国产精品久久久久久久久动漫 | 久久久久9999国产精品 | 最新超碰 | 国产激情午夜 | 伊人网电影 | 免费视频一区二区 | 中文字幕国产在线视频 | 亚洲精品一区在线观看 | 国产一区免费在线观看 | 欧美日韩国产欧美 | 日韩欧美国产精品综合嫩v 久久久久久国产精品高清 国产目拍亚洲精品99久久精品 | 国产一区二区电影 | av 一区二区三区 | 国产大毛片 | 久久久大| 日韩精品一区二区三区四区 | 欧美日韩在线看 | 久久线视频 | 国产午夜久久 | 成人av高清 | 精品一区二区在线观看 | 精品香蕉一区二区三区 | 亚洲免费网 | 色一情 | igao视频 | 伊人网伊人 | 国产美女av在线 | 日本美女一区二区 | 亚洲精品一二区 | 日一区二区 | 欧美成人一区二区三区片免费 | 国产精品一区二区久久久 | heyzo在线观看 | 在线观看视频一区二区 | 中文字幕一区二区三区不卡 | zzzwww在线观看免 | 久久99精品国产91久久来源 | 日韩激情视频一区 | 欧美日韩成人在线 | 成人精品一区二区三区电影黑人 | 三级无遮挡污在线观看 | 在线观看国产精品一区二区 | h视频亚洲 | 亚洲美女视频在线观看 | 中文在线一区 | 在线亚洲成人 | 欧美激情国产日韩精品一区18 | 亚洲 欧美 日韩 丝袜 另类 | 农村妇女毛片精品久久久 | 久草成人 | 欧美精品日韩 | 91综合网 | 天天影视网色香欲综合网无拦截 | 成人日韩在线观看 | 人人干人人看 | 欧美成人影院在线 | 91 在线观看| 久久综合九色综合欧美狠狠 | 成年人综合网 | 欧美国产日本一区 | 国产偷录视频叫床高潮对白 | 国产aaaaav久久久一区二区 | 成年人视频免费在线看 | 欧美国产一区二区 | 国产999精品久久久久 | 国产精品亚洲一区二区三区在线 | 免费的黄色片子 | 久久免费黄色网址 | 福利在线看 | 国产目拍亚洲精品99久久精品 | 一区二区三区国产 | 999精品网| 亚洲一区二区三区视频 | 91精品国产91久久久久久不卡 | 天天干夜操| 91网站在线看 | 影音先锋中文字幕在线 | 欧美成人午夜视频 | 成人免费的视频 | 日韩精品视频在线 | 中文字幕在线日韩 | 成人在线精品视频 | 男女视频在线观看 | 成人 在线 | 天天操,夜夜操 | 欧美日韩精品一区二区三区 | 免费毛片视频 | 亚洲精品在线播放 | 久久免费精品视频 | 91精品久久久久 | 成人免费淫片视频观 | 可以免费看黄视频的网站 | 欧美精品久久久 | 国产成人在线一区二区 | 国产高清精品一区二区三区 | 国产成人精品在线 | 国产综合精品一区二区三区 | 欧美经典一区 | 中文字幕亚洲字幕一区二区 | 国产精品三级久久久久久电影 | 亚洲一区二区免费看 | 在线观看中文字幕亚洲 | a视频在线免费观看 | 国产精品午夜在线观看 | 亚洲二区在线观看 | av官网| 色婷婷av久久久久久久 | 天天干天操| 在线观看日韩av | 亚洲综合视频一区 | 国产一二三在线 | 不卡视频一区二区 | 国产精品久久久久久亚洲调教 | 在线看免费黄色片 | 免费在线视频精品 | 欧美日韩另类在线 | 欧美aaaaa| 中文字幕欧美日韩 | 日韩成人在线一区 | 国产精品一二三四区 | 久久成人午夜 | www.麻豆视频 | 国产精一区| 在线观看国产一区 | 亚洲aⅴ | 午夜窝窝 | 国产成人久久 | 美女操网站 | 欧美精品第一页 | 伊人网站 | 国产精品久久免费视频 | 亚洲电影一区二区 | 国产伦精品一区二区三区四区视频_ | 国产免费观看一区二区三区 | 亚洲精品久久久久久久久久久 | 亚洲一区二区三区在线免费观看 | 欧美日韩在线播放 | 国产精品久久久久久久久免费桃花 | 在线中文视频 | 久章操| 麻豆毛片 | 亚洲一区二区中文 | 99福利视频 | 国产一区在线免费观看 | 天天看天天干 | 天天色天天 | 欧美第7页 | 老司机深夜福利在线观看 | 精品成人免费一区二区在线播放 | 国产欧美精品 | 最近免费中文字幕在线视频2 | 国产视频一区二区三区四区 | 欧洲美女性开放视频 | 综合色久 | 亚洲永久免费 | 黄色毛片免费看 | 免费一级片 | 五月综合婷 | 美女在线视频一区二区 | 国产艳妇av视国产精选av一区 | 热99这里只有精品 | 久久av一区二区 | 99亚洲精品| 国产区视频在线观看 | 毛片a在线 | 国产在线视频a | 精品国产不卡一区二区三区 | 日韩精品一区在线 | 综合导航 | 欧美国产日韩一区 | 99久久精品免费看国产四区 | 看片一区 | 国产精品一区二区精品 | 国产精品久久久久9999鸭 | 免费毛片网站 | 成人亚洲视频 | 成人精品一区二区三区 | av手机在线播放 | 91精品国产91久久久久久吃药 | 91精品国产九九九久久久亚洲 | 91综合在线观看 | 黄色毛片在线观看 | 欧美成人精品一区二区男人看 | 男女精品 | 亚洲成人久久久 | 国产精品成av人在线视午夜片 | 久久精品a一级国产免视看成人 | 国产视频久久久久久久 | 黄色一级片黄色一级片 | 国产日韩中文字幕 | 黄色精品网站 | 品久久久久久久久久96高清 | 色综合av | 成人免费小视频 | 伊人久久国产 | 国产一区二区视频在线播放 | 91亚洲国产亚洲国产 | 久久综合一区二区三区 | 欧美成人久久 | 亚洲日韩中文字幕一区 | 国产一区二区三区在线免费观看 | 伊人久久精品久久亚洲一区 | 欧美精品一区自拍a毛片在线视频 | 亚洲成人中文字幕 | 欧美一区二区三 | 在线播放国产精品 | 99精品视频在线免费观看 | 午夜欧美精品久久久久 | 亚洲免费视频在线 | 国产精品成av人在线视午夜片 | 久久久久久国产精品久久 | 日韩视频在线观看一区 | 午夜激情视频在线观看 | 91一区二区 | 7777视频 | 五月婷婷综合激情网 | 国产亚洲精品v | 色九九| 久久机热 | 狠狠爱天天操 | 中文字幕在线视频观看 | 国产精品高颜值在线观看 | 91国内外精品自在线播放 |