日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker 基础

發布時間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker 基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

起源

2013 年由 DotCloud 公司開源出來的容器管理工具
DotCloud 公司是一家 PAAS 服務提供商,從 docker 的出身也可以看出它的主要功能和方向

技術原理

開始時是基于 LXC 容器技術

  • cgroup: 將任意進程進行分組化管理,同時還可以控制進程的資源占用(CPU, 內存等等)情況
  • namespace: 讓每個進程組有獨立的 PID, IPC 和網絡空間

詳細信息可以參照:http://www.cnblogs.com/wang_yb/p/3923040.html

解決的痛點

  • 打包部署
  • 運行環境標準化
  • 更加高效的利用物理機

docker 基本命令

容器的一個標準的生命周期包括: 創建,啟動,停止,終止和移除

  • docker pull busybox # 遠程下載 images
  • docker run -it –rm –name busybox busybox # 創建容器,名稱為 busybox
  • docker stop/kill busybox # 停止/強行停止 容器
  • docker start/restart busybox # 啟動/重新啟動 容器
  • docker rm busybox # 移除容器

常用命令

  • docker exec 可以運行 容器中的命令
  • docker cp 可以在主機和容器之間復制文件
  • docker inspect 查看容器的詳細信息,也可以查看鏡像詳細信息
  • docker stats 容器的資源占用信息
  • docker events 返回 docker 主機上發生的所有 docker 事件流
  • docker logs 監控容器的日志
  • docker top 查看容器內運行的進程

docker 使用示例(busybox)

docker 容器是完全隔離的運行環境,但實際使用中,難免需要和外部或者 docker 容器進行交互。
比較常用的交互主要有 環境變量,磁盤,網絡

環境變量

docker run -it --rm -e MY_NAME=wangyubin busybox env

外部的環境變量可以在容器啟動的時候注入到容器中

磁盤

容器會共享鏡像中的內容,容器自己的狀態才會保存在磁盤上。

docker volume ls # 查看所有容器占用的磁盤名稱 docker volume inspect VOL_NAME # 查看具體的磁盤信息

容器中的文件,不會改變 image

在一個容器中創建文件(test.txt)

$ docker run -it --rm busybox / # touch test.txt / # ls bin etc proc sys tmp var dev home root test.txt usr

重新啟動的容器中是不包含這個文件的

$ docker run -it --rm busybox / # ls bin dev etc home proc root sys tmp usr var

容器掛載外部的文件系統

如果希望容器之間共享文件,或者將文件放在容器之外來管理,可采用如下方式 容器啟動時掛載外部文件夾

docker run -it --rm -v /home/wangyubin/tmp/volume:/share-dir busybox cd share-dir touch test.txt

另一個容器也掛載這個文件夾

docker run -it --rm -v /home/wangyubin/tmp/volume:/share-dir busybox / # ls share-dir test.txt

網絡

容器中的服務默認只有當前容器可以訪問,容器的宿主和其他容器都是無法訪問的。

通過暴露端口,讓宿主可以訪問容器內服務

通過 nc 命令模擬一個服務

$ docker run -it -p 1234:1234 --rm busybox / # nc -l -p 1234

在宿主機上可以通過 docker ps 命令看到暴露的端口

docker psnc localhost 1234 # 連接上本地的 1234 端口,就可以和 docker 容器互發消息

容器創建在同一網絡上

創建容器運行的網絡,然后將 2 個容器啟動到同一個網絡上

$ docker network create test a85b5589234b701b1237a364f7796b47e2d1ba4506740767c581a3d62d9e8f48$ docker network ls NETWORK ID NAME DRIVER SCOPE a85b5589234b test bridge local ... ...

啟動第一個 docker,name 為 test01,并在容器中用 nc 命令模擬一個服務

$ docker run -it --rm --name test01 --network test busybox / # nc -l -p 1234

啟動第二個 docker,name 為 test02,和 test01 在同一個網絡上

$ docker run -it --rm --name test02 --network test busybox / # nc test01 1234 hello

由于在同一個網絡上,可以通過 test01 這個名稱直接連接另一個容器

啟動第三個 docker,name 為 test03,使用默認的網絡

$ docker run -it --rm --name test03 busybox / # nc test01 1234 nc: bad address 'test01'

由于 test03 和 test01 不在一個網絡上,所以無法互通

轉載于:https://www.cnblogs.com/wang_yb/p/8625003.html

總結

以上是生活随笔為你收集整理的docker 基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。