docker的介紹及部署 docker的介紹及部署 Docker是通過內核虛擬化技術(namespaces及cgroups cpu、記憶體、磁碟io等)來提供容器的資源隔離與安全保障等。由於Docker通過操作系統層的虛擬化實現隔離,所以Docker容器在運行時,不需要類似虛擬機(VM)額外的操作系統 ...
-
docker的介紹及部署
Docker是通過內核虛擬化技術(namespaces及cgroups cpu、記憶體、磁碟io等)來提供容器的資源隔離與安全保障等。由於Docker通過操作系統層的虛擬化實現隔離,所以Docker容器在運行時,不需要類似虛擬機(VM)額外的操作系統開銷,提高資源利用率。
docker的主要目標是"Build,Ship and Run any App,Angwhere",構建,運輸,處處運行
構建:做一個docker鏡像
運輸:docker pull
運行:啟動一個容器
每一個容器,他都有自己的文件系統rootfs.
kvm解決了硬體和操作系統之間的依賴
docker解決了軟體和操作系統環境之間的依賴,能夠讓獨立服務或應用程式在不同的環境中,得到相同的運行結果。
docker容器是一種輕量級、可移植、自包含的軟體打包技術,使應用程式可以在幾乎任何地方以相同的方式運行。開發人員在自己筆記本上創建並測試好的容器,無需任何修改就能夠在生產系統的虛擬機、物理伺服器或公有雲主機上運行。
- docker 簡介
什麼是容器?
一種虛擬化的方案
操作系統級別的虛擬化
只能運行相同或相似內核的操作系統
依賴於Linux內核特性:Namespace和Cgroups(control Group)
- 什麼是Docker?
將應用程式自動部署到容器
Go語言開源引擎 Github地址:https://github.com/docker/docker
- docker的目標:
提供簡單輕量的建模方式
職責的邏輯分離
快速高效的開發生命周期
鼓勵使用面向服務的架構
- docker的使用場景
1、 使用docker容器開發、測試、部署服務
2、 創建隔離的運行環境
3、 搭建測試環境
4、 構建多用戶的平臺即服務(pass)基礎設施
5、 提供軟體即服務(saas)應用程式
6、 高性能、超大規模單位宿主機部署
- docker 的安裝
yum install -y docker
docker的鏡像管理
- 搜索鏡像
docker search
選鏡像的建議:
1,優先考慮官方
2,starts數量多
- 獲取鏡像
docker pull(push)
鏡像加速器:阿裡雲加速器,daocloud加速器,中科大加速器,Docker 中國官方鏡像加速:https://registry.docker-cn.com
docker pull centos:6.8(沒有指定版本,預設會下載最新版)
##配置docker鏡像加速
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
##第三方docker鏡像倉庫,使用方法:
docker pull index.tenxcloud.com/tenxcloud/httpd:latest
- 查看鏡像
docker images
- 刪除鏡像
docker rmi 例子:docker image rm centos:latest
- 導出鏡像
docker save 例子:docker image save centos > docker-centos7.4.tar.gz
- 導入鏡像
docker load 例子:docker image load -i docker-centos7.4.tar.gz
docker的容器管理
docker run -d -p 80:80 nginx
run(創建並運行一個容器)
-d 放在後臺
-p 埠映射
-v 源地址(宿主機):目標地址(容器)
nginx docker鏡像的名字
docker run -it --name centos6 centos:6.8 /bin/sh
-it 分配互動式的終端
--name 指定容器的名字
/bin/sh覆蓋容器的初始命令
- 啟動容器
docker run image_name
docker run -it image_name CMD
docker run ==== docker create + docker start
- 停止容器
docker stop CONTAINER_ID
- 殺死容器
docker kill container_name
- 查看容器列表
docker ps
docker ps –a
- 進入容器
*** docker exec (會分配一個新的終端tty)
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker exec -it 容器id或容器名字 /bin/bash
docker attach(使用同一個終端)
docker attach [OPTIONS] CONTAINER
nsenter(安裝yum install -y util-linux)
- 刪除容器
docker rm
- 批量刪除容器
docker rm -f `docker ps -a -q`
總結:docker容器內的第一個進程必須一直處於前臺運行的狀態(必須夯住),否則這個容器,就會處於退出狀態!
- docker容器的網路訪問
指定映射(docker 會自動添加一條iptables規則來實現埠映射)
-p hostPort:containerPort
-p ip:hostPort:containerPort
-p ip::containerPort(隨機埠)
-p hostPort:containerPort:udp
-p 81:80 –p 443:443
隨機映射
docker run -P 80(隨機埠)
- docker的數據捲管理
/usr/share/nginx/html
數據捲(文件或目錄)
-v /data
-v src(宿主機的目錄):dst(容器的目錄)
數據捲容器
--volumes-from
- 手動將容器保存為鏡像
docker commit 容器id或者容器的名字 新的鏡像名字[:版本號可選]
1):基於容器製作鏡像
docker run -it centos:6.8
######
yum install httpd
yum install openssh-server
/etc/init.d/sshd start
vi /init.sh
#!/bin/bash
/etc/init.d/httpd start
/usr/sbin/sshd -D
chmod +x /init.sh
2)將容器提交為鏡像
docker commit centos:6 centos6-ssh-httpd:v1
3)測試鏡像功能是否可用
-
docker-容器的基本操作
docker run IMAGE [COMMAND][ARG]
run 在新容器中執行命令
[root@jinqiu ~]# docker run 5182e96772bf echo 'hello'
hello
啟動互動式容器
docker run -i -t IMAGE /bin/bash
-i --interactive=ture|false 預設是false
-t --tty=true|false 預設是false
[root@jinqiu ~]# docker run -it 5182e96772bf /bin/bash
[root@168b47a3f377 /]# ps -ef
查看容器:
docekr ps [-a] [-l]
-a 查看所有容器
-l 查看最新創建的容器
docker inspect 容器ID
查看容器的詳細信息
自定義容器名字:
docker run --name=自定義名 -it IMAGE /bin/bash
[root@jinqiu ~]# docker run --name=centos7.1 -it 5182e96772bf /bin/bash
[root@c989d1727358 /]#
重新啟動停止容器:
docker start [-i] 容器名
[root@jinqiu ~]# docker start -i centos7.1
[root@c989d1727358 /]#
刪除停止的容器
docker rm 容器ID
docker rm -f `docker ps -a -q` 刪除多個容器
docker守護式容器:
能夠長期運行
沒有互動式會話
適合運行應用程式和服務
以守護形式運行容器:
docker run -i -t IMAGE /bin/bash
Ctrl +P
Ctrl +Q
docker run --name=自定義名字 -it -d 容器ID
a63bd654266b4e3d028ee094f8288a0e9fcc0550c7fb520c63a4abf375dcee3b
進入容器
[root@jinqiu ~]# docker attach 1577ab130215
[root@1577ab130215 /]#
[root@jinqiu ~]# docker exec -it 容器ID /bin/bash
[root@3eab758d74af /]# ls