Docker基本知識與常用命令

2022-02-28 08:34:32 字數 4593 閱讀 5625

學習eshoponcontainers 自然是離不開docker的。docker的基本知識是學習eshoponcontainers 的基礎。

容器:將軟體打包成標準化單元,以用於開發、交付和部署,而 docker 是世界領先的軟體容器平台,是業界首選。容器映象是輕量的、可執行的獨立軟體包,包含軟體執行所需的所有內容:**、執行時環境、系統工具、系統庫和設定。

虛擬機器(virtual machine):指通過軟體模擬的具有完整硬體系統功能的、執行在乙個完全隔離環境中的完整計算機系統。流行的虛擬機器軟體有vmware、xen和hyperv,它們都能虛擬出多個計算機。

容器和虛擬機器具有相似的資源隔離和分配優勢,但功能有所不同,因為容器虛擬化的是作業系統,而不是硬體,因此容器更容易移植,效率也更高。 

容器是乙個應用層抽象,用於將**和依賴資源打包在一起。多個容器可以在同一臺機器上執行,共享作業系統核心,但各自作為獨立的程序在使用者空間中執行。與虛擬機器相比,容器占用的空間較少(容器映象大小通常只有幾十兆),瞬間就能完成啟動。

虛擬機器 (vm) 是乙個物理硬體層抽象,用於將一台伺服器變成多台伺服器。管理程式允許多個 vm 在一台機器上執行。每個 vm 都包含一整套作業系統、乙個或多個應用、必要的二進位制檔案和庫資源,因此占用大量空間。而且 vm 啟動也十分緩慢。

docker官方文件

docker 要求 centos 系統的核心版本高於 3.10 。通過 uname -r 命令檢視你當前的核心版本。

以下命令皆基於centos,其他版本的命令會有稍有不同,本文不多做介紹。

1、初步安裝和啟動docker

yum update -y

yum -y install docker

systemctl start docker

2、設定映象

curl -ssl  | sh -s http://你的的位址.m.daocloud.io
在配置完成後根據終端中的提示重啟 docker使配置生效。

3、開放管理埠對映

vi /lib/systemd/system/docker.service

將第13行的execstart=/usr/bin/dockerd,替換為:

execstart=/usr/bin/dockerd -h tcp: -h unix:///var/run/docker.sock -h tcp:

2375是管理埠,7654是備用埠

在~/.bashrc中寫入docker管理埠

export docker_host=tcp:

source ~/.bashrc

4、重啟docker

systemctl daemon-reload

systemctl restart docker.service

5、測試docker是否正常安裝和執行

docker run hello-world
6、檢視結果

執行容器(run),run是我們最常用的命令,如啟動了乙個nginx容器,

docker run nginx

埠對映(-p),如果我們想訪問剛才部署的nginx,需要先進行埠對映:

docker run -p 8080:80 nginx

後台執行(-d),預設情況下,當我們推出命令行時,容器也會被關閉。我們可以使用-d引數使容器保持後台執行:

docker run -d

有了以上三個命令後,我們直接訪問192.168.1.31:8080,便可以看到「welcome to nginx!」。

指定名稱(-n),建立了乙個名稱為redis的容器,

docker run --name myredis redis

容器被設計為無狀態的,當我們刪除乙個容器時,儲存在其中的資料也會隨之刪除。如果我們希望某些資料不隨著容器的刪除而刪除,則可以使用目錄繫結(通常稱為卷),將容器中的某個資料夾於主機上的資料夾繫結,來實現資料的持久化。

docker run -v :

除此之外,我們還可以使用data containers來實行資料的持久化,資料容器(data containers)唯一的職責就是儲存和管理資料:

docker create -v /config --name datacontainer busybox

如上,我們使用busybox映象建立了乙個資料容器,並使用-v引數來指定容器儲存和管理資料的目錄位置。

然後我們可以將檔案拷貝到容器中:

docker cp config.conf datacontainer:/config/

接下來,我們就可以在新的容器中引用該資料容器了:

docker run --volumes-from datacontainer ubuntu

