docker 深入淺出

2022-03-29 00:58:12 字數 3447 閱讀 8750

一、如何開始

安裝docker

yum -y install docker   //brew cask install docker

systemctl 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 docker

yum -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 version

docker-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 映象啟動多個容器的示意圖 啟動容器...