黑马-docker笔记

发布于:2025-04-13 ⋅ 阅读:(20) ⋅ 点赞:(0)

·什么是docker

image-20250306205343439

docker安装

卸载旧版

首先如果系统中已经存在旧的Docker,则先卸载:

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

配置Docker的yum库

切换镜像源

当前使用的 CentOS 官方镜像可能不可用或网络延迟较高,可以切换到其他镜像源,例如阿里云或腾讯云的镜像。

  • 备份原有的 yum 配置:

    bash复制代码
    
    sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
    
  • 下载并替换为阿里云的镜像源:

    bash复制代码
    
    sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    
  • 清理缓存并更新 yum

    sudo yum clean all
    sudo yum makecache
    

安装成功后,执行命令,配置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

安装Docker

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

启动和校验

# 启动Docker
systemctl start docker

# 停止Docker
systemctl stop docker

# 重启
systemctl restart docker

# 设置开机自启
systemctl enable docker

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

配置国内镜像加速器

由于 Docker Hub 的服务器位于国外,国内用户可能会遇到访问缓慢或超时的问题。可以配置国内镜像加速器,例如阿里云或腾讯云提供的加速器。

  • 编辑 Docker 的配置文件(通常位于 /etc/docker/daemon.json):

    bash复制代码
    
    sudo nano /etc/docker/daemon.json
    

    添加或修改以下内容(以阿里云加速器为例):

    {
      "registry-mirrors": ["https://<your-alibaba-cloud-id>.mirror.aliyuncs.com"]
    }
    

    如果你没有阿里云账号,可以使用公共的加速器地址,例如:

    {
        "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"
        ]
    }
    
    
  • 保存文件后,重启 Docker 服务:

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

Mysql安装

docker run -d \
  --name mysql \
  -p 3307:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql:8

出现ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded错误的原因是因为MySQL 8.0默认使用caching_sha2_password作为认证插件,而你的MySQL客户端可能无法支持或加载这个插件。以下是几种解决方法:

解决方法

  1. 使用MySQL客户端最新版本

    • 确保你的MySQL客户端是最新版本,因为较新的版本支持caching_sha2_password认证插件。
  2. 更改MySQL用户的认证插件

    • 你可以通过Docker容器进入MySQL,并将用户的认证插件更改为mysql_native_password。执行以下步骤:

      • 首先,进入MySQL Docker容器:

        bash复制代码
        
        docker exec -it mysql mysql -uroot -p123
        
      • 然后在MySQL命令行中执行以下SQL语句:

        ALTER USER 'root'@'%' IDENTIFIED WITH 'mysql_native_password' BY '123';
        FLUSH PRIVILEGES;
        
      • 退出MySQL命令行并尝试重新连接。

镜像和容器

image-20250306212837717

https://hub.docker.com

查看所有的镜像命令·:docker images

image-20250306213451254

docker命令

image-20250306215940812

image-20250307172928677

docker常见命令

Docker最常见的命令就是操作镜像、容器的命令,详见官方文档:https://docs,docker,com/

image-20250307175705207

# 进入容器
docker exec -it nginx bash

# 退出容器
exit

# 删除容器(要先停止才能删除或者强制删除)
docker rm nginx

# 强制删除
docker rm -rf 容器id或容器名字

# 保存镜像到本地
docker save -o nginx.tar nginx:latest

# 加载本地包到docker
docker load -i nginx.tar

# 删除镜像
docker rmi nginx:latest

# 格式化
docker ps --format "table {{.ID}\t{{.Image}}\t{{.Ports}\t{{.Status}}\t{{.Names}}"


# 持续输出日志
docker logs -f nginx

# 查看容器信息
docker inspect mysql
一键启动所有docker 容器:docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
一键关闭所有docker 容器:docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
一键删除所有docker 容器:docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
一键删除所有docker 镜像:  docker rmi $(docker images | awk '{print $3}' |tail -n +2)

格式化

image-20250411194138330

docker设置命令别名

vi ~/.bashrc

image-20250411202942748

让配置生效

source ~/.bashrc

数据卷

数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。

image-20250307201607038

数据卷-操作命令

image-20250307201718749

数据卷挂载

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

本地目录挂载

docker run -d --name 容器名 -p 宿主机端口:容器端口 -v 宿主机目录或文件:容器内目录或文件 镜像名

image-20250307212130890

创建Mysql容器并实现本地目录挂载

image-20250307212803938

docker run -d
–name mysql
-p 3306:3306
-e MYSQL_ROOT_PASSWORD=123
-e TZ=Asia/Shanghai
-v /root/mysql/data:/var/lib/mysql
-v /root/mysql/init:/docker-entrypoint-initdb.d
-v /root/mysql/conf:/etc/mysql/conf.d
mysql:8

image-20250411211520238

自定义镜像

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

image-20250307215600968

镜像结构

image-20250307220111210

DockFile

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像。

image-20250307220448895

image-20250307220911146

image-20250307221334104

image-20250411213801357

image-20250411214435011

网络

image-20250308131944698

image-20250308132036992

docker run -d --name myapp -p 8080:8080 --network itheima app:1.0

项目部署

部署服务端

需求:将我们开发的tlias-web-management项目打包为镜像,并部署。
步骤:
1,准备MySQL容器,并创建tlias数据库及表结构。(已完成)

mysql -h192.168.100.128 -P3307 -uroot -p --ssl-mode=DISABLED

2,准备java应用(tlias项目)镜像,部署Docker容器,运行测试。
修改tlias项目的配置文件,修改数据库服务地址及logback日志文件存放地址,打jar包。
编写Dockerfile文件。
构建Docker镜像。

docker build -t tlias:1.0

​ 部署Docker容器。

docker run -d --name tlias-server -p 8080:8080 --network itheima tlias:1.0

docker logs -f tlias-server

# 使用 CentOS 7 作为基础镜像
FROM centos:7

# 添加 JDK 到镜像中
COPY jdk17.tar.gz /usr/local/
RUN tar -xzf /usr/local/jdk17.tar.gz -C /usr/local/ &&  rm /usr/local/jdk17.tar.gz

# 设置环境变量
ENV JAVA_HOME=/usr/local/jdk-17.0.10
ENV PATH=$JAVA_HOME/bin:$PATH

ENV OSS_ACCESS_KEY_ID=xxxx
ENV OSS_ACCESS_KEY_SECRET=xxxx

#统一编码
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8

# 创建应用目录
RUN mkdir -p /tlias
WORKDIR /tlias

# 复制应用 JAR 文件到容器
COPY  tlias.jar  tlias.jar

# 暴露端口
EXPOSE 8080

# 运行命令
ENTRYPOINT ["java","-jar","/tlias/tlias.jar"]

部署前端项目

image-20250308153632549

docker run -d
–name nginx-tlias
-v /root/tlias-nginx/html:/usr/share/nginx/html
-v /root/tlias-nginx/conf/nginx.conf:/etc/nginx/nginx.conf
–network itheima
-p 80:80
nginx:1.20.2

DockerPompose

image-20250308155118940

image-20250308160110516

命令

docker compose up -d

-d 后台运行

image-20250308161932785

image-20250412125841829