容器技術
1、什麼是容器?
容器就是隔離的環境運行的一個進程,如果進程停止,容器就會退出。
隔離的環境擁有自己的系統文件,ip地址,主機名等。
2、容器和虛擬機的區別(優勢)
虛擬化:擁有自己的內核,可以運行不通的操作系統,需要走開機啓動流程,隔離性能更好。
容器:不需要cpu的支持,共用宿主機內核,輕量級,損耗少(不需要模擬硬件),啓動快,性能好。
docker安裝啓動
[root@docker01 ~] wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
[root@docker01 ~] sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
[root@docker01 ~] yum install docker-ce -y
[root@docker01 ~] systemctl enable docker
[root@docker01 ~] systemctl start docker
docker驗證
[root@docker01 yum.repos.d]# docker version
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:25:41 2019
OS/Arch: linux/amd64
Experimental: false
docker主要內容
docker是一個cs架構,docker主要:鏡像 容器 倉庫 網絡 存儲 監控,docker是一個軟件的打包技術。
docker鏡像常用命令
docker search 搜索鏡像, 優先選官方,stars數量多
docker pull 拉取鏡像(下載鏡像)
docker push 推送鏡像(上傳鏡像)
docker load 導入鏡像
例子: docker load -i docker_nginx.tar.gz
docker save 導出鏡像
例子:docker save centos:7 -o docker_centos7.tar.gz
docker images 查看鏡像列表
docker rmi 刪除鏡像
docker tag 給鏡像打標籤
docker容器的常用命令
docker run 創建並啓動容器
例子:docker run -d -it -p 80:80 nginx:latest
docker create 創建容器 --name
docker start 啓動容器
docker stop 停止容器
docker restart 重啓容器
docker kill 強制停止容器
docker ps 查看容器列表 -a 查看所有容器
docker rm 刪除容器
批量刪除所有容器 docker rm -f `docker ps -a -q`
docker exec 進入正在運行的容器(分配一個新終端)
例子: docker exec -it 容器id/容器名字 /bin/bash(/bin/sh)
docker attach 進入正在運行的容器(使用相同的終端),偷偷離開的快捷鍵ctrl +p,ctrl +q
注意:容器想要放在後臺一直運行,那麼容器的初始命令,必須夯住(前臺運行),否則容器就會退出。
例如:nginx :nginx -g 'daemon off;'
例如:php :/usr/sbin/php-fpm --nodaemonize
例如:httpd :/usr/sbin/httpd -D FOREGROUND
docker端口映射
docker run
-p 宿主機端口:容器端口
-p 宿主機ip1:宿主機端口:容器端口 (多個容器同時使用80端口)
-p 宿主機ip1::容器端口 隨機端口映射
-p 宿主機ip1::容器端口/udp 使用udp協議做隨機端口映射
-p 80:80 -p 3306:3306
-p 1111-1119:1111-1119 端口範圍映射
-P 自動隨機端口映射
docker數據卷
-v 宿主機絕對目錄:容器目錄
-v 容器目錄 #創建一個隨機卷,來持久化容器的目錄下的數據
-v 卷名:容器目錄 #創建一個固定名字的卷,來持久化容器的目錄下的數據
注意:一旦創建成功則無法添加數據卷