Docker學(xué)習(xí)筆記

前言

作為一個(gè)苦逼Windows用戶, Docker和Virtualbox只能二選一. 所以之前就一直沒怎么用過Docker. 但最近因工作需要不得不用docker, 只好惡補(bǔ)一下, 順便做個(gè)筆記, 把自己學(xué)習(xí)過程中的一些理解記錄下來

常用命令

下載鏡像

docker pull <image_name>

列出鏡像

docker images
docker image ls

刪除鏡像

docker rmi <image_name/image_id>

運(yùn)行容器

docker run -it <image_name/image_id> <params>

-i ,interactive, 交互式操作

-t ,terminal 創(chuàng)建一個(gè)偽終端

-i 和 -t一般連用, 不用-i的話不能進(jìn)行交互(比如用不了vi這些交互式命令)

-d ,daemon 后臺(tái)運(yùn)行

--rm, 停止后自動(dòng)刪除容器, 不需要再去docker ps -a&&docker rm了

-v <path>:<path>, volume 共享文件夾

-p <host_port>:<container_port>, port 映射端口

-P, Ports 映射全部端口

--privileged, 用特權(quán)方式運(yùn)行容器. 可以簡(jiǎn)單理解為Windows下的以管理員權(quán)限運(yùn)行, linux下的sudo, 一般涉及到宿主機(jī)硬件或者系統(tǒng)文件的時(shí)候才需要用到

--net "bridge", 指定容器的網(wǎng)絡(luò)連接類型

bridge, 創(chuàng)建獨(dú)立的網(wǎng)絡(luò)棧,保證容器內(nèi)的進(jìn)程組使用獨(dú)立的網(wǎng)絡(luò)環(huán)境,實(shí)現(xiàn)容器間、容器與宿主機(jī)之間的網(wǎng)絡(luò)棧隔離。另外,Docker通過宿主機(jī)上的網(wǎng)橋(docker0)來連通容器內(nèi)部的網(wǎng)絡(luò)棧與宿主機(jī)的網(wǎng)絡(luò)棧,實(shí)現(xiàn)容器與宿主機(jī)乃至外界的網(wǎng)絡(luò)通信

host, 容器將不會(huì)虛擬出自己的網(wǎng)卡,配置自己的IP等,而是使用宿主機(jī)的IP和端口

none, 容器創(chuàng)建后沒有網(wǎng)卡、IP、路由等信息。需要手動(dòng)添加網(wǎng)卡、配置IP

container, 指定新創(chuàng)建的容器和已經(jīng)存在的一個(gè)容器共享一個(gè)Network Namespace,而不是和宿主機(jī)共享

--name "container_name", 自定義一個(gè)容器名稱, 方便后面使用

-h "<hostname>", host 指定容器的hostname

--dns <dns_server>, 指定容器的dns服務(wù)器

列出容器

列出當(dāng)前運(yùn)行的容器

docker ps

列出所有創(chuàng)建的容器(包含已關(guān)閉但未刪除的容器)

docker ps -a

關(guān)閉容器

docker stop <container_id/container_name>

刪除容器

docker rm <container_id/container_name>

重啟容器

docker restart <container_id/container_name>

進(jìn)入后臺(tái)容器

docker attach <container_id/container_name>

在容器內(nèi)執(zhí)行

docker exec --it <container_id/container_name> <command>

如要在名稱為lzskyline的容器中開啟一個(gè)bash, 可使用:

docker exec --it lzskyline bash

退出exec啟動(dòng)的程序不會(huì)影響容器的停止

構(gòu)建鏡像

根據(jù)dockerfile創(chuàng)建鏡像文件

docker build -t <image_name> <image_path>

常用快捷鍵

容器內(nèi)關(guān)閉退出: Ctrl + D

容器內(nèi)關(guān)閉不退出: Ctrl+P+Q

dockerfile部分

  1. 如果別人的鏡像用的不爽但是又沒有對(duì)方的dockerfile文件時(shí)可以用FROM的方式繼承鏡像內(nèi)容, 再使用RUN執(zhí)行命令二次修改

常見問題

  1. docker容器運(yùn)行后自動(dòng)退出, 加了-itd不起作用

    原因:

    image的ENTRYPOINT可能設(shè)置為了一個(gè)非掛起的程序, 比如在dockerfile里面指定了ENTRYPOINT ["ls"]. 這樣就是會(huì)自動(dòng)退出的

    解決方案:

    有dockerfile的話就修改一下, 改為ENTRYPOINT ["bash"]之類的即可.

    沒有dockerfile的話可以用FROM的方式繼承源鏡像, 再在下面加上ENTRYPOINT ["bash"], 可以覆蓋掉原來的ENTRYPOINT.

    dockerfile改好之后

PS

現(xiàn)在還有很多docker的功能沒有使用到, 后續(xù)摸索完之后會(huì)繼續(xù)補(bǔ)充, 目前計(jì)劃的有

  • dockerfile的相關(guān)語法
  • 更新鏡像(類似保存快照)

內(nèi)容若有錯(cuò)誤之處還請(qǐng)留言斧正 _


博客文章遷移: 2019-11-22 16:21

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容