成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Docker FAQ總結(jié)整理

1treeS / 2463人閱讀

摘要:要在的端口上公開容器的端口請執(zhí)行以下操作可以解決這一問題的一種方法是使用所需的端口映射設(shè)置另一個(gè)容器并比較命令的輸出不過必須刪除一些其他選項(xiàng)強(qiáng)制通過代理進(jìn)行通信。

說明:
docker 小寫是指Docker系統(tǒng)的命令行工具。
Docker 大寫是指Docker軟件系統(tǒng)。
image 鏡像,就量個(gè)軟件包,除操作系統(tǒng)內(nèi)核外的,包括系統(tǒng)庫,應(yīng)用軟件,啟動配置等,創(chuàng)建后只讀。
container 是指Docker啟動一個(gè)鏡像后的運(yùn)行結(jié)果,相當(dāng)于在image基礎(chǔ)上寫盤產(chǎn)生的增量。

如何刪除舊的Docker container容器
docker container prune

刪除所有未使用的數(shù)據(jù) (即按順序: 停止的container, 沒有container的volumne卷和沒有container容器的image鏡像):

docker system prune 

用于刪除所有未標(biāo)記image鏡像的類似命令:

docker images | grep "" | awk "{print $3}" | xargs docker rmi    

如果你的docker比較舊,可以用下面的命令:

docker rm $(docker ps -q -f status=exited)

Windows下:

FOR /f "tokens=*" %i IN ("docker ps -a -q") DO docker rm %i

如用PowerShell:

docker rm @(docker ps -aq)

參見 :https://stackoverflow.com/que...

如何在Docker中處理持久性存儲 (例如數(shù)據(jù)庫)?

Docker 1.9.0 以上版本使用 volume API:

docker volume create --name hello
docker run -d -v hello:/container/path/for/volume container_image my_command

這意味著必須放棄僅數(shù)據(jù)容器模式以支持新的卷模式。為了能夠保存(持久化)數(shù)據(jù)以及共享容器間的數(shù)據(jù),Docker提出了Volume的概念。簡單來說,Volume就是目錄或者文件,它可以繞過默認(rèn)的聯(lián)合文件系統(tǒng),而以正常的文件或者目錄的形式存在于宿主機(jī)上。

實(shí)際上, volume 是實(shí)現(xiàn)數(shù)據(jù)容器模式的更好方法。

如果使用 -v volume_name:/container/fs/path Docker將自動為您創(chuàng)建一個(gè)已命名的卷, 用:

docker volume ls -f dangling=true

檢查卷名稱: docker volume ls

查看卷在主機(jī)上的存儲位置: docker volume inspect volume_name

可以像普通目錄一樣進(jìn)行備份

如果要授權(quán)一個(gè)容器訪問另一個(gè)容器的Volume,我們可以使用-volumes-from參數(shù)來執(zhí)行docker run

新的volume api 添加了一個(gè)有用的命令, 它允許您識別懸空卷:

docker volume ls -f dangling=true

然后通過它的名稱刪除它:

docker volume rm 

也可以一行代碼搞定全部:

docker volume rm $(docker volume ls -f dangling=true -q)
# 或用 1.13.x 以上版本
docker volume prune

參見: https://stackoverflow.com/que...

是否可以在活Docker container中公開端口?

不能通過Docker來執(zhí)行此項(xiàng), 但您可以從主機(jī)上訪問容器的未公開端口。

如果您有一個(gè)容器, 它的端口8000上運(yùn)行的東西, 您可以運(yùn)行

wget http://container_ip:8000

查看 ip 地址, 運(yùn)行以下兩個(gè)命令:

docker ps
docker inspect container_name | grep IPAddress

在內(nèi)部, Docker shell在運(yùn)行 image 鏡像時(shí)調(diào)用 iptables, 因此可能會對此進(jìn)行一些更改。

要在 localhost 的8001端口上公開容器的端口 8000, 請執(zhí)行以下操作:

iptables -t nat -A  DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000

可以解決這一問題的一種方法是, 使用所需的端口映射設(shè)置另一個(gè)容器, 并比較 iptables -save 命令的輸出 (不過, 必須刪除一些其他選項(xiàng), 強(qiáng)制通過Docker代理進(jìn)行通信)。

注意: 這是在顛覆Docker使用方式, 所以應(yīng)該小心使用, 它可能會創(chuàng)造藍(lán)色煙霧

