一、了解docker
docker 是一个软件,运行在操作系统上
docker里运行很多的容器 container,一个容器里跑(运行)一个程序(app)
docker是容器的管理程序
docker也是一个虚拟化软件,里面的虚拟机是container 容器容器
一个容器相当于一个虚拟机,里面会运行一个微型的操作系统和程序代码是一个容器平台 其实本质上是一个进程,进程里跑一个应用。
所有的容器都是使用相同的操作系统,相同的底层硬件
图 1-1
docker和虚拟机的区别
docker的优势:
启动速度块 资源消耗小 资源可以控制 扩展方便
docker缺点:
app的隔离这块,没有虚拟机彻底 层次不一样 -->虚拟机多一层封装
二、安装docker
官方安装文档https://docs.docker.com/engine/install/centos/
三、镜像
镜像(image):
镜像是打包好的软件,程序代码、基础系统、依赖关系的软件包、系统库、工具等都是需要人去制作
命令
docker images 查看你的docker里有那些镜像
docker rmi mysql:latest (docker rmi 删除镜像命令) (mysql:latest mysql镜像:版本)
docker search nginx 查看镜像 有哪些版本
docker pull nginx 下载镜像
四、容器
容器(container):
运行镜像的地方,背后就是起到一个进程来运行这个镜像
命令
docker ps 查看启动的docker容器 -a 查看所以的(包括没有运行的)
docker network inspect bridge 查看bridge桥接网络的详细
docker network ls 查看本机docker里的网络类型
docker run -d -p 80:80 --name sc_nginx nginx
docker run(等于docker create + docker start) 创建容器 -d
-p 80:80 端口映射 --name sc_nginx 容器名 nginx
docker stop sc_nginx 停止容器
docker start
docker rm
docker exec -it sc_nginx2 /bin/bash
docker exec 进入容器 -it
sc_nginx2 容器名 /bin/bash 进入容器执行的程序
docker service create 创建一个服务
docker logs 查看容器启动的过程中的日志 排错使用
docker top 查看容器内部的进程
五、容器的数据保存问题-数据持久化
1.正常停止容器,容器里的数据会丢失吗?
不会丢失,会保存 /var/lib/docker/volumes/ 存放数据文件夹
2、数据卷
实现容器和宿主机之间共享数据的,方便备份恢复,一台机器上的容器和宿主机之间的数据共享
如果是多台机器,背后需要使用nfs、NAS、SAN、云存储等网络存储解决
图2-1
三种不同的语法去使用卷
使用卷: 容器去使用卷
docker run -d \
--name fan-nginx-1 \
--mount source=sc,target=/usr/share/nginx/html \
-p 7790:80 \
nginx:latest[root@sc-docker _data]# docker run -d --name fan-nginx-1 --mount source=sc,target=/usr/share/nginx/html -p 7790:80 nginx:latest
ed4d7192e658d9f327ebee8bcdaaedb36f78dffe0c5666d32b7b3c831343fbaa
[root@sc-docker _data]#
docker run -d --name wangll-nginx-1 --mount source=sc,target=/usr/share/nginx/html -p 7791:80 nginx:latestdocker run -d \
--name xuzz-3 \
-v sc:/usr/share/nginx/html \
nginx:latestdocker run -d --name xuzz-2 -p 7789:80 -v /sc-web/:/usr/share/nginx/html/ nginx