什麼是容器
依託於linux內核的虛擬化技術
什麼是Docker
能夠把應用程序自動部署到容器的開源引擎
Docker的基本組成
Docker Client客戶端
Docker Daemon守護進程
Docker Image鏡像
容器的基石
層疊的只讀文件系統
聯合加載
Docker Container容器
通過鏡像啓動
啓動和執行階段
寫時複製
Docker Registry倉庫
共有
Docker Hub
私有
Docker在線演示地址
Docker的C/S模式
Docker的守護進程
- 查看守護進程
ps -ef | grep docker
systemctl status docker
- 使用service命令管理
sudo service docker start/stop/restart
- Docker 的啓動選項
docker -d [OPTIONS]
- 運行相關:
-D,–debug=false
-e,–exec-driver=‘native’
-g,–graph=’/var/lib/docker’
-icc=true
-l,–log-level=‘info’
–label=[]
-p,–pidfile=’/var/run/docker.pid - Docker服務器連接相關
-G,–group=‘docker’
-H,–host=[]
-tls=false
-tlsverify=false - Remote API相關
–api-enable-cors=false - 存儲相關
-s,–storage-driver=’’
–selinux-enabled=false
–storage-opt=[] - Registry 相關
–insecure-registry=[]
–registry-mirror=[]
- 啓動配置文件
/etc/default/docker/
Docker的遠程訪問
守護進程設置
修改配置文件 /etc/default/dcoker
DOCKER_OPTS=" --label name=docker_server_1 -H tcp://0.0.0.0:2375"
重啓docker service docker resart
客戶端配置
- 使用環境變量
export DOCKER_HOST='tcp://ip:端口'
(這裏的ip是要連接的遠程主機IP)
Dcoker的容器
容器的基本操作
- 啓動容器
docker run IMAGE [COMMAND][ARG...]
run 在新容器中執行命令
eg :docker run centos echo 'hello world'
- 啓動交互式容器
docker run -i -t IMAGE /bin/bash
要開啓以下設置 爲容器始終打開標準輸入
-i --interactive=true|false 默認是false
爲創建的容器分配一個tty終端
-t --tty=true|false 默認是false
- 查看容器
docker ps [-a] [-l]
- 查看容器的信息
docker inspect ID/NAMES
eg:docker inspect 71f344799cfc
- 自定義容器名字
docker run --name=自定義名字 -i -t IMAGE /bin/bash
- 重新啓動已經停止的容器
docker start [-i] 容器名
- 刪除容器
docker rm 容器名
Docker 守護式容器
什麼是守護式容器?
- 能夠長期運行
- 沒有交互式會話
- 適合運行應用程序和服務
啓動守護式容器
方法1
docker run --name=容器名 -i -t /bin/bash
使用Ctrl + p Q
退出,不使用exit
附加到運行中的容器:
docker attach 容器名
方法2
docker run -d 鏡像名 [COMMAND] [ARG...]
查看容器日誌
docker logs [-f] [-t] [--tail] 容器名
-f --follows=true 默認爲false
-t --timestamps=true 默認爲false
–tail=“all”
查看容器內進程
docker top 容器名
在運行中的容器中啓動新進程
docker exec [-d] [-i] [-t] 容器名 [COMMAND] [ARG...]
停止守護式容器
docker stop 容器名
給運行中的容器發送一個停止信號,等待容器停止後,命令會返回容器的名字。docker kill 容器名
立刻殺死
可以使用man命令查看docker具體命令的詳細介紹
例如:`man docker exec`
在Dokcer中部署靜態網站
設置容器的端口映射
docker run [-P]
大寫P 爲容器暴露的所有端口進行映射。端口映射命令:
docker run -P -i -t centos /bin/bash
docker run [-p]
指定映射哪些端口- 容器端口 containerePort
docker run -p 80 -i -t centos /bin/bash
- 宿主機端口:容器端口 HostPort:containerPort
docker run -p 8080:80 -i -t centos /bin/bash
- IP::容器端口 IP:containerPort
docker run -p 0.0.0.0:80 -i -t centos /bin/bash
- IP:宿主機端口:容器端口 ip:HostPort:containerPort
docker run -p 0.0.0.0:8080:80 -i -t centos /bin/bash
- 容器端口 containerePort
Nginx 部署流程
- 創建映射80端口的交互式容器
docker run -p 80 --name web -i -t centos /bin/bash
- 安裝Nginx
yum install nginx
- 安裝文本編輯器Vim
yum install vim
- 創建靜態頁面
- 修改Nginx配置文件
- 運行Nginx
- 驗證網站訪問
Docker 鏡像
容器的基石
層疊的只讀文件系統
聯合加載技術
列出鏡像
docker images [OPTIONS] [REPOSITORY]
-a ,–all=false 顯示所有鏡像
-f ,–filter=[]
–no-trunc=false 不使用截斷的方式顯示數據
-q, --quiet=false 只顯示鏡像的唯一ID
- REPOSITORY 一系列鏡像的集合
Registry 倉庫 是docker鏡像的存儲服務 - TAG
鏡像的標籤。
創建容器時可以指定 鏡像標籤,不指定默認使用latest
查看鏡像
docker inspect [OPTIONS] CONTAINER | IMAGE [CONTAINER | IMAGE]
既支持容器的查看,也支持鏡像的查看。
刪除鏡像
docker rmi [OPTIONS] IMAGE [IMAGE] ...
-f, --force=false
–no-prune=false
查找鏡像
- Docker Hub 官網
- https://registry.hub.docker.com
docker search [OPTIONS] TERM
- –automated=false
- –no-trunc=false
- -s,–stars=0 星級 最低幾個星星
拉取鏡像
docker pull [OPTIONS] NAME [:TAG]
-a, --all-tags=false
如果慢的話可以使用國內的docker倉庫鏡像服務器拉取
使用 --registry-mirror 選項
- 修改:/etc/default/docker
- 添加:DOCKER_OPTS="–registry-mirror=http://xxxx" xxx從daocloud獲取
推送鏡像
docker push [REPOSITORY NAME]
如何在本地構建鏡像?
- 保存對容器的修改,並再次使用
- 自定義鏡像的能力
- 以軟件的形式打包並分發服務及其運行環境
docker commit
通過容器構建
docker commit [OPTINOS] CONTAINER [REPOSITORY[:TAG]]
-a,–author=""
-m,–message=""
-p,–pause=true
docker build
通過Dockerfile文件構建
創建第一個Dockerfile#First Dockerfile FROM ubuntu:14.04 MAINTAINER liunan "[email protected]" RUN apt-get update RUN apt-get install nginx EXPOSE 80
- 創建目錄
mkdir -p dockerfile/df_test
- 編寫 dockerfile文件
- 執行
docker build
命令
docker build [OPTIONS] PATH | URL | -
–force-rm=false
–no-cache=false
–pull=false
-q,–quiet=false
–rm=true
-t,–tag="" 指定構建的鏡像的名字
- 使用剛纔build 的鏡像
docker run -d --name nginx_use_df -p 80 ln/df_test nginx -g "daemon off;"
- 創建目錄