前言
作為一個苦逼Windows用戶, Docker和Virtualbox只能二選一. 所以之前就一直沒怎么用過Docker. 但最近因工作需要不得不用docker, 只好惡補一下, 順便做個筆記, 把自己學習過程中的一些理解記錄下來
常用命令
下載鏡像
docker pull <image_name>
列出鏡像
docker images
docker image ls
刪除鏡像
docker rmi <image_name/image_id>
運行容器
docker run -it <image_name/image_id> <params>
-i ,interactive, 交互式操作
-t ,terminal 創(chuàng)建一個偽終端
-i 和 -t一般連用, 不用-i的話不能進行交互(比如用不了vi這些交互式命令)
-d ,daemon 后臺運行
--rm, 停止后自動刪除容器, 不需要再去docker ps -a&&docker rm了
-v <path>:<path>, volume 共享文件夾
-p <host_port>:<container_port>, port 映射端口
-P, Ports 映射全部端口
--privileged, 用特權方式運行容器. 可以簡單理解為Windows下的以管理員權限運行, linux下的sudo, 一般涉及到宿主機硬件或者系統(tǒng)文件的時候才需要用到
--net "bridge", 指定容器的網(wǎng)絡連接類型
bridge, 創(chuàng)建獨立的網(wǎng)絡棧,保證容器內的進程組使用獨立的網(wǎng)絡環(huán)境,實現(xiàn)容器間酝蜒、容器與宿主機之間的網(wǎng)絡棧隔離咙俩。另外弦悉,Docker通過宿主機上的網(wǎng)橋(docker0)來連通容器內部的網(wǎng)絡棧與宿主機的網(wǎng)絡棧窒典,實現(xiàn)容器與宿主機乃至外界的網(wǎng)絡通信
host, 容器將不會虛擬出自己的網(wǎng)卡,配置自己的IP等稽莉,而是使用宿主機的IP和端口
none, 容器創(chuàng)建后沒有網(wǎng)卡瀑志、IP、路由等信息污秆。需要手動添加網(wǎng)卡劈猪、配置IP
container, 指定新創(chuàng)建的容器和已經(jīng)存在的一個容器共享一個Network Namespace,而不是和宿主機共享
--name "container_name", 自定義一個容器名稱, 方便后面使用
-h "<hostname>", host 指定容器的hostname
--dns <dns_server>, 指定容器的dns服務器
列出容器
列出當前運行的容器
docker ps
列出所有創(chuàng)建的容器(包含已關閉但未刪除的容器)
docker ps -a
關閉容器
docker stop <container_id/container_name>
刪除容器
docker rm <container_id/container_name>
重啟容器
docker restart <container_id/container_name>
進入后臺容器
docker attach <container_id/container_name>
在容器內執(zhí)行
docker exec --it <container_id/container_name> <command>
如要在名稱為lzskyline的容器中開啟一個bash, 可使用:
docker exec --it lzskyline bash
退出exec啟動的程序不會影響容器的停止
構建鏡像
根據(jù)dockerfile創(chuàng)建鏡像文件
docker build -t <image_name> <image_path>
常用快捷鍵
容器內關閉退出: Ctrl + D
容器內關閉不退出: Ctrl+P+Q
dockerfile部分
- 如果別人的鏡像用的不爽但是又沒有對方的dockerfile文件時可以用FROM的方式繼承鏡像內容, 再使用RUN執(zhí)行命令二次修改
常見問題
-
docker容器運行后自動退出, 加了-itd不起作用
原因:
image的ENTRYPOINT可能設置為了一個非掛起的程序, 比如在dockerfile里面指定了ENTRYPOINT ["ls"]. 這樣就是會自動退出的
解決方案:
有dockerfile的話就修改一下, 改為ENTRYPOINT ["bash"]之類的即可.
沒有dockerfile的話可以用FROM的方式繼承源鏡像, 再在下面加上ENTRYPOINT ["bash"], 可以覆蓋掉原來的ENTRYPOINT.
dockerfile改好之后
PS
現(xiàn)在還有很多docker的功能沒有使用到, 后續(xù)摸索完之后會繼續(xù)補充, 目前計劃的有
- dockerfile的相關語法
- 更新鏡像(類似保存快照)
內容若有錯誤之處還請留言斧正 _
博客文章遷移: 2019-11-22 16:21