Docker详细安装教程及基本使用

Docker

🔧安装Docker

前提条件:准备一台Linux系统的虚拟机

  1. 更新yum仓库源为阿里云镜像源

    #编辑文件
    sudo vim /etc/yum.repos.d/CentOS-Base.repo
    #进入文件后,输入":%d",删除文件中所有内容
    :%d
    #按键盘i键,再将一下内容复制到文件中
    
    [base]
    name=CentOS-$releasever - Base - mirrors.aliyun.com
    baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    [updates]
    name=CentOS-$releasever - Updates - mirrors.aliyun.com
    baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    [extras]
    name=CentOS-$releasever - Extras - mirrors.aliyun.com
    baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    [centosplus]
    name=CentOS-$releasever - Plus - mirrors.aliyun.com
    baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    
    
    #按esc退出编辑,输入":wq",保持并退出
    :wq
    
  2. 清除并重建缓存

    sudo yum clean all
    sudo yum makecache
    sudo yum update
    
  3. 配置Docker的yum库

    #安装yum工具
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
    #配置Docker的yum源
    sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
    
    #更新yum,建立缓存
    sudo yum makecache fast
    
  4. 安装Docekr

    yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  5. 启动和校验

    #重启
    systemctl restart docker
    
    #设置开机自启
    systemctl enable docker
    
    #执行docker ps命令,如果不报错,说明安装启动成功
    docker ps
    
  6. 配置镜像加速

    #创建目录
    mkdir -p /etc/docker
    
    #复制内容,注意把其中的镜像加速地址改成你自己的
    tee /etc/docker/daemon.json <<-'EOF'
    {
        "registry-mirrors": [
            "http://hub-mirror.c.163.com",
            "https://mirrors.tuna.tsinghua.edu.cn",
            "http://mirrors.sohu.com",
            "https://ustc-edu-cn.mirror.aliyuncs.com",
            "https://ccr.ccs.tencentyun.com",
            "https://docker.m.daocloud.io",
            "https://docker.awsl9527.cn"
        ]
    }
    EOF
    
    #重新加载配置
    systemctl daemon-reload
    
    #重启Docker
    systemctl restart docker
    

🧱基础

常见命令

image-20240902165641724

命令说明案例
docker pull拉取镜像docker pull nginx
docker push推送镜像到DocekrRegistry
docker images查看本地镜像
docker rmi删除本地镜像docker rmi nginx:latest
docker run创建并运行容器(不能重复创建)docker run -d --name nginx -p 80:80 nginx
docker stop停止指定容器docker stop nginx
docker start启动指定容器docker start nginx
docker restart重新启动容器docker restart nginx
docker rm删除指定容器docker rm nginx -f
docker ps -a查看所有容器
docker logs查看容器运行日志docker logs -f nginx
docker exec进入容器docker exec -it nginx bash
docker save保持镜像到本地压缩文件docker save -o nginx.tar nginx:latest
docker load加载本地压缩文件到镜像docker load -i nginx.tar
docker inspect查看容器详细信息docker inspect nginx

命令别名:

vi ~/.bashrc

#添加别名
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'

#让别名生效
source ~/.bashrc

数据卷

作用:方便对容器内部温江进行修改

命令:

命令说明案例
docker volume create创建数据卷docker volume create html
docker volume ls查看所有数据卷
docker volume rm删除指定数据卷docker volume rm html
docker volume inspect查看某个数据卷的详情docker volume inspect html
docker volume prune清除数据卷
数据卷挂载:

宿主机目录和数据卷做映射,数据卷和容器目录做映射

image-20240902192427639

在执行docker run命令时,使用**-v 数据卷:容器内目录** 可完成数据卷挂载

例:

docker run -d \ 
--name nginx \
-p 80:80 \ 
-v html:/usr/share/nginx/html \
nginx
本地目录挂载:

宿主机目录和容器目录做映射

在执行docker run命令时,使用**-v 本地目录:容器内目录** 可完成本地目录挂载

例:

#在宿主机中提前创建相应的目录
docker run -d \ 
--name mysql \
-p 3306:3306 \ 
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \ 
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
-v /root/mysql/conf:/etc/mysql/conf.d \
mysql

镜像

image-20240902193543955

Dockerfile构建镜像:
  1. 描述镜像结构

    image-20240902194427609

  2. 构建镜像

    docker bulid -t myImage .

    注意命令的执行需要在Dockerfile同一目录下

网络

默认网络:docker0

在同一个网络中的容器,可以通过IP进行相互访问

但是,服务重新启动,IP地址会重新分配,故这种方式不稳定

自定义网络:
命令说明案例
docker network create创建一个网络docker network create mynet
docker network ls查看所有网络
docker network rm删除指定网络docker network rm mynet
docker network prune清除未使用的网络
docker network connect指定容器加入某网络docker network connect mynet mysql
docker network disconnect指定容器离开某网络docker network disconnect mynet mysql
docker network inspect查看网络详细信息docker network inspect mynet

🖥️项目部署

单个容器逐一部署

部署MySQL:
#在宿主机中提前创建相应的目录
docker run -d \ 
--name mysql \
-p 3306:3306 \ 
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \ 
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
-v /root/mysql/conf:/etc/mysql/conf.d \
--network myneet \
mysql
部署前端:
  1. 将静态资源和配置文件放到虚拟机上

  2. 创建并运行时,挂载静态资源和配置文件

    docker run -d \
    --name nginx \ 
    -p 8080:8080 \
    -v /root/nginx/html:/usr/share/nginx/html \
    -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
    --network myneet \
    nginx
    
部署后端:
  1. 将项目打包成jar包
  2. Dockerfile描述镜像结构
  3. 将jar包和Dockerfile放到虚拟机上
  4. docker bulid构建镜像
  5. docker run 部署应用
docker run -d \
--name project \
-p 8080:8080 \
--network mynet \
myImage.

多个相互关联的容器快速部署:DockerCompose

  1. 创建docker-compose.yml

    #案例:
    version: "3.8"
    
    services:
      mysql:
        image: mysql
        container_name: mysql
        ports:
          - "3306:3306"
        environment:
          TZ: Asia/Shanghai
          MYSQL_ROOT_PASSWORD: 123
        volumes:
          - "./mysql/conf:/etc/mysql/conf.d"
          - "./mysql/data:/var/lib/mysql"
          - "./mysql/init:/docker-entrypoint-initdb.d"
        networks:
          - hm-net
      hmall:
        build: 
          context: .
          dockerfile: Dockerfile
        container_name: hmall
        ports:
          - "8080:8080"
        networks:
          - hm-net
        depends_on:
          - mysql
      nginx:
        image: nginx
        container_name: nginx
        ports:
          - "18080:18080"
          - "18081:18081"
        volumes:
          - "./nginx/nginx.conf:/etc/nginx/nginx.conf"
          - "./nginx/html:/usr/share/nginx/html"
        depends_on:
          - hmall
        networks:
          - hm-net
    networks:
      hm-net:
        name: hmall
    
  2. 一键部署

    #在docker-compose.yml的同一目录下执行改命令
    docker compose up -d
    
  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值