首页 > 其他分享 >Docker

Docker

时间:2025-01-07 11:00:33浏览次数:3  
标签:容器 nginx mysql 镜像 Docker docker

安装Docker

1. 卸载已有的Docker

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine \
    docker-selinux 

2. 配置yum源

  1. 安装yum工具
yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 配置yum源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3. 安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

几个常见的错误

  1. 报错
    在这里插入图片描述
    /etc/yum.repos.d/路径下的配置文件里,看看是否有中文注释,删了中文注释就行了
  2. 报错
    在这里插入图片描述
    资源文件放到指定的路径(/opt/centos/repodata/)下就行了
  3. 安装docker时报错:
    在这里插入图片描述
    解决办法:安装docker-ce-selinux
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

4. 启动和校验

# 启动Docker
systemctl start docker

# 停止Docker
systemctl stop docker

# 重启
systemctl restart docker

# 设置开机自启
systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

5. 配置镜像加速

  1. 打开阿里云的容器镜像服务
  2. 点击管理控制台:
    在这里插入图片描述
  3. 按照步骤配置镜像加速器即可。
    在这里插入图片描述
    在拉取镜像的时候报错在这里插入图片描述
    原因:现在阿里云的镜像已经停用失效,导致网络无法访问。
    解决:可以修改配置文件:
{
    "registry-mirrors": [
        "https://docker.1ms.run",
        "https://docker.1panel.live/"
    ]
}

重新加载配置文件并重启docker:

 sudo systemctl daemon-reload
 sudo systemctl restart docker

镜像和容器

利用Docker安装应用时,Docker会自动搜索并下载镜像image)。镜像包含了:应用本身、应用运行所需的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离环境,成为容器container
镜像仓库:存储和管理镜像的平台。
镜像帮助文档dockerHub

部署Mysql

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql:5.7.32
  • docker run:创建并运行一个容器
  • -d:让容器在后台运行
  • –name:给容器起名,必须唯一
  • -p:设置端口映射【宿主机 : 容器内】
  • -e:设置环境变量
  • mysql:5.7.32:指定运行的镜像名[镜像名]:[版本](版本省略就默认是最新版)

常见命令

在这里插入图片描述

docker run:创建并运行容器
docker start:启动容器,但是不会创建容器
docker exec -it 容器名 bash:进入容器内部

给docker ps和docker images命令取个别名

  1. 进入.bashrc文件:vim ~/.bashrc
  2. 起别名:
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'
  1. 让修改的文件生效:source ~/.bashrc

数据卷挂载

数据卷(volume)是一个虚拟目录,是容器内目录宿主机目录之间映射的桥梁。(是个双向映射)
在这里插入图片描述
在这里插入图片描述

  1. 在执行docker run命令,使用-v 数据卷:容器内目录,可以完成数据卷的挂载。
  2. 当创建容器时,如果挂载了数据卷,且数据卷不存在,会自动创建数据卷。

本地目录挂载

  1. 在执行docker run命令,使用-v 本地目录:容器内目录,可以完成本地目录的挂载。
  2. 本地目录必须以 / 或 ./ 开头,如果直接以名称开头,会被识别成数据卷而非本地目录。
docker run -d \
  --name mysql \
  -p 3307:3306 \
  -v /root/mysql/data:/var/lib/mysql \
  -v /root/mysql/init:/docker-entrypoint-initdb.d \
  -v /root/mysql/conf:/etc/mysql/conf.d \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql:5.7.32

自定义镜像

镜像包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程实际上就是把上述文件打包的过程。

镜像结构

在这里插入图片描述

Dockerfile

Dockerfile就是一个文本文件,其中包含一个个的指令,用指令来说明要执行什么操作来构建镜像。
在这里插入图片描述

构建镜像

docker build -t myImage:1.0 .
  • -t:给镜像起名,格式:[镜像名]:[版本](不指定版本默认为latest)
  • . :指定Dockerfile所在目录,如果在当前目录就指定为“.”

网络

默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上。
在这里插入图片描述

Docker的网络操作命令

加入自定义网络的容器才可以通过容器名互相访问。
在这里插入图片描述

把容器加入网络的两种方式:
先创建容器,再把容器加入网桥:docker network connect 网络名 容器名
创建容器的同时把容器加入网桥:docker run -d .... --network 网络名 ...

项目部署

后端部署

  1. 打包项目
    在这里插入图片描述
  2. 把打包好的jar包Dockerfile文件一起丢到服务器上
    在这里插入图片描述
  3. 切换到/root/hm目录下,构建自定义镜像hm-java:docker build -t hm-java:1.0 .
    在这里插入图片描述
  4. 创建并运行容器,同时把容器加入网桥:docker run -d --name hm-java -p 8080:8080 --network lsh hm-java:1.0
    在这里插入图片描述

