90設(shè)計網(wǎng)站怎么樣已備案域名購買平臺
docker容器是干什么用的
docker就是一個輕量級的虛擬機,是一個容器,隔離性好,能夠確保環(huán)境的統(tǒng)一,有效利用系統(tǒng)資源,輕松遷移和拓展。簡單的可以理解為容器就是一個小型功能齊全的虛擬機。
?
?實際上是如何使用的呢?
開發(fā)的程序包里有創(chuàng)建容器的腳本,我們會根據(jù)測試環(huán)境的實際情況,修改創(chuàng)建容器的shell腳本,然后部署到服務(wù)器上進(jìn)行測試。就是這么簡單。一個程序一個容器,我們有四五十個容器??梢园堰@些放在一個容器里嗎?可以,不過沒必要。如果把所有程序放在一個容器里,當(dāng)這個容器出了問題,整個系統(tǒng)就不能用了。一個程序一個容器的話,當(dāng)一個容器出現(xiàn)問題,其他容器還是可以正常使用的。再說容器占不了多少系統(tǒng)資源。
?容器和鏡像的關(guān)系
用了一段時間docker容器后,維護(hù)環(huán)境的時候,發(fā)現(xiàn)docker居然還有一個鏡像。什么是docker容器的鏡像呢?其實容器的創(chuàng)建是依賴鏡像的,鏡像跟java中類和對象的關(guān)系類似。通俗的來說,鏡像和容器的關(guān)系就像月餅?zāi)P秃驮嘛灥年P(guān)系一樣。月餅是根據(jù)月餅?zāi)P妥龀鰜淼?#xff0c;容器是根據(jù)鏡像文件造出來的。一個鏡像文件可以創(chuàng)建多個容器。一個月餅?zāi)J娇梢宰龀龊芏嘣嘛炓粯?。沒有鏡像,就沒有容器。容器的名稱不能重復(fù),否則創(chuàng)建容器就會失敗,你去看報錯信息,會寫:容器已經(jīng)存在。我們也可以通過容器做一個鏡像出來,拿著這個鏡像到新的環(huán)境部署。
- ?查看鏡像
- 查看宿主機上所有的容器(包括停止的) docker ps -a
- 創(chuàng)建容器
docker create -it 鏡像名稱
- 拉取ubuntu鏡像
docker pull python:3.8?? ? ? #拉取python3.8鏡像
docker pull redis? ? ? ? ? ? ? ? #拉取redis最新鏡像
docker pull mysql:5.7? ? ? ? #拉取mysql5.7鏡像
docker pull nginx?????????????? #拉取 nginx鏡像
docker pull centos:centos7
docker pull ubuntu:20.04? #拉取 ubuntu:20.04鏡像
- 啟動容器
docker start 容器id/名字?? # id號只要能夠區(qū)分即可無需寫全部
- 新建并啟動容器
docker run -it 鏡像名稱
docker rm -f 容器ID
docker run nginx
docker run -d nginx??? #后臺運行nginx?
停止容器
docker stop 容器名字/id號
容器的日志
容器在啟動和運行過程中是記錄日志的。怎么查呢?通過以下命令先查容器列表,找到你要查的容器的id
查到容器的id后,就可以以下命令查看日志,下面的命令是查看2021-11-22容器id的日志
容器的日志在什么路徑存放的呢?默認(rèn)路徑是:/var/lib/docker/overlay2這個下面。我一般都是通過命令查看日志,日志路徑具體在哪我是不知道的。有一次,服務(wù)器的var路徑可用空間滿了,我一查,原來容器的日志給打滿了。它要是不打滿,我都不知道它在哪。阿彌陀佛,我是用到哪查到哪,多余的東西都賴得看,docker容器用的多了,越來越覺得不夠用,覺得有必要系統(tǒng)的學(xué)習(xí)下docker了,然后就買了本書。不學(xué)不知道,一學(xué)嚇一跳,東西還真不少。慢慢學(xué)吧。
docker是容器,容器就是docker嗎?查了下,原來容器世界并不是只有docker,還有別的呢。
轉(zhuǎn)載自:
docker容器的簡單使用 (baidu.com)https://baijiahao.baidu.com/s?id=1765038448231587087&wfr=spider&for=pc
虛擬機的生命周期
容器的生命周期
?重點(容器一直運行的原因)
1.它有一條前臺進(jìn)程,一直在運行
2.以后如果自己制作的鏡像,運行起容器,必須有個可以夯住的命令COMMAND
3.如果COMMAND該命令結(jié)束,該容器也就結(jié)束了
?# 當(dāng)我們在后臺啟動的時候
1.比如:docker run -di --name=mycentos centos:centos7
2.這時他會自動啟動一個 /bin/bash窗口
3.因為我們并沒有關(guān)閉這個/bin/bash窗口,所以他會一直在后臺運行?
4.我們在使用start或者直接run進(jìn)入這個鏡像的時候,就相當(dāng)于運行的這個命令:/bin/bash,就進(jìn)入了這個bash窗口,相當(dāng)于進(jìn)入了容器(其實不是進(jìn)入了容器,可以把他看作是xshell一個遠(yuǎn)程連接,連接到這個容器。)這里我們看作是進(jìn)入到了這個容器,當(dāng)我們使用exit退出的時候,就相當(dāng)于關(guān)閉了/bin/bash這個窗口。所以容器一直會在后臺運行的原因就是這個/bin/bash窗口一直在啟動這,沒有關(guān)閉它
容器創(chuàng)建并啟動 – docker run
# 創(chuàng)建并啟動(run)
# 參數(shù):
??? -i:表示運行容器
??? -t:表示容器啟動后會進(jìn)入其命令行。加入這兩個參數(shù)后,容器創(chuàng)建就能登錄進(jìn)去。即分配一個偽終端。
??? -d:在run后面加上-d參數(shù),則會創(chuàng)建一個守護(hù)式容器在后臺運行(這樣創(chuàng)建容器后不會自動登錄容器,如果只加-i -t兩個參數(shù),創(chuàng)建后就會自動進(jìn)去容器)。
??? --name :為創(chuàng)建的容器命名。如果不寫,會自動分配一個名字(英文人名)
??? -v:表示目錄映射關(guān)系(前者是宿主機目錄,后者是容器目錄,映射到宿主機上的目錄),可以使用多個-v做多個目錄或文件映射。注意:最好做目錄映射,在宿主機上做修改,然后共享到容器上。(下述單獨演示)
??? -p:表示端口映射,前者是宿主機端口,后者是容器內(nèi)的映射端口。可以使用多個-p做多個端口映射 (下述單獨演示)
# 例子:run
??? docker run -it --name=myredis redis? # 這時就會啟動redis容器并進(jìn)去redis容器?
??? docker run -id --name=oursql mysql? # 這時就不會進(jìn)入mysql容器,再后臺運行
# 注意,docker run? 鏡像
使用該命令:如果本地沒有,會先pull,再run
5.進(jìn)入容器內(nèi)部和退出容器
5.1進(jìn)入容器
1.查詢機器上運行的容器 docker ps
2.進(jìn)入容器
docker exec -it 容器id/bin/bash
docker exec -it 427 /bin/bash
?#? exec真正的作用是在容器內(nèi)執(zhí)行命令,而不是真正的進(jìn)入到容器內(nèi)部
1.因為 /bin/bash這個命令,就相當(dāng)于與這個容器建立了連接,所以我們可以和容器做交互,當(dāng)我們關(guān)閉這個連接的時候,就會自動結(jié)束掉這個容器。
2.執(zhí)行exec命令:
?? ?docker exec -it 容器id ls? # 查詢根路徑所有文件
5.2退出容器
# 命令:exit
?? ?1.使用exit退出容器
??? 2.如果不是則會自動退出容器
-it 進(jìn)入容器退出) 與 (-id 進(jìn)入容器退出)區(qū)別:
# -it 進(jìn)入容器退出(前臺容器自動結(jié)束【后臺停止運行】)
1.在我們使用 -it 參數(shù)直接進(jìn)入該容器的時候,使用exit退出的時候這個容器就會自動結(jié)束。
?? ?- 此時后臺就沒有該運行中的容器。
# -id 進(jìn)入容器退出(前臺容器自動結(jié)束【后臺正常運行】)???
2.如果使用 -id 后臺運行容器的時候,使用 docker exec進(jìn)入該容器,此時使用exit退出該容器的話,只是退出該容器,并沒有從后臺結(jié)束該容器,該容器還會在后臺運行這。
文件拷貝(宿主機和容器互相拷貝文件)
# 1.從宿主機拷貝到容器內(nèi)部
?? ?docker cp 宿主機文件 容器id:容器路徑
??? docker cp /home/a.txt 427:/home?????
# 2.從容器中拷貝到宿主機
?? ?docker cp 容器id:容器路徑 宿主機路徑(起別名)
??? docker cp 427:home/a.txt a.txt
設(shè)置容器的IP地址:
- 使用 Docker 網(wǎng)絡(luò)命令創(chuàng)建一個自定義的網(wǎng)絡(luò),并指定子網(wǎng)和網(wǎng)關(guān)。然后,您可以在運行容器時使用 --net 和 --ip 參數(shù)來分配靜態(tài) IP 地址。例如,您可以執(zhí)行以下命令1:
docker network create --subnet=192.168.56.0/24 --gateway=192.168.56.1 mynetwork
docker run --net mynetwork --ip 192.168.56.40 -it ubuntu bash
- 使用 Docker Compose 工具來定義和運行多個容器,并在 docker-compose.yml 文件中配置網(wǎng)絡(luò)和 IP 地址。例如,您可以使用以下配置2:
version: '3'
services:ubuntu:image: ubuntunetworks:mynetwork:ipv4_address: 192.168.56.40
networks:mynetwork:driver: bridgeipam:driver: defaultconfig:- subnet: 192.168.56.0/24gateway: 192.168.56.1
然后,您可以使用?docker-compose up
?命令來啟動容器。
在dicker ubuntu容器中如何查看IP地址
查看在docker ubuntu容器中的IP地址,有以下幾種方法:
- 進(jìn)入容器內(nèi)部后,使用`cat /etc/hosts`命令,會顯示自己以及(--link)軟連接的容器IP1。
- 使用`docker inspect <container id>`或者`docker inspect --format ' { { .NetworkSettings.IPAddress }}' <container id>`或者`docker inspect -f ' { {range .NetworkSettings.Networks}} { {.IPAddress}} { {end}}' container_name_or_id`命令,可以查看容器詳細(xì)信息,里面包含IP地址信息23?。
- 使用`docker inspect -f ' { {.Name}} - { {.NetworkSettings.IPAddress }}' $ (docker ps -aq)`或者`docker inspect -f ' { {.Name}} - { {range .NetworkSettings.Networks}} { {.IPAddress}} { {end}}' $ (docker ps -aq)`或者`docker inspect --format=' { {.Name}} - { {range .NetworkSettings.Networks}} { {.IPAddress}} { {end}}' $ (docker ps -aq)`命令,可以獲取所有容器名稱及其IP地址23?。
參考鏈接:
(1) 獲取/顯示docker容器的ip地址 - CSDN博客. https://bing.com/search?q=%e5%9c%a8docker+ubuntu%e5%ae%b9%e5%99%a8%e4%b8%ad%e5%a6%82%e4%bd%95%e6%9f%a5%e7%9c%8bIP%e5%9c%b0%e5%9d%80.
(2) 如何獲取 Docker 容器的 IP 地址 - 知乎 - 知乎專欄. https://zhuanlan.zhihu.com/p/474638529.
(3) 查看docker 容器中的IP地址 - halberd.lee - 博客園. https://www.cnblogs.com/halberd-lee/p/12519294.html.
(4) 查看docker 容器的ip地址_查詢docker ip_我是大頭鳥的博客-CSDN博客. https://blog.csdn.net/datouniao1/article/details/103856583.
(5) docker ubuntu 查看ip_51CTO博客. https://blog.51cto.com/topic/docker-ubuntu-chakanip.html.
(6) 獲取/顯示docker容器的ip地址 - CSDN博客. https://blog.csdn.net/HaroldPQHaroldPQ/article/details/123459871.
(7)https://blog.csdn.net/2201_75529678/article/details/128113610
如何往dicker ubuntu容器里傳文件??
往docker ubuntu容器里傳文件。根據(jù)我的搜索結(jié)果,有以下幾種方法:
- 使用`docker cp`命令,可以在宿主機和容器之間復(fù)制文件。格式如下:
- 宿主機向容器傳送文件:`docker cp 本地文件的路徑 container_id:容器內(nèi)的路徑`23?。
- 容器向宿主機傳送文件:`docker cp container_id:容器內(nèi)的路徑 本地保存文件的路徑`23?。
- 進(jìn)入容器內(nèi)部后,使用`rz`命令,可以把本地電腦文件傳到容器。輸入`rz`就會彈出文件選項框,選擇文件上傳1??。
(1) 傳輸文件到docker容器 - 五毛錢的餅 - 博客園. https://www.cnblogs.com/fsong/p/11335251.html.
(2) 將文件從Ubuntu本機上傳至Docker容器中_ubuntu傳文件到docker容器_鷹KING的博客-CSDN博客. https://blog.csdn.net/weixin_51589360/article/details/122069045.
(3) Docker和Ubuntu主機互傳復(fù)制文件_軟件工程小施同學(xué)的博客-CSDN博客. https://blog.csdn.net/u013288190/article/details/103223824.
(4) docker學(xué)習(xí)13-docker容器的文件導(dǎo)入和導(dǎo)出 - 上海-悠悠 - 博客園. https://bing.com/search?q=%e5%a6%82%e4%bd%95%e5%be%80docker+ubuntu%e5%ae%b9%e5%99%a8%e9%87%8c%e4%bc%a0%e6%96%87%e4%bb%b6.
(5) docker學(xué)習(xí)13-docker容器的文件導(dǎo)入和導(dǎo)出 - 上海-悠悠 - 博客園. https://www.cnblogs.com/yoyoketang/p/12131002.html.
(6) docker學(xué)習(xí)13-docker容器的文件導(dǎo)入和導(dǎo)出 - 騰訊云. https://cloud.tencent.com/developer/article/1574278.