另一種選擇, 是看-P 選項(xiàng)(0.6.6之后版本?),這將使用隨機(jī)的主機(jī)端口, 然后將這些連接起來。

通過 0.6.5, 您可以使用鏈接--link功能來搞一個(gè)新的容器, 它與現(xiàn)有的容器形成一個(gè)對話, 并用 -p 可以額外導(dǎo)出端口(鏈接的使用可以參考這個(gè)鏈接 http://blog.csdn.net/zhangyif... ),使用了link機(jī)制后,可以通過指定的名字來和目標(biāo)容器通信,這其實(shí)是通過給/etc/hosts中加入名稱和IP的解析關(guān)系來實(shí)現(xiàn)的

與docker 0.11?您可以使用 docker run --net=host。要將容器直接附加到主機(jī)的網(wǎng)絡(luò)接口, 因此在容器中打開的所有端口都將被暴露。

https://stackoverflow.com/que...

將文件從主機(jī)復(fù)制到 Docker 容器

cp 命令可用于復(fù)制文件。可以復(fù)制一個(gè)特定的文件, 如:

docker cp foo.txt mycontainer:/foo .txt
docker cp mycontainer:/foo foo.txt

文件夾 src 包含的多個(gè)文件可以使用以下方法復(fù)制到目標(biāo)文件夾中:

docker cp src/. mycontainer:/target
docker cp mycontainer:/src/. target

在1.8 之前的Docker版本中, 僅有可能將文件從容器復(fù)制到主機(jī)。不能從主機(jī)到容器。

參考:
https://stackoverflow.com/que...

如何在Docker容器中裝載主機(jī)目錄?

有幾種方法可以做到這一點(diǎn)。最簡單的方法是使用 Dockerfile ADD命令, 如下:

ADD . /path/inside/docker/container

但是, 在生成 Dockerfile 后, 主機(jī)上對此目錄所做的任何更改都不會顯示在容器中。這是因?yàn)樵谏扇萜鲿r(shí), Docker將目錄壓縮為.tar文件, 并將該上下文永久地上載到容器中。

第二種方法是裝載卷。為盡可能便于移植, 因此不能將主機(jī)目錄固化地映射到 dockerfile 中的 Docker 容器目錄, 因?yàn)橹鳈C(jī)目錄可以根據(jù)運(yùn)行的計(jì)算機(jī)而更改。要將主機(jī)目錄映射到 Docker 容器目錄, 在使用 Docker 運(yùn)行時(shí), 您需要使用 -v 選項(xiàng):

docker run -v /host/directory:/container/directory -other -options image_name command_to_run

參考:
https://stackoverflow.com/que...

如何在不通過倉庫的情況下將Docker鏡像從一個(gè)主機(jī)復(fù)制到另一個(gè)宿主?

您需要將Docker 鏡像保存為 tar 文件:

docker save -o  

然后將您的圖像復(fù)制到一個(gè)具有常規(guī)文件傳輸工具 (如 cp 或 scp) 的新系統(tǒng)中。之后, 您必須將圖像加載到Docker中:

docker load -i 

PS: 您可能需要 sudo 執(zhí)行命令

參見:
https://stackoverflow.com/que...

如何進(jìn)入Docker container?

docker attach可以連接到你的docker容器, 但這與 ssh 并不完全相同。例如, 如果你的容器運(yùn)行的是網(wǎng)絡(luò)服務(wù)器, 則 docker attach可能會連接到 web 服務(wù)進(jìn)程的標(biāo)準(zhǔn)輸出。它不一定會給你一個(gè)shell。

docker exec 命令可能是你要查找的內(nèi)容;這將允許你在現(xiàn)有容器內(nèi)運(yùn)行任意命令。例如:

docker exec -it  bash

當(dāng)然, 任何正在運(yùn)行的命令都必須存在于容器文件系統(tǒng)中。

在上面的命令 是目標(biāo)容器的名稱或 ID。你是否使用Docker是不重要的;只需運(yùn)行 docker ps, 并使用 ID (在第一列中顯示的十六進(jìn)制字符串) 或名稱 (顯示在最后一列中)。例如, 給定:

$ docker ps
d2d4a89aaee9        larsks/mini-httpd   "mini_httpd -d /cont   7 days ago          Up 7 days                               web                 

可以運(yùn)行:

