成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Python開發(fā)加薪利器之Docker的使用實踐

Python開發(fā)加薪利器之Docker的使用實踐

熱門標簽:手機網(wǎng)頁嵌入地圖標注位置 地圖標注線上如何操作 開封語音外呼系統(tǒng)代理商 電銷機器人的風險 400電話辦理哪種 天津電話機器人公司 應電話機器人打電話違法嗎 河北防封卡電銷卡 開封自動外呼系統(tǒng)怎么收費

1. Docker概述

  • Docker為什么火,因為十分的輕巧。
  • Docker是基于Go語言開發(fā)的。

1.1 虛擬機技術VS容器化技術

虛擬機技術:

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

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

1.2 名詞概念

鏡像(image)

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

容器(container)

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

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

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

倉庫(repository)

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

2. Docker安裝

2.1 環(huán)境查看

2.1.1 查看內(nèi)核版本

uname -r

2.1.2 查看系統(tǒng)信息

sudo cat /etc/os-release

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-release

2.4 添加GPG密鑰

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

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

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

2.5 添加穩(wěn)定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

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

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>
#加參數(shù)-r可以移除
sudo add-apt-repository -r "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

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

sudo apt-get install docker-ce=VERSION_STRING> docker-ce-cli=VERSION_STRING> containerd.io

2.7 添加當前用戶到 docker 用戶組

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

將當前用戶添加到 docker 組

sudo gpasswd -a ${USER} docker

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

newgrp - docker

重啟docker服務

sudo service docker restart

不加sudo直接執(zhí)行docker命令檢查效果

docker ps

2.8 測試是否安裝成功

首先啟動Docker

systemctl start docker

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

docker version

