一、如何開始
安裝docker
yum -y install docker //brew cask install dockersystemctl start docker
systemctl enable docker.service
cat /etc/docker/daemon.json
"registry-mirrors": [""]
國內倉庫:
安裝ps:
apt-get update && apt-get install -y procps
解除安裝docker
yum list installed | grep dockeryum -y remove docker*
二、基本命令
web容器
docker port 63 埠對映情況docker logs -f bf08b7f2cd89 web應用日誌
docker top 63 檢視內部程序
docker inspect 63 配置狀態資訊
docker container ls 列出本機正在執行的容器
docker container ls —all 列出本機所有容器,包括終止執行的容器
容器內部的 5000 埠對映到我們本地主機的 5000 埠上。
docker run -ti b5b /bin/bash 執行進入容器
docker run -tid b5b /bin/bash 後台啟動容器
-i: 互動式操作。
-t: 終端。
-d:讓容器在後台執行。
-p:將容器內部使用的網路埠對映到我們使用的主機上。
映象
docker search httpd 查詢映象docker rmi hello-world 刪除映象
docker run -t -i ubuntu:15.10 /bin/bash 建立容器
docker commit -m="creat centos." -a="handsomecui" 5c hbc/centos:v1 提交映象
docker build -t runoob/centos:6.7 . 根據dockerfile構建映象
docker tag 860c279d2fec runoob/centos:dev 打標籤
repository:表示映象的倉庫源
tag:映象的標籤(預設last,最新)
image id:映象id
網路
docker network create -d bridge test-net 建立網路-d:引數指定 docker 網路型別,有 bridge、overlay。
docker network ls 檢視
docker run -tid --name test1 --network test-net ef /bin/bash 執行容器連線網路
dns
/etc/docker/daemon.json"dns" : [
"114.114.114.114",
"8.8.8.8"
]docker run -it --rm ubuntu cat etc/resolv.conf 查詢是不是生效
docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu 手動指定dns
-h hostname 或者 --hostname=hostname: 設定容器的主機名,它會被寫到容器內的 /etc/hostname 和 /etc/hosts。
--dns=ip_address: 新增 dns 伺服器到容器的 /etc/resolv.conf 中,讓容器用這個伺服器來解析所有不在 /etc/hosts 中的主機名。
--dns-search=domain: 設定容器的搜尋域,當設定搜尋域為 .example.com 時,在搜尋乙個名為 host 的主機時,dns 不僅搜尋 host,還會搜尋 host.example.com。
倉庫
docker login 登入docker logout 登出
docker search ubuntu 查詢
docker push username/ubuntu:18.04 推送
docker export 1e560fca3906 > es.tar 匯出容器快照
docker import es.tar elastic:5.6.8 匯入容器快照
dockerfile
from:定製的映象都是基於 from 的映象,這裡的 nginx 就是定製需要的基礎映象。後續的操作都是基於 nginx。run:用於執行後面跟著的命令列命令。有以下兩種格式:
1. run 《命令列命令》
# 《命令列命令》 等同於,在終端操作的 shell 命令。
2. run ["可執行檔案", "引數1", "引數2"]
# run ["./test.php", "dev", "offline"] 等價於 run ./test.php dev offline
cmd 在docker run 時執行。
run 是在 docker build。
env 設定環境變數
例:env node_version 7.2.0
run curl -slo "/node-v$node_version-linux-x64.tar.xz"
expose
僅僅只是宣告埠
注意:
dockerfile 的指令每執行一次都會在 docker 上新建一層。所以過多無意義的層,會造成映象膨脹過大。
以 && 符號連線命令,這樣執行後,只會建立 1 層映象。
machine
docker-machine versiondocker-machine ls
hyper-v管理器-->新建虛擬交換機-->外部-->命名docker
ctrl + i 管理員執行
docker-machine create --driver hyperv --hyperv-virtual-switch=docker manager1
批量操作
linux : docker stop $(docker ps -a -q)cmd:
docker ps -a -q > 1.txt
for /f %a in (1.txt) do docker stop %a
三、實踐
安裝es
docker run -di --name=elasticsearch -p 9200:9200 -p 9300:9300 elasticsearch:5.6.8
深入淺出Docker
本文講的是深入淺出docker,編者的話 本文是一篇docker入門文章,作者介紹了docker相關的基礎知識,包括docker映象 dockerfile docker容器 docker hub。然後作者使用docker搭建了乙個wordpress應用,基礎架構包含乙個nginx伺服器來路由 請求 ...
深入淺出Docker系列
深入淺出系列 深入淺出docker 一 docker核心技術預覽 深入淺出docker 二 docker命令列探秘 深入淺出docker 三 docker開源之路 深入淺出docker 四 docker的整合測試部署之道 深入淺出docker 五 基於fig搭建開發環境 原始碼分析系列 docker...
深入淺出Docker之Docker容器
容器是映象的執行時例項。正如從虛擬機器模板上啟動 vm 一樣,使用者也同樣可以從單個映象上啟動乙個或多個容器。虛擬機器和容器最大的區別是容器更快並且更輕量級 與虛擬機器執行在完整的作業系統之上相比,容器會共享其所在主機的作業系統 核心。下圖為使用單個 docker 映象啟動多個容器的示意圖 啟動容器...