五分鐘快速瞭解Docker

這些是個人筆記,都是記錄的核心概念和使用方法

f703738da977391281957edbf0198618377ae2dd.jpg

概述

使用docker搭建開發環境將近1年了,自我感受docker的強大並不是如此,不過沒有機會將docker部署生產環境,有位架構師曾說過,最新的未必是最好的,架構要選擇最佳的,請你們也慎重。linux

核心概念

鏡像 Image

Docker鏡像相似於虛擬機鏡像。每一個鏡像包括了一個基本的操做系統環境web

容器 Container

Docker容器相似於一個輕量級的沙箱,Docker利用容器來運行和隔離應用。能夠把容器看作一個簡易版的linux系統環境docker

倉庫 Repository

Docker倉庫相似於代碼倉庫,它是Dokcer集中存放鏡像文件的場所shell

數據管理

生產環境中使用Docker的過程當中,每每須要對數據進行持久化,或者須要在多個容器之間進行數據共享,這必然要涉及容器的數據管理操做

容器中管理數據主要有兩種方式:安全

  • 數據卷
  • 數據卷容器

掛載一個主機目錄做爲數據卷

docker run -d -P --name web -v /localhost-path:/server-path NAME:TAG

端口映射

端口映射實現訪問容器

從外部訪問容器應用

要讓外部訪問這些應用時,能夠經過-P或-p參數來指定端口映射。當使用-P標記時,docker會隨機映射一個49000~49900的端口到內部容器開放的網絡端口
docker run -d -P NAME:TAG

映射全部接口地址

docker run -d -p 5000:5000 NAME:TAG
-p 能夠標記多個端口
docker run -d -p 5000:5000 -p 3000:80 NAME:TAG

映射到指定地址的指定端口

docker run -d -p 127.0.0.1:5000:5000 NAME:TAG

映射到指定地址的任意端口

使用IP::ContainerPort 綁定localhost的任意端口到容器的5000端口,本地主機會自動分配一個端口
docker run -d -p 127.0.0.1::5000 NAME:TAG

還可使用udp標記來指定udp端口網絡

docker run -d -p 127.0.0.1:5000:5000/udp NAME:TAG

查看映射端口配置

docker port nostalgic_morse PORT

容器互聯

自定義容器命名

使用--name標記能夠爲容器自定義命名
docker run -d -P --name web NAME:TAG

查看容器名字

docker inspect -f "{{ .Name }}" 容器id

容器互聯

使用--link參數可讓容器之間安全的進行交互
docker run -d --name db NAME:TAG
docker run -d -P --name web --link db:db NAME:TAG

使用Docker鏡像

下載鏡像

docker pull NAME[:TAG]

建立容器

docker run -it NAME:TAG SERVICE

查看鏡像

docker images
  • REPOSITOPY 來自於哪一個倉庫
  • TAG 鏡像的標籤信息
  • IMAGE ID 鏡像的ID
  • CREATED 建立時間
  • SIZE 鏡像大小

給鏡像打標籤

docker tag NAME:TAG NEWNAME:TAG

查看鏡像詳細信息

docker inspect NAME:TAG

查看鏡像歷史

docker history NAME:TAG

搜索鏡像

docker search NAME

刪除鏡像

docker rmi IMAGE

刪除容器

docker rm 容器ID

建立鏡像

基本已有鏡像的容器建立

docker commit [OPTIONS] CONTAINER [REPOSITOPUY[:TAG]]

-a , --author="" // 做者信息
-c , --change=[] 
-m , --message="" // 提交消息
-p , --pause=true // 提交時暫停容器運行

docker commit -m "added a new file " -a "crazy" 58fe3bd5b3e6 test:0.1

基於本地模板導入

cat 本地包 | docker import - 導入的鏡像名稱

導出鏡像

docker save -o 導出文件名 導出的鏡像

載入鏡像

docker load --input 本地鏡像名稱
// 或者
docker load < 本地鏡像名稱

查看鏡像詳細信息

docker inspect NAME:TAG

Docker相關的快捷命令

停用所有運行中的容器:

docker stop $(docker ps -q)

刪除所有容器

docker rm $(docker ps -aq)

一條命令實現停用並刪除容器

docker stop $(docker ps -q) & docker rm $(docker ps -aq)

刪除全部未打 tag 的鏡像

docker rmi $(docker images -q | awk '/^<none>/ { print $3 }')

刪除全部鏡像

docker rmi $(docker images -q)

致謝

感謝看完個人這篇白話文,這是我學習docker的過程,都是一些關鍵的命令和概念,但願能夠幫到你,有什麼問題能夠評論區討論,互相學習架構

相關文章
相關標籤/搜索