·什么是docker
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客户端可能无法支持或加载这个插件。以下是几种解决方法:
解决方法
使用MySQL客户端最新版本
- 确保你的MySQL客户端是最新版本,因为较新的版本支持
caching_sha2_password
认证插件。
- 确保你的MySQL客户端是最新版本,因为较新的版本支持
更改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命令行并尝试重新连接。
镜像和容器
https://hub.docker.com
查看所有的镜像命令·:docker images
docker命令

docker常见命令
Docker最常见的命令就是操作镜像、容器的命令,详见官方文档:https://docs,docker,com/
# 进入容器
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)
格式化
docker设置命令别名
vi ~/.bashrc
让配置生效
source ~/.bashrc
数据卷
数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。
数据卷-操作命令
数据卷挂载
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx:1.20.2
本地目录挂载
docker run -d --name 容器名 -p 宿主机端口:容器端口 -v 宿主机目录或文件:容器内目录或文件 镜像名

创建Mysql容器并实现本地目录挂载
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

自定义镜像
镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的
过程。
镜像结构
DockFile
Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像。


网络
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"]
部署前端项目

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
命令
docker compose up -d
-d 后台运行