Docker

Docker概念

  • Docker 是一个开源的应用容器引擎

  • Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任何流行的Linux机器上

  • 容器是完全使用沙箱机制,相互隔离

  • 容器性能开销极低

小结:docker是一种容器技术,解决软件跨环境迁移的问题

Docker 镜像操作命令

  • docker images //显示

  • docker save //保存

  • docker load //加载

  • docker rmi //删除

  • docker push //推送

  • docker pull //拉取

     

Docker 容器相关命令

  • docker run // 创建容器以及运行容器

    1. docker pause //暂停

    2. docker unpause //不暂停

    3. docker stop //停止

    4. docker start //开始

    5. docker run --name mn -p 80:80 -d nginx

      • --name :指定容器名字

      • -p :指定容器端口映射

      • -d :让容器后台运行

  • docker ps //查看所有运行的容器及其状态 ,默认运行状态的

    • -a 查看所有的

  • docker logs //查看日志

    • 添加 -f 参数可以持续查看日志

  • docker exec //进入容器执行命令 退出 exit

    • docker exec -it [容器名] [ 要执行的命令:例bash]

  • docker rm //删除容器

    • -f 强制删除运行的容器

       

创建一个redis容器

  • docker run --name mr -p 6379:6379 -d redis redis-server --appendonly yes

  • docker exec -it mr redis-cli

  • keys *

  • set num 666 get num

数据卷

  • (volume)是一个虚拟目录,指向宿主机文件系统中的某个目录

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

  • 操作语法:docker volume [command]

  • docker volume 是数据卷操作,,根据命令后跟随的command来确定下一步操作

    • create //创建一个volume

    • inspect //显示一个或者多个volume的信息

    • ls //列出所有的volume

    • prune //删除未使用的volume

    • rm //删除一个或者多个指定的volume

  • 注:docker volume --help 可以查看

挂载数据卷 -v
  • -v volumeName:/targetContainerPath

  • 如果容器运行时volume不存在,会被自动创建出来

  • docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx

  • -v html:/usr/share/nginx/html html 是数据卷名称,,后面的是容器内的html目录

  • 查看 :docker volume inspect html

  • 进入该目录:cd /var/lib/docker/volumes/html/_data

  • 修改 :vi index.html

服务重启,docker挂掉了
  • systemctl restart docker

  • systemctl status docker

直接挂载到宿主机上
  • -v 宿主机文件:容器内文件

  • -v 宿主机目录:容器内目录

自定义镜像-镜像结构
  • 镜像是分层结构,每一层称为一个Layer

    • BaseImage :包含基本的系统函数库,环境变量,文件系统

    • Entrypoint:入口,是镜像中应用启动的命令

    • 其它:在BaseImage基础上添加依赖,安装程序,完成整个应用的安装和配置

DockerCompose
  • 可以基于Compose文件帮我们快速部署分布式应用,而无需手动一个个创建和运行

  • Compose文件是一个文本文件,通过指令定义集群中的每一个容器如何运行。【运行容器的集合】

Docker镜像仓库
  • 推送本地仓库,要重命名(docker tag)镜像,以镜像仓库为地址

    • docker tag nginx:latest 192.168.142.129:8080/nginx:1.0

  • 镜像仓库推送前需要把仓库地址配置到docker服务的daemon.json,被docker信任

    • vi /etc/docker/daemon.json

    • "insecure-registries":["http://192.168.142.129:8080"]

    • systemctl daemon-reload

    • systemctl restart docker

    • mkdir registry-ui

    • touch docker-compose.yml

  • 推送使用docker push命令

    • docker push 192.168.142.129:8080/nginx:1.0

  • 拉取使用docker pull命令

    • docker pull 192.168.142.129:8080/nginx:1.0