docker 容器概念
1.什么是容器
容器就是在隔離環境運行的一個進程,如果進程停止,容器就會銷毀.隔離的環境擁有自己的系統文件,IP地址,主機名等.
kvm虛擬機,linux,系統文件
程序: 代碼, 命令
進程:正在運行的程序
2. 容器和虛擬化的區別
linux容器技術,容器虛擬化和kvm虛擬化的區別
kvm虛擬化: 需要硬件的支持,需要模擬硬件,可以運行不同的操作系統,啟動時間分鍾級(開機啟動流程)
容器:共用宿主機內核,運行服務,損耗少,啟動快,性能高
容器虛擬化:不需要硬件的支持。不需要模擬硬件,共用宿主機的內核,啟動時間秒級(沒有開機啟動流程)
總結:
(1)與宿主機使用同一個內核,性能損耗小;
(2)不需要指令級模擬;
(3)容器可以在CPU核心的本地運行指令,不需要任何專門的解釋機制;
(4)避免了准虛擬化和系統調用替換中的復雜性;
(5)輕量級隔離,在隔離的同時還提供共享機制,以實現容器與宿主機的資源共享。
3.docker 介紹
Docker是通過內核虛擬化技術(namespaces及cgroups cpu、內存、磁盤io等)來提供容器的資源隔離與安全保障等。由於Docker通過操作系統層的虛擬化實現隔離,所以Docker容器在運行時,不需要類似虛擬機(VM)額外的操作系統開銷,提高資源利用率。
kvm解決了硬件和操作系統之間的依賴
kvm獨立的虛擬磁盤,xml配置文件
docker解決了軟件和操作系統環境之間的依賴,能夠讓獨立服務或應用程序在不同的環境中,得到相同的運行結果。
docker鏡像有自己的文件系統。
docker容器是一種輕量級、可移植、自包含的軟件打包技術,使應用程序可以在幾乎任何地方以相同的方式運行。開發人員在自己筆記本上創建並測試好的容器,無需任何修改就能夠在生產系統的虛擬機、物理服務器或公有雲主機上運行。
doker安裝
1.安裝
# 刪除歷史文件 rm -fr /etc/yum.repos.d/epel.repo curl -o /etc/yum.repos.d/CentOS-Base.repohttp://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 yum install docker-ce -y
2.查看docker版本
命令:docker version
[root@controller ~]# docker version Client: Version: 17.12.0-ce API version: 1.35 Go version: go1.9.2 Git commit: c97c6d6 Built: Wed Dec 27 20:10:14 2017 OS/Arch: linux/amd64 Server: Engine: Version: 17.12.0-ce API version: 1.35 (minimum version 1.12) Go version: go1.9.2 Git commit: c97c6d6 Built: Wed Dec 27 20:12:46 2017 OS/Arch: linux/amd64 Experimental: false
3.配置docker鏡像加速
vi /etc/docker/daemon.json { "registry-mirrors": ["https://registry.docker-cn.com"] }
docker使用
docker操作
啟動 systemctl start docker
守護進程重啟 sudo systemctl daemon-reload
重啟docker服務 systemctl restart docker
重啟docker服務 sudo service docker restart
關閉docker service docker stop
關閉docker systemctl stop docker
鏡像管理
查看鏡像
docker images docker image ls
刪除鏡像
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 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(/bin/sh) docker attach(使用同一個終端) docker attach [OPTIONS] CONTAINER nsenter(安裝yum install -y util-linux 棄用) 刪除容器 docker rm 批量刪除容器 docker rm -f `docker ps -a -q` 總結:docker容器內的第一個進程(初始命令)必須一直處於前台運行的狀態(必須夯住),否則這個容器,就會處於退出狀態!