Docker映象 容器的理解和使用方法

2021-07-26 20:12:00 字數 1524 閱讀 9147

零、應用背景

先看下面2個問題:

1. 單機多系統。如:windows上跑linux、vps服務、pass服務。

windows上跑linux,一般用vm技術實現。

vps提供商需要將一台機器劃分成多個虛擬機器,提供給使用者,例如將一台8核16g的物理機器劃分成8個1核2g(實際上會比這個少)給8個使用者使用,目的是實現使用者應用隔離。

pass服務提供商同vps。

問題關鍵:模擬作業系統、使用者應用分隔

2. 應用發布。

為了減少bug出現,要盡量使開發環境和生產環境一樣。

比如開發環境採用的是centos6.5 + nginx1.10.2 + php 5.6 + mysql 5.5,那麼生產環境就要採取一樣的軟體環境。如果開發環境做了修改,生產環境最好做一樣的修改(主要指安裝外掛程式,系統軟體版本公升級)。

問題關鍵:環境同步

一、docker和vm

vm可以很好的解決模擬作業系統、使用者應用分隔這兩個問題。

docker可以比vm更好的解決這兩個問題 並且 解決環境同步問題。

相比vm,docker是輕量級的,快速的。

二、docker的映象和容器

docker如何實現vm的功能?使用靜態映象 + 乙個動態讀寫層

從docker的使用方法來看,例如我們想在docker中執行nginx服務。

我們兩個思路:

1. 先pull乙個centos映象,再在該映象上裝乙個nginx。

2. 直接pull裝好nginx的映象

映象是容器的執行環境

如果我們採取思路1,pull下乙個centos映象

# docker pull centos

# docker pull centos:latest

# docker pull centos:6.8

使用run命令執行乙個映象:

# docker run -it centos /bin/bash

該命令會用centos這個映象去建立乙個容器,相當於在vm裡面用映象建立了乙個虛擬機器,通過docker ps -a可以看到所有容器。

細心的朋友會發現系統提示符變了,這是因為-it引數,使得容器內部的shell輸入輸出和當前主機掛鉤了,叫做attach。

在容器內部的所有操作只在容器內有效,不會影響宿主主機,也不會影響映象,因為所有的操作都會作用在讀寫層上。

如果下次要使用怎麼辦?可以用docker ps -a找到這個容器的id,使用docker start container_id 執行這個容器,當然上次安裝的nginx還在。

如果把這個容器當做開發環境,部署的時候可以採取非常簡單的方法,將這個容器發布成映象即可,在生產環境中匯入這個映象,即可實現環境同步。

docker commit命令可以將容器發布成映象,可以理解為 讀寫層的檔案和映象的檔案合併成乙個新的映象。

Docker 理解好映象和容器的關係

映象也是 docker 的核心元件之一,映象時容器執行的基礎,容器是映象執行後的形態。總體來說,映象是乙個包含程式執行必要以來環境和 的唯讀檔案,它採用分層的檔案系統,將每一層的改變以讀寫層的形式增加到原來的唯讀檔案上。這有點像洋蔥,一層一層的,當我們後面學習了 dockerfile 相信大家對於這...

Docker 理解好映象和容器的關係

映象也是 docker 的核心元件之一,映象時容器執行的基礎,容器是映象執行後的形態。前面我們介紹了容器的用法,今天來和大家聊聊映象的問題。1.docker 入門及安裝 docker 系列 1 2.docker 容器基本操作 docker 系列 2 3.docker 容器高階操作 docker 系列...

docker映象和容器

伺服器安裝docker,請網上查詢 windows安裝docker可參考 1.1 docker search fastdfs 在網上搜尋映象資源 1.2 拉取映象並檢視狀態 docker image pull delron fastdfs 拉取映象到本地 docker images 檢視本地映象 d...