Docker 概念 安裝 命令 容器資料卷

2021-10-07 11:20:47 字數 3769 閱讀 7533

乙個開源的應用容器引擎

誕生於2023年,基於go語言實現

docker開源讓開發者打包他們的應用以及依賴包到乙個輕量級、可移植的容器中,然後發布到任何流行的linux機器上

容器是完全使用沙盒機制,相互隔離

容器效能開銷極低,啟動快

docker從17.03版本之後分為ce和ee

解決軟體的跨環境遷移問題

配置docker映象加速器

啟動docker 服務:systemctl start docker

停止docker 服務:systemctl stop docker

重啟docker 服務:systemctl restart docker

檢視docker服務:systemctl status docker

開機啟動docker 服務:systemctl enable docker

檢視映象:docker images

搜尋映象:docker search 映象名

拉取映象:docker pull 映象名:版本號

刪除映象:docker rmi 映象id/映象名:版本

docker rmi 'docker images-q'

檢視容器:docker ps/ docker ps -a

建立容器

互動式容器:docker run -it --name=容器名 映象名:版本號 /bin/bash

守護程序(常用):docker run -id --name=容器名 映象名:版本號

進入容器:docker exec -it 容器名 /bin/bash

啟動容器:docker start 容器名

停止容器:docker stop 容器名

刪除容器:docker rm 容器名/容器id,只能刪除停止的容器

檢視容器資訊:docker inspect 容器名

資料卷

作用 建立啟動其他的容器,使用–volumes-from引數設定資料卷

詳情見部落格

詳情見部落格

docker映象本質是什麼?

docker中乙個centos映象為什麼只有200mb,而centos作業系統的iso檔案有幾個g?

docker中乙個tomcat映象為什麼有500mb,而乙個tomcat安裝包只有70mb?

程序排程子系統

程序通訊子系統

記憶體管理子系統

裝置管理子系統

檔案管理子系統

網路通訊子系統

作業控制子系統

docker映象是由特殊的檔案系統疊加而成

最底端是bootfs,並使用宿主機的bootfs

第二層是root檔案系統rootfs,稱為base image

然後再往上可以疊加其他的映象檔案

統一檔案系統(union file system)技術能夠將不同的層整合成乙個檔案系統,為這些層提供了乙個統一的視角,這樣就隱藏了多層的存在,在使用者的角度看來,只存在乙個檔案系統

乙個映象可以放在另乙個映象的上面。位於下面的映象成為父映象,最底層的映象成為基礎映象

當從乙個映象啟動容器時,docker會在最頂層載入乙個讀寫檔案系統作為容器

概念 指令

關鍵字作用

備註from

指定父映象

指定dockerfile基於那個image構建

maintainer

作者資訊

用來標明這個dockerfile誰寫的

label

標籤用來標明dockerfile的標籤 可以使用label代替maintainer 最終都是在docker image基本資訊中可以檢視

run執行命令

執行一段命令 預設是/bin/sh 格式: run command 或者 run [「command」 , 「param1」,「param2」]

cmd容器啟動命令

提供啟動容器時候的預設命令 和entrypoint配合使用.格式 cmd command param1 param2 或者 cmd [「command」 , 「param1」,「param2」]

entrypoint

入口一般在製作一些執行就關閉的容器中會使用

copy

複製檔案

build的時候複製檔案到image中

add新增檔案

build的時候新增檔案到image中 不僅僅侷限於當前build上下文 可以**於遠端服務

env環境變數

指定build時候的環境變數 可以在啟動的容器的時候 通過-e覆蓋 格式env name=value

arg構建引數

構建引數 只在構建的時候使用的引數 如果有env 那麼env的相同名字的值始終覆蓋arg的引數

volume

定義外部可以掛載的資料卷

指定build的image那些目錄可以啟動的時候掛載到檔案系統中 啟動容器的時候使用 -v 繫結 格式 volume [「目錄」]

expose

暴露埠

定義容器執行的時候監聽的埠 啟動容器的使用-p來繫結暴露埠 格式: expose 8080 或者 expose 8080/udp

workdir

工作目錄

user

指定執行使用者

指定build或者啟動的時候 使用者 在run cmd entrypont執行的時候的使用者

healthcheck

健康檢查

指定監測當前容器的健康監測的命令 基本上沒用 因為很多時候 應用本身有健康監測機制

onbuild

觸發器當存在onbuild關鍵字的映象作為基礎映象的時候 當執行from完成之後 會執行 onbuild的命令 但是不影響當前映象 用處也不怎麼大

stopsignal

傳送訊號量到宿主機

該stopsignal指令設定將傳送到容器的系統呼叫訊號以退出。

shell

指定執行指令碼的shell

指定run cmd entrypoint 執行命令的時候 使用的shell

docker build -f dockerfile檔案 -t 映象:版本

微服務架構的應用系統中一般包含若干個微服務,每個微服務一般會部署多個例項,如果每個微服務都要手動啟停,維護的工作會很麻煩

服務編排:按照一定的業務規則批量管理容器

docker compose是乙個編排多容 器分布式部署的工具,提供命令集管理容器化應用的完整開發周期,包括服務構建,啟動和停止。 安裝

使用docker compose編排nginx+springboot專案

mkdir ~/docker-compose

cd ~/docker-compose

version: '3'

services:

nginx:

image: nginx

ports:

- 80:80

links:

volumes:

- ./nginx/conf.d:/etc/nginx/conf.d

expose:

- "8080"

mkdir -p ./nginx/conf.d
server 

}

docker-compose up
詳情見部落格

詳情見部落格

docker容器安裝

docker 可以讓開發者打包他們的應用以及依賴包到乙個輕量級 可移植的容器中,然後發布到任何流行的 linux 機器上,也可以實現虛擬化。重啟docker服務 systemctl restart docker.service 拉取映象 tomcat mysql docker pull tomcat...

docker容器命令

1.docker run it name container name repository tag image id bin bash 互動方式啟動docker容器 例如docker run it name mycentos centos 7 bin bash 2.docker run d nam...

docker容器命令

這樣就建立了乙個新的centos容器了。那如果退出呢?通過exit命令就可以退出了 docker run di name 容器名稱 映象名稱 標籤 這個時候我們建立成功了,但是現在還是在本地,還沒有進入到centos容器中,但我們檢視的時候,發現容器已經是在執行了 那我們怎麼進入到這個centos容...