docker基础命令以及数据卷等理解

文章目录

  • docker
    • 1、基础命令
    • 2、运行容器
    • 3、数据卷
      • 数据卷命令
      • 数据卷挂载
      • 数据库mysql挂载
      • dockerfile
      • dockercompose

docker

结构包括:

  • 计算机硬件:例如CPU、内存、磁盘等
  • 系统内核:所有Linux发行版的内核都是Linux,例如CentOS、Ubuntu、Fedora等。内核可以与计算机硬件交互,对外提供内核指令,用于操作计算机硬件。
  • 系统应用:操作系统本身提供的应用、函数库。这些函数库是对内核指令的封装,使用更加方便。

不同操作系统的内核可能一样,但是提供的函数库不一样,比如一个Ubuntu的mysql安装到centos,在想调用Ubuntu的函数会发现找不到,而Docker是直接连同Ubuntu的函数库一起打包的,借助内核运行。

docker基础命令以及数据卷等理解_第1张图片

1、基础命令

docker rmi name:tag 删除某个镜像remove images

docker save -o name.tar name:tag 打包某个镜像

docker 命令 –help 查看某个命令的用法

docker load 加载镜像

docker exec 进入容器

docker logs 查看容器运行日志

2、运行容器

docker run –name containerName -p 80:80 -d nginx [command一些容器的命令]

-p 主机端口:容器端口

-d 后台运行

docker exec -it containerName bash bash模式进入容器,docker exec -it redis redis-cli

看到的文件类似一个操作系统,实际上这些文件只需要符合nginx需要的,可以看dockerhub作者写的关于该镜像文件的位置存放,进入的是容器,一个类似的linux操作系统,只不过这个linux操作系统是专门服务于这个容器的,所以支持一些命令

docker ps -a 查看所有容器

docker rm -f containerName 强制删除容器

3、数据卷

数据卷命令

数据卷可以进行容器的数据共享,可以挂载

数据卷是一个虚拟目录,指向本地文件夹/var/lib/docker/volumes/***,可以和容器实现数据互通

数据卷的作用:

  • 将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全

数据卷操作:

  • docker volume create:创建数据卷
  • docker volume ls:查看所有数据卷
  • docker volume inspect:查看数据卷详细信息,包括关联的宿主机目录位置
  • docker volume rm:删除指定数据卷
  • docker volume prune:删除所有未使用的数据卷

数据卷挂载

docker run --name nginx -p 80:80 -v html:/usr/share/nginx/html -d nginx:latest -v 数据卷:本机目录

可以在没创建数据卷时执行run,一样会创建数据卷,有则挂载,需要注意数据卷的挂载点

使用docker volume inspect 数据卷的命令查看,不知道有哪些数据卷可以使用docker volume ls

docker基础命令以及数据卷等理解_第2张图片

数据库mysql挂载

按照文档的说法,mysql镜像的配置文件会引入这两个目录

所以配置文件挂载到主机只需要挂载这两个目录

docker基础命令以及数据卷等理解_第3张图片

挂载数据,按照文档的说法,镜像的数据在这个目录/var/lib/mysql

docker run \
--name some-mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-v /temp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /temp/mysql/data:/var/lib/mysql \
-d mysql:5.7.25

容器的文件夹或文件挂载到了本机目录,可以通过docker inspect container查看挂载的信息

dockerfile

常用的镜像我们可以在dockerhub上找到,但是类似自己的项目需要构造镜像的,就需要用到dockerfile了

镜像构建的说明书,包含一个个的命令,每个命令都会形成一层layer

第一行必须是From,从一个基础镜像开始构建

基础镜像可以是操作系统,类似Ubuntu。也可以是别人制作好的基础镜像:java:8-alpine

dockercompose

Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。格式如下:

version: "3.8"
 services:
  mysql:
    image: mysql:5.7.25
    environment:
     MYSQL_ROOT_PASSWORD: 123 
    volumes:
     - "/tmp/mysql/data:/var/lib/mysql"
     - "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
  web:
    build: .
    ports:
     - "8090:8090"

上面的Compose文件就描述一个项目,其中包含两个容器:

  • mysql:一个基于mysql:5.7.25镜像构建的容器,并且挂载了两个目录
  • web:一个基于docker build临时构建的镜像容器,映射端口时8090

DockerCompose的详细语法参考官网:https://docs.docker.com/compose/compose-file/

其实DockerCompose文件可以看做是将多个docker run命令写到一个文件,只是语法稍有差异。

你可能感兴趣的:(docker,容器)