$ docker exec -it web ip addr
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
    valid_lft forever preferred_lft forever
18: eth0:  mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 scope global eth0
    valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:3/64 scope link 
    valid_lft forever preferred_lft forever

同樣效果也以通過下面指令達(dá)到:

$ docker exec -it d2d4a89aaee9 ip addr

類似地也可以在容器里啟動一個(gè)shell;

$ docker exec -it web sh
/ # echo This is inside the container.
This is inside the container.
/ # exit
$

參考:
https://stackoverflow.com/que...

在 Dockerfile 中, CMD 和 ENTRYPOINT 的區(qū)別是什么?

Docker 有一個(gè)默認(rèn)的入口(entrypoint), 它是/bin/sh -c, 但沒有默認(rèn)命令。

當(dāng)您運(yùn)行這樣的 Docker 時(shí): docker run -i t ubuntu bash 入口是默認(rèn)/bin/sh -c, 鏡像是 ubuntu, 命令是 bash。

該命令通過入口運(yùn)行。也就是說, 被執(zhí)行的實(shí)際的事情是/bin/sh -c bash。這允許 Docker 通過依賴 shell 分析器實(shí)現(xiàn)快速RUN。后來, 人們要求能夠定制這樣的入口于是引入了-entrypoint

以上示例中的 ubuntu 后面的所有內(nèi)容都是命令, 并傳遞給入口。當(dāng)使用 CMD 指令時(shí), 它就像是在做 docker run --t ubuntu 。將是入口的參數(shù)。

如果改為鍵入此命令docker run -i -t ubuntu, 則也會得到相同的結(jié)果。您仍將在容器中啟動 bash shell, 因?yàn)?ubuntu Dockerfile 指定了默認(rèn) CMD: CMD ["bash"]

當(dāng)一切都傳遞給入口, 便對鏡像來說產(chǎn)生一個(gè)很好的特性??梢詫㈢R像用作 "二進(jìn)制"的執(zhí)行文件。當(dāng)使用 ["/bin/cat"] 作為入口, 然后運(yùn)行 docker run img /etc/passwd, 這里,/etc/passwd是命令, 并傳遞到入口,所以最終結(jié)果執(zhí)行便是/bin/cat /etc/passwd。

另一個(gè)例子是將任何命令行指令(cli)作為入口。例如, 如果您有一個(gè) redis 鏡像, 你可以簡單地通過設(shè)置ENTRYPOINT ["redis", "-H", "something", "-u", "toto"],然后運(yùn)行docker run redisimg get key得到鍵值, 而不是通過運(yùn)行 docker run redisimg redis -H something -u toto get key,來得到相同的結(jié)果。

ENTRYPOINT 指定在容器啟動時(shí)將始終執(zhí)行的命令。

CMD 指定將被送入 ENTRYPOINT 的參數(shù)。

如果要使鏡像專用于特定命令, 您將使用入口 ENTRYPOINT ["/path/dedicated_command"]

否則, 如果要為一般目的制作鏡像, 則可以保留未指定的 ENTRYPOINT 并使用 CMD ["/path/dedicated_command"], 因?yàn)槟憧梢酝ㄟ^向docker run提供參數(shù)來覆蓋該設(shè)置。

例如, 如果您的 Dockerfile 是:

FROM debian:wheezy
ENTRYPOINT ["/bin/ping"]
CMD ["localhost"]

運(yùn)行不帶參數(shù)的鏡像會 ping localhost:

$ docker run -it test
PING localhost (127.0.0.1): 48 data bytes
56 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.096 ms
56 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.088 ms
56 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.088 ms
^C--- localhost ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.088/0.091/0.096/0.000 ms

現(xiàn)在帶參數(shù)運(yùn)行鏡像則會ping 參數(shù)指定的主機(jī):

$ docker run -it test google.com
PING google.com (173.194.45.70): 48 data bytes
56 bytes from 173.194.45.70: icmp_seq=0 ttl=55 time=32.583 ms
56 bytes from 173.194.45.70: icmp_seq=2 ttl=55 time=30.327 ms
56 bytes from 173.194.45.70: icmp_seq=4 ttl=55 time=46.379 ms
^C--- google.com ping statistics ---
5 packets transmitted, 3 packets received, 40% packet loss
round-trip min/avg/max/stddev = 30.327/36.430/46.379/7.095 ms