2.9 配置阿里云鏡像加速

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json -'EOF'
{
  "registry-mirrors": ["https://eko3tl65.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

3. Docker run 運行流程圖

4. Docker工作原理

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

5. Docker常見命令

5.1 幫助命令

# 顯示docker的版本信息
docker version

# 顯示docker的系統(tǒng)信息 包括鏡像和容器的數(shù)量
docker info

# 幫助命令
docker 命令 --help

幫助文檔地址:官方文檔

5.2 鏡像命令

5.2.1 docker images

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

malulu@malulu:~/桌面$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
nginx         latest    519e12e2a84a   4 days ago    133MB
hello-world   latest    d1165f221234   5 weeks ago   13.3kB

# 解釋
REPOSITORY	鏡像的倉庫源
TAG			鏡像的標簽
IMAGE ID	鏡像的ID
CREATED		鏡像的創(chuàng)建時間
SIZE		鏡像的大小

# 可選項
  -a, --all             # 列出所有鏡像
  -q, --quiet           # 只顯示鏡像的ID

5.2.2 docker search

搜索鏡像

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

5.2.3 docker pull

下載鏡像

# 下載鏡像
docker pull 鏡像名[:tag]

malulu@malulu:~/桌面$ docker pull mysql
Using default tag: latest		# 如果不寫tag(版本) 默認就是latest
latest: Pulling from library/mysql
f7ec5a41d630: Already exists	# 分層下載 docker image的核心 聯(lián)合文件系統(tǒng) 
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:latest
docker.io/library/mysql:latest	# 真實地址


# 下面兩條命令等價
docker pull mysql
docker pull docker.io/library/mysql:latest

# 指定版本下載 必須在倉庫有這個版本
malulu@malulu:~/桌面$ docker pull mysql:5.7
5.7: Pulling from library/mysql
f7ec5a41d630: 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:e42a18d0bd0aa746a734a49cbbcc079ccdf6681c474a238d38e79dc0884e0ecc
Status: Downloaded newer image for mysql:5.7
docker.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 容器命令

說明:我們有了鏡像才可以創(chuàng)建容器。

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

docker pull centos

5.3.1 新建容器并啟動

docker run [可選參數(shù)] image

# 參數(shù)說明
--name="Name"	# 容器名字 mysql01 mysql02 用來區(qū)分容器
-d				# 后臺方式運行
-it				# 使用交互方式運行(需要提供一個控制臺) 進入容器查看內(nèi)容
-p				# 指定容器的端口 -p 8080:8080
	-p ip:主機端口:容器端口
	-p 主機端口:容器端口 (常用)
	-p 容器端口
	容器端口
-P				# 隨機指定端口

# 測試
# 啟動并進入容器
malulu@malulu:~/桌面$ docker run -it centos /bin/bash
[root@a8d9ce9627a4 /]# ls	# 查看容器內(nèi)的centos 基礎鏡像 很多命令都是不完善的
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr

# 從容器中退回主機
[root@a8d9ce9627a4 /]# exit
exit
malulu@malulu:~/桌面$ 

5.3.2 列出所有的運行的容器

# 列出當前正在運行的容器
docker ps

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

5.3.3 退出容器

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

5.3.4 刪除容器

# 刪除指定的容器 不能刪除正在運行的容器 強制刪除用rm -f
docker 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 鏡像名

# 比如 后臺啟動centos
docker run -d centos

# 問題 docker ps 時 發(fā)現(xiàn) centos 停止了
# 常見的坑:docker容器使用后臺運行,就必須要有一個前臺進程,docker發(fā)現(xiàn)沒有應用,就會自動停止
# 比如nginx,容器啟動后,發(fā)現(xiàn)自己沒有提供服務,就會立刻停止,就是沒有程序了

5.4.2 查看日志

docker logs -f -t --tail number 容器ID

# 可選項
 -tf			# 顯示日志
 --tail number	# 要顯示日志條數(shù)

# 自己編寫一段shell腳本
docker run -d centos /bin/sh -c "while true;do echo 666;sleep 1;done"

5.4.3 查看容器中進程信息

docker top 容器ID

5.4.4 查看鏡像的元數(shù)據(jù)

docker inspect 容器ID

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

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

# 方式一
# 命令
docker exec -it 容器ID bashShell
# 測試
malulu@malulu:~/桌面$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
9ff3b9c7ebd5   centos    "/bin/sh -c 'while t…"   8 seconds ago   Up 6 seconds             lucid_wright
malulu@malulu:~/桌面$ docker exec -it 9ff3b9c7ebd5 /bin/bash
[root@9ff3b9c7ebd5 /]# ls
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr
[root@9ff3b9c7ebd5 /]# 

# 方式二
docker attach 容器ID
# 測試
malulu@malulu:~/桌面$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
9ff3b9c7ebd5   centos    "/bin/sh -c 'while t…"   8 minutes ago   Up 8 minutes             lucid_wright
malulu@malulu:~/桌面$ docker attach 9ff3b9c7ebd5
666
666
666
666
666
666

# docker exec	# 進入容器后開啟一個新的終端 可以在里面操作(常用)
# docker attach	# 進入容器正在執(zhí)行的終端 不會啟動新的終端

5.4.6 從容器內(nèi)拷貝文件到主機

注意:是從容器內(nèi)拷貝到主機。

docker cp 容器Id:容器內(nèi)路徑 目的的主機路徑

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

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

5.4.5 小結

attach      Attach local standard input, output, and error streams to a running container
build       Build an image from a Dockerfile
commit      Create a new image from a container's changes
cp          Copy files/folders between a container and the local filesystem
create      Create a new container
diff        Inspect changes to files or directories on a container's filesystem
events      Get real time events from the server
exec        Run a command in a running container
export      Export a container's filesystem as a tar archive
history     Show the history of an image
images      List images
import      Import the contents from a tarball to create a filesystem image
info        Display system-wide information
inspect     Return low-level information on Docker objects
kill        Kill one or more running containers
load        Load an image from a tar archive or STDIN
login       Log in to a Docker registry
logout      Log out from a Docker registry
logs        Fetch the logs of a container
pause       Pause all processes within one or more containers
port        List port mappings or a specific mapping for the container
ps          List containers
pull        Pull an image or a repository from a registry
push        Push an image or a repository to a registry
rename      Rename a container
restart     Restart one or more containers
rm          Remove one or more containers
rmi         Remove one or more images
run         Run a command in a new container
save        Save one or more images to a tar archive (streamed to STDOUT by default)
search      Search the Docker Hub for images
start       Start one or more stopped containers
stats       Display a live stream of container(s) resource usage statistics
stop        Stop one or more running containers
tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top         Display the running processes of a container
unpause     Unpause all processes within one or more containers
update      Update configuration of one or more containers
version     Show the Docker version information
wait        Block until one or more containers stop, then print their exit codes

6. 實戰(zhàn)

6.1 部署Nginx

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

https://registry.hub.docker.com/search?q=nginxtype=image

第二步:拉取鏡像

malulu@malulu:~/桌面$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
f7ec5a41d630: Already exists 
aa1efa14b3bf: Pull complete 
b78b95af9b17: Pull complete 
c7d6bca2b8dc: Pull complete 
cf16cd8e71e0: Pull complete 
0241c68333ef: Pull complete 
Digest: sha256:75a55d33ecc73c2a242450a9f1cc858499d468f077ea942867e662c247b5e412
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
malulu@malulu:~/桌面$ 

第三步:運行測試

# -d 后臺運行
# --name 給容器命名
# -p 宿主機端口:容器內(nèi)部端口
malulu@malulu:~/桌面$ docker run -d --name nginx01 -p 3344:80 nginx
699b9cecd0a07f8db6e888722a2dada1c9b9be6d77efc7996c4b6758dd72f587
malulu@malulu:~/桌面$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS                  NAMES
699b9cecd0a0   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:3344->80/tcp   nginx01
malulu@malulu:~/桌面$ curl localhost:3344

# 進入容器
malulu@malulu:~/桌面$ docker exec -it nginx01 /bin/bash
root@699b9cecd0a0:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@699b9cecd0a0:/# cd /etc/nginx/
root@699b9cecd0a0:/etc/nginx# ls
conf.d	fastcgi_params	koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params	uwsgi_params  win-utf
root@699b9cecd0a0:/etc/nginx# exit

第四步:公網(wǎng)訪問

6.2 端口暴露(端口轉(zhuǎn)發(fā))

6.3 部署Elasticsearch

# es 暴露的端口很多
# es 十分的耗內(nèi)存
# es 數(shù)據(jù)一般需要放置到安全目錄 掛載

docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
# --net somenetwork 網(wǎng)絡配置
# 啟動 Elasticsearch
docker run -d --name elasticsearch01 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.12.0
# 啟動之后,服務器會特別卡

# 所以需要增加內(nèi)存的限制
# 修改配置文件 -e 環(huán)境配置修改
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

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

6.4 可視化 Portainer

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

訪問測試:

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

為用戶 admin 設置密碼 admin123456

登錄成功后,選擇本地Docker環(huán)境

進入之后的面板

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

7. Docker鏡像講解

7.1 鏡像是什么

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

如何獲取到鏡像:

  • 從遠程倉庫下載
  • 朋友拷貝給你
  • 自己制作一個鏡像DockerFile

7.2 Docker鏡像加載原理

UnionFS(聯(lián)合文件系統(tǒng))

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

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

Docker鏡像加載原理

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

系統(tǒng)啟動需要引導加載。

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

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

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

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

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

7.3 分層理解

分層的鏡像

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

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

docker image inspect redis:latest

理解:

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

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

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

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

特點

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

7.4 commit鏡像

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

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

實戰(zhàn)測試:

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

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

總結:

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

8. 容器數(shù)據(jù)卷

8.1 容器數(shù)據(jù)卷是什么

將應用和環(huán)境打包成一個鏡像!

數(shù)據(jù)?如果數(shù)據(jù)都在容器中,那么我們?nèi)萜鲃h除,數(shù)據(jù)就會丟失!需求:數(shù)據(jù)可以持久化

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

容器之間可以有一個數(shù)據(jù)共享的技術!Docker容器中產(chǎn)生的數(shù)據(jù),同步到本地!

這就是卷技術!相當于目錄的掛載,將我們?nèi)萜鲀?nèi)的目錄,掛載到Linux上面!

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

