docker容器

容器的發展史:

1)chroot技術
chroot,即change root directory(更改 root 目錄),在 linux 系統中,系統默認的目錄結構都是以`/`,即是以根 (root) 開始的,而在使用chroot之後,系統的目錄結構將以指定的位置作爲`/`位置

2)lxc容器
全稱:linux container,通過namespaces 命名空間實現的隔離環境,通過cgroups實現的資源限制,提供類似虛擬機一樣的體驗。

3)docker容器
早期的docker容器底層就是調用的lxc,後期才換成了自己的libcontainer

docker容器是什麼?

Docker是通過內核虛擬化技術(namespaces及cgroups)來提供容器的資源隔離與資源限制。由於Docker通過操作系統層的虛擬化實現隔離(對操作系統的內核有要求),所以Docker容器在運行時,不需要類似虛擬機(VM)額外的操作系統開銷,從而比kvm虛擬機更輕量。

docker是一種軟件的打包技術。

docker是一個cs架構:通過docker version來查看

docker最重要的三大組件:鏡像,容器,倉庫

docker的安裝

yum源配置:

rm -fr  /etc/yum.repos.d/local.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo

安裝docker-ce:
yum install docker-ce -y

配置docker鏡像加速

鏡像加速器:阿里雲加速器,daocloud加速器,中科大加速器,Docker 中國官方鏡像加速:https://registry.docker-cn.com

vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

systemctl  restart docker

容器常見命令

啓動docker

systemctl start docker
systemctl enable docker
docker run -d -p 80:80  nginx

解釋:
run    (創建並運行一個容器)
-d        放在後臺
-p        端口映射
nginx  docker鏡像的名字

搜索鏡像:docker search

獲取鏡像: docker pull(push)

docker pull centos:6.8(沒有指定版本,默認會下載最新版)
docker pull daocloud.io/huangzhichong/alpine-cn:latest

查詢docker鏡像所有版本https://hub.docker.com/r/library/

鏡像管理

查看鏡像  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 run -d -p 80:80 nginx:latest

run             (創建並運行一個容器)
-d                  放在後臺
-p                  端口映射
nginx:latest   docker鏡像的名字和版本

docker run == docker create  + docker start

容器管理

停止容器   docker stop CONTAINER_ID

殺死容器   docker kill container_name

查看容器列表     docker ps  /  docker ps –a 

刪除容器            docker rm

批量刪除容器     docker rm -f `docker ps -a -q`
docker run -it --name centos6 centos:6.8 /bin/bash

-it             分配交互式的終端
--name     指定容器的名字
/bin/sh      覆蓋容器的初始命令

--cpus       指定cpu的數量
--memory  限定內存的大小
-h              指定容器的主機名

進入容器

目的:排錯,調試

方法一:docker exec [OPTIONS] CONTAINER COMMAND [ARG...] 推薦使用
例子:    docker exec -it  容器id或容器名字 /bin/bash

方法二:docker attach [OPTIONS] CONTAINER
例子:    docker attach  容器id或容器名字,缺點是多個登錄窗口使用同一個終端,兩邊的內容操作會保持一致 

方法三:nsenter (安裝yum install -y util-linux 棄用)

docker的本質是:

在隔離的環境運行的一個進程,所以:docker容器內的第一個進程必須一直處於前臺運行的狀態(必須夯住),否則這個容器,就會處於退出狀態!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章