部署前端

  1. 准备好静态资源配置文件
    在这里插入图片描述
  2. 创建容器并挂载
docker run -d \
--name nginx \
-p 18080:18080 \
-p 18081:18081 \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
--network lsh \
nginx

DockerCompose

通过一个独立的docker-compose.yml模板文件(yaml格式)来定义一组相关联的应用容器,帮助我们实现多个关联的Docker容器的快速部署。
在这里插入图片描述
在这里插入图片描述
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

在这里插入图片描述

标签:容器,nginx,mysql,镜像,Docker,docker
From: https://blog.csdn.net/qq_57882997/article/details/144959114

相关文章

  • 曲线救国--访问dockerhub仓库
     前言由于dockerhub也被墙了,导致基础镜像没法拉取。后面解封了,又被墙了。。。在这次被墙之前,访问国外的速度也是堪忧,甚至访问不了k8s的镜像,基于此,分享一下笔者经验使用Daocloud传送门:https://github.com/DaoCloud/public-image-mirror简单来说,就是加一个docker.m.da......
  • 每天40分玩转Django:Django Docker化学习指南
    DjangoDocker化学习指南1.学习目标理解Docker容器化的基本概念和优势掌握Django应用的Docker化过程学习使用DockerCompose管理多容器应用2.核心知识点知识点重要程度掌握要求Dockerfile编写⭐⭐⭐⭐⭐熟练掌握Docker基本命令⭐⭐⭐⭐熟练掌握DockerCompose配置⭐⭐......
  • 基于 docker 安装 nginx 详细教程
    1.创建普通用户用于管理docker在本教程中我们创建一个普通用户来进行后续的docker相关服务的配置与运维。当然本操作是非必须的,你可以直接使用root用户来直接操作,对整个流程没有影响。不想创建用户请直接跳过第一部分,从第二部分开始操作即可。创建普通用户 lidyuseraddl......
  • 【docker系列】可视化Docker 管理工具——Portainer
    1.介绍Portainer是一个可视化的Docker操作界面,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。2.需要环境2.1硬件需......
  • Docker-Compose配置文件结构详解及命令
    yaml文件结构在项目名目录下创建docker-compose.yaml文件,文件结构如下version:'3'#版本号services:#服务类web:#web服务build:../#在本文件的上级目录下构建映像restart:unless-stopped#重启策略ports:-"6000:5......
  • CentOS7环境下的Docker使用(五)Docker容器的网络模式
    在CentOS7环境下使用Docker时,容器的网络模式是一个重要的概念。Docker提供了三种默认的网络模式:bridge、host和none。了解这些模式的特点和适用场景,有助于更好地配置和管理Docker容器。一、Bridge模式Bridge模式是Docker的默认网络模式。在这种模式下,每个容器都会分配一个独立的I......
  • Docker多阶段构建详解及问题解决
    在Docker的构建过程中,多阶段构建是一种非常强大的功能,它允许我们在一个Dockerfile中使用多个阶段来构建镜像,从而大大优化最终镜像的大小和构建过程。本文将详细介绍Docker多阶段构建的基本用法,并针对在使用该功能时可能遇到的问题提供解决方案。Docker多阶段构建基础多阶......
  • ThingsBoard - docker源码打包部署
    【ThingsBoard-docker源码打包部署-哔哩哔哩-如果觉得有用点下关注】 1、Docker-compose拉取镜像部署文档地址:ThingsBoard-源码编译打包部署-CSDN博客2、Dockerfile#使用thingsboard/openjdk17:bookworm-slim作为基础镜像FROMthingsboard/openjdk17:bookworm......
  • docker之学习操作记录,跟我一起练
    我没有使用高权限,所以后边都要加sudo,你如果和我一起练习的话,注意一下。1.查看状态sudosystemctlstatusdocker2.查看镜像kt@kt-SYS-4028GR-TR2:~$sudodockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEkt@kt-SYS-4028GR-TR2:~$sudodockerimages-......
  • 用Portainer实现对Docker容器的管理(四)
    11.1.5PortainerContainers(容器)图11-8      如图11-8所示,Containerslist显示了Docker容器相关内容,您可以看到在本地已有的所有容器、它们的运行状态、不同容器日志、CPU和内存等资源利用情况、内部IP、端口的映射等。如果您对Docker命令比较熟悉的话,可以将其简单......