概述
起源
2013 年由 DotCloud 公司開源出來的容器管理工具
DotCloud 公司是一家 PAAS 服務(wù)提供商,從 docker 的出身也可以看出它的主要功能和方向
技術(shù)原理
開始時(shí)是基于 LXC 容器技術(shù)
cgroup: 將任意進(jìn)程進(jìn)行分組化管理,同時(shí)還可以控制進(jìn)程的資源占用(CPU, 內(nèi)存等等)情況
namespace: 讓每個(gè)進(jìn)程組有獨(dú)立的 PID, IPC 和網(wǎng)絡(luò)空間
解決的痛點(diǎn)
打包部署
運(yùn)行環(huán)境標(biāo)準(zhǔn)化
更加高效的利用物理機(jī)
docker 基本命令
容器的一個(gè)標(biāo)準(zhǔn)的生命周期包括:創(chuàng)建,啟動(dòng),停止,終止和移除
docker pull busybox # 遠(yuǎn)程下載 images
docker run -it –rm –name busybox busybox # 創(chuàng)建容器,名稱為 busybox
docker stop/kill busybox # 停止/強(qiáng)行停止 容器
docker start/restart busybox # 啟動(dòng)/重新啟動(dòng) 容器
docker rm busybox # 移除容器
常用命令
docker exec 可以運(yùn)行 容器中的命令
docker cp 可以在主機(jī)和容器之間復(fù)制文件
docker inspect 查看容器的詳細(xì)信息,也可以查看鏡像詳細(xì)信息
docker stats 容器的資源占用信息
docker events 返回 docker 主機(jī)上發(fā)生的所有 docker 事件流
docker logs 監(jiān)控容器的日志
docker top 查看容器內(nèi)運(yùn)行的進(jìn)程
docker 使用示例(busybox)
docker 容器是完全隔離的運(yùn)行環(huán)境,但實(shí)際使用中,難免需要和外部或者 docker 容器進(jìn)行交互。
比較常用的交互主要有 環(huán)境變量,磁盤,網(wǎng)絡(luò)
環(huán)境變量
docker run -it --rm -e MY_NAME=wangyubin busybox env
外部的環(huán)境變量可以在容器啟動(dòng)的時(shí)候注入到容器中
磁盤
容器會(huì)共享鏡像中的內(nèi)容,容器自己的狀態(tài)才會(huì)保存在磁盤上。
docker volume ls # 查看所有容器占用的磁盤名稱 docker volume inspect VOL_NAME # 查看具體的磁盤信息
容器中的文件,不會(huì)改變 image
在一個(gè)容器中創(chuàng)建文件(test.txt)
$ docker run -it --rm busybox / # touch test.txt / # ls bin etc proc sys tmp var dev home root test.txt usr
重新啟動(dòng)的容器中是不包含這個(gè)文件的
$ docker run -it --rm busybox / # ls bin dev etc home proc root sys tmp usr var
容器掛載外部的文件系統(tǒng)
如果希望容器之間共享文件,或者將文件放在容器之外來管理,可采用如下方式 容器啟動(dòng)時(shí)掛載外部文件夾
docker run -it --rm -v /home/wangyubin/tmp/volume:/share-dir busybox cd share-dir touch test.txt
另一個(gè)容器也掛載這個(gè)文件夾
docker run -it --rm -v /home/wangyubin/tmp/volume:/share-dir busybox / # ls share-dir test.txt
網(wǎng)絡(luò)
容器中的服務(wù)默認(rèn)只有當(dāng)前容器可以訪問,容器的宿主和其他容器都是無法訪問的。
通過暴露端口,讓宿主可以訪問容器內(nèi)服務(wù)
通過 nc 命令模擬一個(gè)服務(wù)
$ docker run -it -p 1234:1234 --rm busybox / # nc -l -p 1234
在宿主機(jī)上可以通過 docker ps 命令看到暴露的端口
docker ps nc localhost 1234 # 連接上本地的 1234 端口,就可以和 docker 容器互發(fā)消息
容器創(chuàng)建在同一網(wǎng)絡(luò)上
創(chuàng)建容器運(yùn)行的網(wǎng)絡(luò),然后將 2 個(gè)容器啟動(dòng)到同一個(gè)網(wǎng)絡(luò)上
$ docker network create test a85b5589234b701b1237a364f7796b47e2d1ba4506740767c581a3d62d9e8f48 $ docker network ls NETWORK ID NAME DRIVER SCOPE a85b5589234b test bridge local ... ...
啟動(dòng)第一個(gè) docker,name 為 test01,并在容器中用 nc 命令模擬一個(gè)服務(wù)
$ docker run -it --rm --name test01 --network test busybox / # nc -l -p 1234
啟動(dòng)第二個(gè) docker,name 為 test02,和 test01 在同一個(gè)網(wǎng)絡(luò)上
$ docker run -it --rm --name test02 --network test busybox / # nc test01 1234 hello
由于在同一個(gè)網(wǎng)絡(luò)上,可以通過 test01 這個(gè)名稱直接連接另一個(gè)容器
啟動(dòng)第三個(gè) docker,name 為 test03,使用默認(rèn)的網(wǎng)絡(luò)
$ docker run -it --rm --name test03 busybox / # nc test01 1234 nc: bad address 'test01'
由于 test03 和 test01 不在一個(gè)網(wǎng)絡(luò)上,所以無法互通
鏈接:https://www.cnblogs.com/wang_yb/p/8625003.html
-
內(nèi)存
+關(guān)注
關(guān)注
8文章
3122瀏覽量
75248 -
容器
+關(guān)注
關(guān)注
0文章
511瀏覽量
22449 -
Docker
+關(guān)注
關(guān)注
0文章
515瀏覽量
12952
原文標(biāo)題:docker 使用示例(busybox)
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
docker基礎(chǔ)知識(shí)和使用bmnnsdk時(shí)的docker常用命令
HP Unix系統(tǒng)維護(hù)基本命令
學(xué)習(xí) Docker 容器的 8 個(gè)命令分享

docker 搜索鏡像,docker查看鏡像詳細(xì)信息(docker下載鏡像命令)
docker exec命令的使用方法
linux關(guān)閉docker的命令
GD32VW553基本命令用戶指南應(yīng)用說明

評(píng)論