Docker理论与实践篇

Docker理论与实践

理论知识

官网:https://hub.docker.com/

简介

  • 镜像:Docker镜像相当于是一个root文件系统
  • 容器:镜像和容器的关系,就像类和对象一样,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
  • 仓库:仓库可以看成一个资源中心,用来保存镜像

数据卷:

  • 数据卷是宿主机中的一个目录或文件
  • 当容器目录和数据卷目录绑定后,对方的修改会立即同步
  • 一个数据卷可以被多个容器同时挂载
  • 一个容器也可以被挂载多个数据卷

配置数据卷:

  • 创建启动容器时,使用-v参数 设置数据卷

     docker run ... -v 宿主机目录(文件):容器内目录(文件) ...
    
  • 注意事项:

    1. 目录必须是绝对路径
    2. 如果目录不存在,会自动创建
    3. 可以挂载多个数据卷
  • 数据卷容器

    docker run -it --name= -v /volume centos:7 --volume-from 数据卷容器名称
    

Docker下载安装

  1. 安装需要的软件包

    yum install -y yum-utils device-mapper-persistent-data lvm2
    
    • 设置yum源(以下命令二选一)
      • 阿里云:yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      • 国外:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  2. 安装docker

    yum install -y docker-ce
    
    docker -v
    #查看docker版本,验证是否成功
    
  3. 安装docker-compose

    # 安装
    curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    
    #设置文件可执行权限
    chmod +x /usr/local/bin/docker-compose
    
    #查看版本信息 验证是否安装成功
    docker-compose -v
    
  4. 启动docker,创建docker网络

    #启动docker
    systemctl start docker
    
    # 创建网络(admin跟docker配置文件一致,注意ip) -- (可做可不做,看具体配置,如果创建了需要为每个容器分配ip)
    docker network create admin --subnet 172.10.3.0/24 --opt com.docker.network.bridge.name=docker-app
    
  5. 创建相应文件夹及编写docker-compose.yml配置文件、编写nginx.conf文件

  6. 启动docker-compose服务

    # 启动docker-compose并根据docker-compose.yml拉取镜像,创建相应的容器
    docker-compose up -d 
    #关闭
    docker-compose down
    

Docker命令

  • 服务相关命令
#启动docker服务
systemctl start docker
#重启docker服务
systemctl restart docker
#停止
systemctl stop docker
#查看docker服务状态
systemctl status docker
#设置开机启动docker
systemctl enable docker
  • 镜像相关命令
#查看所有镜像 
docker images
#查看所有镜像ID 
docker images -q

#搜索镜像
docker search 镜像名称
#拉取镜像 没有加版本则默认最新版本
docker pull 镜像名称 
docker pull redis:5.0 #指定版本,指定版本时可以到官网搜索相应镜像会有对应版本
#删除镜像
docker rmi 镜像名称:版本号/镜像id
  • 容器相关命令
#查看当前正在运行的容器
docker ps 
# 查看所有容器
docker ps -a 

#创建并启动容器
docker run -参数 镜像名称:版本号 /bin/bash

#进入容器
docker exec -it 容器名称 /bin/bash
  • 参数说明
    • -i:保持容器运行。通常与-t同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭
    • -t:为容器重新分配一个伪输入终端,通常与-i同时使用
    • -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec进入容器docker exec -it c2 /bin/bash。退出后,容器不会关闭
    • -it创建的容器一般称为交互式容器;-id创建的容器一般称为守护式容器
    • –name:为创建的容器命名
  • eg:docker run -id --name=mysql -v ./mysql/data:/var/lib/mysql \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123456 MYSQL:5.7
    • -e 设置环境参数
    • -p 端口映射
    • -v 文件挂载,实现容器中的文件会随着挂载文件夹更新
  • eg:docker exec -it mysql /bin/bash
#停止
docker stop 容器名称
#删除,如果删除失败,要先将容器停止再删除
docker rm 容器名称
#查看容器信息
docker inspect 容器名称
#容器日志信息打印
docker logs -f --tail=数值 容器名称
#tail参数是从倒数第几行开始打印

常用容器

  1. mysql

    docker exec -it 容器名称 bash
    mysql -uroot -p密码
    
    #如果远程连接失败
    use mysql;
    select host from user where user ='root';
    update user set host ='%' where user ='root';
    #刷新命令权限
    flush privileges;
    
    #关闭防火墙
    systemctl status firewalld.service;
    systemctl stop firewalld.service;
    
    #重启docker
    systemctl restart docker
    
  2. redis

    #方式一
    docker exec -it yshop-redis redis-cli;
    auth 密码;
    #方式二
    docker exec -it yshop-redis bash;
    redis-cli;
    auth 密码;
    

猜你喜欢

转载自blog.csdn.net/weixin_47407737/article/details/126504976