8.2 使用數(shù)據(jù)卷

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

docker run -v 主機內(nèi)目錄:容器內(nèi)目錄

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

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

測試文件的同步:

8.3 實戰(zhàn):安裝MySQL

思考:MySQL的數(shù)據(jù)持久化問題。

# 獲取鏡像
docker pull mysql:5.7

# 運行容器 需要做數(shù)據(jù)掛載
# 注意: 安裝啟動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和容器內(nèi)的3306映射 此時我們就可以連接上了

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

8.4 匿名掛載和具名掛載

8.4.1 匿名掛載

# 查看所有卷的信息
docker volume ls

# 匿名掛載
-v 容器內(nèi)目錄
docker run -d -P --name nginx -v /etc/nginx nginx

# 這樣就屬于匿名掛載 在 -v 后只寫了容器內(nèi)目錄 沒有寫主機的目錄

8.4.2 具名掛載

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

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

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

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

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

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

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

擴展:

# 通過 -v 容器內(nèi)路徑:ro rw 改變讀寫權限
ro readonly 	# 只讀
rw readwrite	# 可讀可寫
# 一旦設置了這個權限 容器對我們掛載出來的內(nèi)容就有限定了
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

# ro 只要看到ro就說明這個路徑只能通過宿主機來操作 容器內(nèi)部是無法操作的

