Docker 快速入門(精編版)

教程 shanhuhai 3693℃ 0評論

1.Docker 概述

Docker 是一個開源的容器引擎,它運行在物理主機或者通過 Vmware 、KVM 等虛擬化技術創建的虛擬機中。

一個容器可以簡單的理解為一組文件及容器啟動時將會運行的服務進程。

一個容器中的文件以及運行的程序,一旦提交為鏡像就固定了,不論在任何主機上運行該容器都是一致的。

開發者可以將應用打包到一個或多個容器中,從而能夠輕松在其他運行了docker 的主機運行該應用,這使得應用部署非常簡單,并且避免了因環境問題而導致的各種異常。

容器可以理解為是應用層的虛擬機, 但容器不等于虛擬機,
不知道虛擬機的同學看這里 虛擬機

2.Docker 的特點及用途

Docker 特點:

  • 輕量
    單機可以輕松支持上百個容器, 相比笨重的虛擬機好太多。
  • 快速啟動
    啟動一個容器只需要幾秒鐘。
  • 可移植性
    這幾乎是Docker 最重要的特點,讓運維部署變的簡單,不用再考慮各種系統環境服務缺失導致的應用問題。
  • 隔離性
    單機上容器間的資源是隔離的互不影響,對容器中文件的隨意刪改也不會影響宿主機,使得容器有很好的隔離性。

Docker 用途:

  • 快速部署
  • 持續集成(devops)
  • 提升開發效率
    不同的開發環境中,我們都想把兩件事做好。一是我們想讓開發環境盡量貼近生產環境,二是我們想快速搭建開發環境。
    理想狀態中,要達到第一個目標,我們需要將每一個服務都跑在獨立的虛擬機中以便監控生產環境中服務的運行狀態。然而,我們卻不想每次都需要網絡連接,每次重新編譯的時候遠程連接上去特別麻煩。這就是Docker做的特別好的地方,開發環境的機器通常內存比較小,之前使用虛擬的時候,我們經常需要為開發環境的機器加內存,而現在Docker可以輕易的讓幾十個服務在Docker中跑起來。
  • 單機應用隔離
    由于單機上容器之間有很好的隔離性,
  • 大規模應用集群
  • 多租戶環境

3.Docker 知識要點

容器

在Docker的使用過程中,創建一個容器就是創建一個實例

鏡像

鏡像的創建方式有兩種,一種是通過 docker commit 命令提交容器,一種是 Dockerfile 來創建, 沒有特殊情況下都應該用 Dockerfile 來創建鏡像

容器與鏡像的關系

一個鏡像就相當于面向對象中的類,容器就是一個實例化類后得到的一個對象,再通俗一點,容器和鏡像的關系可以想象成,月餅和月餅模子的關系,通過月餅模子可以制作無數個一樣的月餅。

容器與主機文件共享

docker run的命令中 提供了 -v 的參數來使得容器可以跟宿主機共享文件或目錄

容器與主機端口映射

docker run的命令中 提供了 -p 的參數來使得宿主機的某個端口可以映射到容器的端口上

4.上手演練

測試環境搭建

上手演練前,我們需要準備一個測試環境,先在本機的 VirtualBox 上創建了一個安裝了 Ubuntu 14.04 操作系統的虛擬機,命名為“test-server”

下面來安裝Docker

登錄虛機后按以下步驟操作:

  1. 切換到 root 權限
sudo su -
  1. 安裝并校驗源
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg |  apt-key add -
apt-key fingerprint 0EBFCD88
#將源信息直接寫入/etc/apt/sources.list
add-apt-repository \
   "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
#更新源
apt-get update
#安裝制定版本的docker
apt-get install docker-ce=17.06.2~ce-0~ubuntu 
#查看docker 版本
docker version
  1. 設置docker 加速鏡像
    由于在國內,我們使用拉取官方的鏡像源較慢,這里設置一個功能的加速鏡像源
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8a2e319e.m.daocloud.io