新建立的ubuntu容器掛載了資料容器的/config目錄。 

通過--restart選項,可以設定容器的重啟策略,以決定在容器退出時docker守護程序是否重啟剛剛退出的容器。

docker run -d --restart=always

有如下4種重啟策略:

no,預設策略,在容器退出時不重啟容器

on-failure,在容器非正常退出時(退出狀態非0),才會重啟容器

on-failure:3,在容器非正常退出時重啟容器,最多重啟3次

always,在容器退出時總是重啟容器

unless-stopped,在容器退出時總是重啟容器,但是不考慮在docker守護程序啟動時就已經停止了的容器

進入互動模式(-it)

docker run -it [image-name] /bin/bash

-i interact 進入互動模式。

-t tty 分配乙個偽終端。

執行之後,可以看到命令列的主機名已經變成了容器的id,表示成功進入到了容器中,可以使用exit命令退出容器。

其他# 啟動乙個sqlserver容器

docker run -e 'accept_eula=y' -e 'sa_password=qwer1234' -p 1433:1433 -d --restart=unless-stopped microsoft/mssql-server-linux 

下面再來一組管理容器的日常命令。

檢視容器(ps),docker ps,可以看到當前執行的容器,新增-a引數,則可以看到停止的容器。

然後也可以使用inspect來檢視某個容器的詳細資訊:dokcer inspect redis

附加容器(attach),attach可以附加到乙個已經執行的容器的stdin中,docker attach [containerid]

進入容器(exec),docker exec -it [containerid] /bin/bash

是需要注意的是,對於attach,如果從這個stdin中exit,會導致容器的停止。而exec則不會,推薦使用exec。

停止容器(stop),docker stop [containerid]

刪除容器(rm),docker rm [containerid]

如果要刪除的容器正在執行,則無法刪除,可以新增-f引數來強制刪除,也可以先停止容器再刪除。

如果我們想刪除所有的容器,可以使用如下命令:

docker rm $(docker ps -a -q) -f

docker把應用程式及其執行環境等打包在 image 檔案裡面,相當於容器的模板。關於docker顯像管理,也有一系列的命令。

搜尋映象,我們可以在 registry.hub.docker.com 查詢映象,也可以使用 dokcer search 命令來搜尋,如:我們使用如下命令來搜尋redis映象。

docker search redis檢視映象

docker images檢視映象列表

docker image -a檢視所有映象(包括中間層映象)

docker images -q檢視所有映象的id

docker images -f "dangling=true"檢視所有的虛懸映象(-f 顯示滿足條件的映象)

docker images [repository]按倉庫名過濾

docker images [repository:tag]按倉庫名和標籤過濾

docker rmi [imageid]刪除映象

docker image rm [imageid]刪除映象

docker image rm $(docker images -q) -f刪除所有映象

docker image prune刪除虛懸映象(dangling image)

倉庫名和標籤均為,這類無標籤、無倉儲名的映象被稱為dangling image。

docker pull [imagename]拉取映象

docker build構建映象 

docker build -t linezero/demo .
docker push [imagename]推送映象

docker system df檢視映象、容器、卷占用的空間

docker常用命令 Docker 常用命令筆錄

格式docker run 選項 映象 命令 引數.示例docker run it rm ubuntu 16.04 bash 示例解釋 it 這是兩個引數,乙個是 i,表示互動式操作,乙個是 t表示終端 rm 這個引數是說容器退出後隨之將其刪除 ubuntu 16.04 這是指用ubuntu 16.0...

docker基本知識點與命令

cgroups control groups 資源管理 namespace 程序隔離 基於檔案許可權 selinux安全 docker的架構 準備工作 準備centos7或以上64位作業系統,關閉防火牆或新增適當規則 安裝 筆者使用yum源在ubuntu上安裝的docker在centos上執行只需稍...

Docker安裝與常用命令

設定yum源為阿里雲 yum config manager add repo to etc yum.repos.d docker ce.repo 安裝docker yum install y docker ce 檢視版本 docker v 設定國內倉庫映象加速 curl ssl sh s cat e...