8.5 初識DockerFile

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

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

# 創(chuàng)建一個dockerfile文件 名字可以隨機 建議Dockerfile
# 文件中的內(nèi)容 
# 指令(大寫) 參數(shù)
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "-----end-----"
CMD /bin/bash
# 這里的每個命令鏡像的一層

通過 docker build 來創(chuàng)建自己的命令。

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

啟動自己創(chuàng)建的鏡像

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

查看一下卷掛載的路徑。

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

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

未完待續(xù),值得期待!

您可能感興趣的文章:
  • PyCharm使用Docker鏡像搭建Python開發(fā)環(huán)境
  • 使用Docker搭建Django,Nginx,R,Python部署環(huán)境的方法
  • 使用Docker開發(fā)python Web 應用
  • 詳解在Python和IPython中使用Docker
  • 使用IPython來操作Docker容器的入門指引

標簽:江蘇 六盤水 宿遷 成都 山東 駐馬店 常州 蘭州

巨人網(wǎng)絡通訊聲明:本文標題《Python開發(fā)加薪利器之Docker的使用實踐》,本文關鍵詞  Python,開發(fā),加薪,利器,之,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python開發(fā)加薪利器之Docker的使用實踐》相關的同類信息!
  • 本頁收集關于Python開發(fā)加薪利器之Docker的使用實踐的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    精品蜜桃一区二区三区| 日韩电影免费观看高清完整版在线观看| 国产福利一区二区三区在线视频| 久草成人资源| 亚洲精品在线网站| 中文字幕欧美日韩va免费视频| 黄页在线观看视频| 亚洲欧美日韩一区二区三区四区| 日本欧美加勒比视频| 性欧美videosex高清少妇| 日韩中文字幕视频在线| 天天操天天操天天干| 伊人波多野结衣| 日韩精品一区二区亚洲av观看| 久久69国产一区二区蜜臀| 91超碰caoporn97人人| 欧美一区高清| 国产精品人人做人人爽人人添| 青青操在线视频观看| 欧美日韩视频精品一区二区| 欧美图片一区二区三区| 青青青免费视频观看在线| 麻豆视频免费在线观看| 国产日韩欧美亚洲一区| 国产综合欧美在线看| 亚洲免费视频网站| 国产欧美久久久久久久久| 日本免费三片免费观看| 久久天天久久| 高清国产免费| 国产人成视频在线观看| 色哟哟网站在线观看| 精精国产xxx在线视频app| 精品国产伦理网| 老鸭窝91久久精品色噜噜导演| 国产情侣呻吟对白高潮| 久久精品国产免费看久久精品| 91精品国产福利| 亚洲宅男一区| 一区二区三区午夜探花| 爱情岛论坛亚洲入口| 国产精品夜夜夜爽张柏芝| 三区视频在线观看| 国产不卡网站| 在线免费一区三区| 337p亚洲精品色噜噜狠狠p| 韩国三级在线一区| www.男人的天堂.com| 三级小说欧洲区亚洲区| 日韩电影免费观看高清完整版在线观看| 超污网站在线观看| 丁香社区五月天| 天堂网在线免费观看| 俄罗斯一级**毛片在线播放| 91人人澡人人爽人人精品| 午夜精品久久久久久久久久久久久蜜桃| 亚洲ai欧洲av| 韩国一级黄色录像| 少妇高潮一区二区三区99| 最新日本在线观看| 精品无人区一区二区三区竹菊| 三上悠亚ssⅰn939无码播放| 99久久人妻无码中文字幕系列| 中文字幕亚洲一区二区va在线| 午夜影院免费在线| jizz18女人高潮| 伊人春色在线| 欧洲成人综合网| 韩国国内大量揄拍精品视频| 粉嫩av懂色av蜜臀av分享| 欧美第一精品| 少妇精69xxtheporn| 国产毛片久久久久久| 中文字幕少妇一区二区三区| v天堂福利视频在线观看| 欧美日韩亚洲一区三区| 色哟哟精品一区| 99综合精品| 日韩视频―中文字幕| 成年女人毛片| 中文字幕永久在线不卡| 最新国产精品久久精品| 91老司机福利 在线| 欧美88888| 日韩免费看片| 国产福利精品一区二区| 精品在线观看视频| 国产婷婷色一区二区在线观看| 国产精品久久久久久免费播放| 先锋影音网一区二区| 国产亚洲精品aa| www.亚洲自拍| 国产亚洲精品久久久久久青梅| 精品色蜜蜜精品视频在线观看| 在线看视频不卡| 丰满熟妇人妻中文字幕| 香蕉久久夜色精品| 丝袜亚洲另类欧美综合| 亚洲四虎影院| 九九这里只精品视在线99| 成人毛片av在线| 美女高潮网站| 日本又骚又刺激的视频在线观看| 久久久日本电影| 91av一区二区三区| 国产小视频在线看| 亚洲国产合集| 国产天堂av| 成人免费毛片网| 又长又粗又大又爽| 欧美国产另类| 在线中文字幕一区| 国产在线拍揄自揄拍视频| 中文字幕不卡在线视频极品| 色狠狠久久aa北条麻妃| 久久久久久久久久久黄色| 91伊人久久| caoporn免费在线视频| 国产日韩亚洲精品| 麻豆精品少妇| 精品欧美不卡一区二区在线观看| 成人免费观看在线视频| 天天草夜夜操| 男男受被啪到高潮自述| 91精品国产91久久久久久不卡| 一级黄色片在线| 国产一级在线观看视频| 在线观看视频91| 97在线观看| www.五月天激情| 91亚洲国产成人久久精品网站| 久久天天躁夜夜躁狠狠躁2022| av网站导航在线观看免费| 精品熟女一区二区三区| 亚洲欧美视频在线观看视频| 日韩欧美三级在线观看| 亚洲精品98久久久久久中文字幕| 色视频在线观看福利| 91视频免费网站| 亚洲久久中文字幕| 亚洲午夜国产成人av电影男同| 色哟哟网站入口亚洲精品| 色综合色综合| 北条麻妃在线视频| 免费观看成人在线视频| 久久99精品久久久久久久青青日本| 美女久久久久久| 国产精品女上位| 中国毛片在线观看| 激情久久免费视频| 美女视频一区二区三区在线| 亚洲欧美在线磁力| 综合激情视频| 中文字幕欧美三区| 99精品美女视频在线观看热舞| 天天影视涩香欲综合网| caoporn超碰国产公开| 2020色愉拍亚洲偷自拍| 日韩欧美一级在线播放| 麻豆影视在线观看_| 中文字幕精品国产| 天天干夜夜操| 精品99久久久久成人网站免费| 日本视频免费在线| 成人mm视频在线观看| 免费看91的网站| 玖玖国产精品视频| 亚洲日本中文字幕免费在线不卡| 富二代精品短视频| 成人午夜在线免费| **毛片在线网站| av先锋下载| 成人小视频免费观看| 国产精品国产高清国产| 亚洲高清影院| 成年人视频在线免费| 欧美亚洲图片小说| 久久久国产精品无码| 国产麻豆午夜三级精品| 亚洲成人黄色影院| 国产裸舞福利在线视频合集| 久久久久久久黄色片| 日韩精品欧美| 免费看成年视频网页| 人人做人人澡人人爽欧美| 国产精品久久久久久五月尺| 久久精品国产精品青草| 亚洲在线免费视频| 国精品**一区二区三区在线蜜桃| 国产精品99久久久久久有的能看| 亚洲精品久久久一区二区三区| 免费成人性网站| 日韩不卡一二区| 欧美一级国产精品| 亚洲最新av网址| 欧美hdfree性xxxx| 一级黄色片毛片| 国产伦精品一区二区三区视频| 久久不见久久见免费视频7| 欧美另类videos死尸| 欧美精品久久99久久在免费线| 极品一区美女高清| 一区二区不卡久久精品| 97在线观看免费视频| 综合久久综合久久| 无码人妻一区二区三区在线| 91女人视频在线观看| 国产老女人av| 国内揄拍国内精品| 精品久久久久久久久久久久久久久久久| 黄色影院在线观看| 欧美激情一区二区三区蜜桃视频| 亚洲精品成人久久久| 免费视频最近日韩| 亚洲欧美小视频| 好看的视频你懂的| 黑丝av在线播放| 国产午夜精品一区二区三区视频| 久久av在线| 视频一区二区三区在线看免费看| 丁香久久五月| 韩日中文字幕| 九色视频入口| 99精品在线| 亚洲videos| 精品国产一区二区三区噜噜噜| 男人天堂视频在线| 亚洲一卡二卡三卡四卡五卡| 369你懂的电影天堂| 亚洲欧洲韩国日本视频| 日本黄色激情视频| 免费视频最近日韩| 女仆av观看一区| 三年中国中文观看免费播放| 亚洲精品综合久久| 性欧美xxxx大乳国产app| 国产精品网在线观看| 丁香综合在线| 免费男女羞羞的视频网站中文子暮| 国产精品欧美一区二区三区不卡| 婷婷婷国产在线视频| 韩国成人在线| 免费观看成人av| 91精品国产综合久久香蕉最新版| 成人综合网网址| 岛国毛片av在线| 午夜亚洲性色视频| 亚洲成在人线免费视频| 国产精品免费播放| 欧美牲交a欧美牲交aⅴ免费下载| 国产美女www爽爽爽视频| 91精品国产综合久久蜜臀| 国产黄色片免费在线观看| 国产日韩欧美一区二区三区乱码| 波多野结衣视频观看| 中文字幕av一区二区三区人妻少妇| 亚洲人亚洲人成电影网站色| 2021天堂中文幕一二区在线观| 色爱av美腿丝袜综合粉嫩av| 老司机午夜在线| 国产精品探花在线观看| 二区三区在线观看| 暖暖影院日本高清...免费| 女人和拘做爰正片视频| 性疯狂做受xxxx高清视频| 国产视频在线观看网站| 爱爱网站免费| 国产欧美一区二区三区国产幕精品| 无码精品视频一区二区三区| 另类综合图区| 你懂得网站在线| 久久一夜天堂av一区二区三区| 中文字幕亚洲成人| 国产精品一区二区三区不卡| 日韩一区二区精品葵司在线| 国产一卡二卡在线播放| 欧美日韩国产精品一区二区| 欧美日韩国产另类不卡| 欧美1区3d| 日本午夜精品一区二区三区电影| 精品少妇一区二区三区免费观| 亚洲激情视频一区| 欧美成人免费全部| 日本福利片在线观看| 短视频在线观看| 欧美久久一区二区三区| 亚洲精品v日韩精品| 99精品国产福利在线观看免费| 成人亚洲精品777777大片| 亚洲人做受高潮| 亚亚洲欧洲精品| 国产又粗又大又黄| 超碰97在线免费| 欧美激情18p| 美女性感视频久久久| 东京热无码av男人的天堂| 天天操天天射天天色| 人人澡人人爽人人揉| 日本高清中文字幕在线| 国产在线观看91精品一区| 亚洲成色www8888| 日韩电影在线免费观看| 特级西西人体wwwww| 欧美另类高清videos| 中国av在线播放| 免费黄色欧美视频| 欧美色视频日本高清在线观看| 黄色一级在线视频| 亚洲欧洲美洲av| 免费网站看黄yyy222| 色一区二区三区四区| 久久精品中文字幕| 师生出轨h灌满了1v1| 日本中文字幕高清| 日本老熟妇毛茸茸| 亚洲精品一区二区三区四区高清| 7799精品视频天天看| 超碰人人爱人人| 欧美视频你懂的| 亚洲久本草在线中文字幕| 亚洲一区在线观看免费| 成人中文字幕电影| 午夜电影网一区| 中文字幕有码在线播放| 久久综合电影| 欧美图片第一页| 成人天堂资源www在线| 夜夜嗨一区二区三区|