一、了解docker

    docker 是一个软件,运行在操作系统上
    docker里运行很多的容器 container,一个容器里跑(运行)一个程序(app)
    docker是容器的管理程序
    docker也是一个虚拟化软件,里面的虚拟机是container 容器

    容器
    一个容器相当于一个虚拟机,里面会运行一个微型的操作系统和程序代码是一个容器平台      其实本质上是一个进程,进程里跑一个应用。
    所有的容器都是使用相同的操作系统,相同的底层硬件


docker 命令 安装镜像 docker镜像里面安装软件_linux

图 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、云存储等网络存储解决


docker 命令 安装镜像 docker镜像里面安装软件_docker 命令 安装镜像_02

图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:latest

docker run -d \
  --name xuzz-3 \
  -v sc:/usr/share/nginx/html \
  nginx:latest

  docker run -d --name xuzz-2 -p 7789:80 -v /sc-web/:/usr/share/nginx/html/ nginx