做為比較,假設(shè)你有一個(gè) Dockerfile 如下:

FROM debian:wheezy
CMD ["/bin/ping", "localhost"]

運(yùn)行不帶參數(shù)的鏡像會 ping localhost:

$ docker run -it test
PING localhost (127.0.0.1): 48 data bytes
56 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.076 ms
56 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.087 ms
56 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.090 ms
^C--- localhost ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.076/0.084/0.090/0.000 ms

現(xiàn)在帶參數(shù)運(yùn)行鏡像則會運(yùn)行參數(shù)指令:

docker run -it test bash
root@e8bb7249b843:/#

可以看看Brian DeHamer這篇文章: https://www.ctl.io/developers...

運(yùn)行Docker鏡像微型指南 下載一個(gè)ubuntu鏡像

sudo docker pull ubuntu

使用ubuntu運(yùn)行一個(gè)交互性的shell

sudo docker run -i -t ubuntu /bin/bash

docker ps命令

sudo docker ps #列出當(dāng)前所有正在運(yùn)行的container
sudo docker ps -l #列出最近一次啟動的,且正在運(yùn)行的container
sudo docker ps -a #列出所有的container

port命令

docker run -p 80:8080 #映射容器的8080端口到宿主機(jī)的80端口

刪除容器命令

sudo docker rm sudo docker ps -a -q#刪除所有容器
sudo docker rm $CONTAINER_ID#刪除容器id為CONTAINER_ID的容器

其他命令快速參考:

sudo docker images #查看本地鏡像
sudo docker attach $CONTAINER_ID #啟動一個(gè)已存在的docker實(shí)例
sudo docker stop $CONTAINER_ID #停止docker實(shí)例
sudo docker logs $CONTAINER_ID #查看docker實(shí)例運(yùn)行日志,確保正常運(yùn)行
sudo docker inspect $CONTAINER_ID #查看container的實(shí)例屬性,比如ip等等

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27236.html

相關(guān)文章

  • FAQ寶典之常見問題排查與修復(fù)方法

    摘要:日志會顯示令牌過期的信息,隨后檢查主機(jī)和主機(jī)的時(shí)鐘是否同步。如果這個(gè)子網(wǎng)已經(jīng)被使用,你將需要更改網(wǎng)絡(luò)中使用的默認(rèn)子網(wǎng)。如果負(fù)載均衡器處于初始化狀態(tài),則很可能主機(jī)之間無法進(jìn)行跨主機(jī)通信。而一直顯示黃色初始化狀態(tài),說明一直沒有通過健康檢查。 一、服務(wù)/容器 1、為什么我只能編輯容器的名稱? Docker容器在創(chuàng)建之后就不可更改了。唯一可更改的內(nèi)容是我們要存儲的不屬于Docker容器本身的那...

    LdhAndroid 評論0 收藏0
  • FAQ寶典之Rancher Server

    摘要:寶典系列來襲,相關(guān)的常見問題,本文一網(wǎng)打盡。在中的設(shè)置是以秒為單位的。在啟動時(shí),執(zhí)行模式遷移。它的競爭條件可能會留下一個(gè)鎖定條目,這將阻止后續(xù)的流程。更改為,并清除的值。確認(rèn)更改在表中是否生效。如果認(rèn)證未打開,則響應(yīng)代碼應(yīng)為。 Rancher FAQ寶典系列來襲,Rancher Server相關(guān)的常見問題,本文一網(wǎng)打盡。 1、Docker運(yùn)行Rancher Server容器應(yīng)該注意什么...

    Lsnsh 評論0 收藏0
  • CI Weekly #8 | CI/CD 技能進(jìn)階路線

    摘要:微店技術(shù)團(tuán)隊(duì)公眾號容器化之路這是一套以阿里云為基礎(chǔ),為核心,第三方服務(wù)為工具的開發(fā)測試部署流程,以及內(nèi)部的代碼提交,版本管理規(guī)范。如何打造安全的容器云平臺對,微服務(wù),來說都是非常好的落地實(shí)踐技術(shù)。 在使用 flow.ci 進(jìn)行持續(xù)集成的過程中,也許你會遇到一些小麻煩。最近我們整理了一些常見問題在 flow.ci 文檔之 FAQ,希望對你有用。如果你遇到其他問題,也可以通過「在線消息」或...

    FuisonDesign 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<