第一個 Docker 容器

  • 下載一個 Ubuntu 系統的鏡像
docker search ubuntu
docker pull  ubuntu

  • 在容器中執行命令并返回結果(容器執行命令返回結果后自動刪除自身)

$ docker run --rm ubuntu echo "Hello World" $ docker run --rm ununtu ps
  • 進入到容器中與容器進行交互操作
$ docker run --rm -ti ubuntu /bin/bash
# uname -a
# dpkg -l
  • 常用命令

    docker search # 從 Docker 官方鏡像 hub.docker.com 倉庫搜索鏡像
    docker pull 拉取一個鏡像
    docker images 查看本地鏡像
    docker run 從鏡像實例化一個容器
    docker ps 查看所有在運行的容器
    docker build 從 Dockerfile 構建鏡像

  • docker start/stop/kill

    啟動/關閉/強制關閉容器

  • docker rm
    刪除容器
  • docker rmi
    刪除鏡像

創建一個自己的鏡像

  1. 在容器中安裝 nginx
docker run -ti ubuntu bash
apt-get update
apt-get install -y nginx
exit
docker ps -l
docker commit  nginx1.0

容器中執行 exit 則退出容器
docker ps -l 查看最近創建的容器

  1. 查看剛剛我們創建的鏡像 nginx 1.0
$ docker images

這時你可以將鏡像提交到本地倉庫,或者官方的 docker hub 倉庫

用docker 快速安裝nginx

在主機 root 用戶目錄創建 html目錄, 并創建index.html文件,內容為 Hello,world

mkdir /root/html
echo "Hello, world" > /root/html/index.html

安裝啟動nginx 容器:

docker run --name some-nginx -p 8080:80 -v /root/
html:/usr/share/nginx/html:ro -d nginx

對參數做下解釋:

  • --name 用來制定容器的名稱
  • -p 用來做端口映射,前面的 “8080” 是宿主機的端口號,“80” 是容器的端口號
  • -v 用來做目錄映射,將主機上的 “/root/html” 目錄映射到了容器中的 “/usr/share/nginx/html” ,這樣我們就不必進入到容器中來修改頁面了
  • -d 這個參數表示,容器在后臺運行

這時候如果你的虛機ip是 192.168.4.242, 通過瀏覽器訪問 http://192.168.1.105:8080/index.html 就可以訪問到我們剛剛創建的頁面了

5.docker 網絡

docker 的網絡大致分為五種類型, 在安裝docker 后宿主機上會創建三種網絡, 分別是 bridge, host, none網絡, 可以通過 docker network ls查看:

none 網絡

容器沒有網卡,所以容器也就無法聯網, 創建這類容器可以通過 --network=none 來指定

docker run -it --network=none busybox

可以看到容器只有一個回環網絡,沒有其他網卡了

host 網絡

host 模式相當于容器直接使用宿主機的網絡


docker run -it --network=host busybox

進入容器后執行ifconfig, 在對比在宿主機上執行 ifconfig, 發現執行完全一樣。

這種方式的好處是,網絡性能好,但是隔離性差,如果宿主機運行了多個容器,端口可能會沖突

bridge 網絡

容器啟動時默認的網絡模式,docker 安裝的時候會創建一個名為 “docker0”的網橋,啟動的容器在不指定“–network”容器時,都會默認掛到 “docker0”下

container 模式

創建容器時使用–network=這個模式在創建新的容器的時候指定容器的網絡和一個已經存在的容器共享一個Network Namespace,但是并不為docker容器進行任何網絡配置,這個docker容器沒有網卡、IP、路由等信息,需要手動的去為docker容器添加網卡、配置IP等。

轉載請注明:大后端 » Docker 快速入門(精編版)

喜歡 (4)or分享 (0)
發表我的評論
取消評論

表情

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
春梓美 种子,av全裸挂历,日本女护士mm裸照写真,超碰地址发布页 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>