【Docker】docker 笔记,mysql,nginx部署

docker 运行 mysql

docker run创建运行一个容器,-d 让容器在后台运行

--name : 容器的名字

-p :端口映射,将Linux 的端口与 Docker 容器的端口进行映射。Docker 镜像有隔离的性质,有独立的网络环境,外部无法直接连接 Docker 镜像,要 LinuxDocker 进行映射后才可以访问。第一个参数是 Linux 的端口,第二个参数是 Docker 的地址。

-e :容器的环境变量,由容器的发布者设定。

最后一行 mysql 是运行的镜像的名字

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

SQLyog 2058错误

允许 root ,其他连接用密码登录

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123'; FLUSH PRIVILEGES;

进入一个docker 容器

查看所有的docker 容器

docker ps

进入一个docker 目录

其中 mysql 是容器的名字(docker ps 中name 对应),这个位置除了用 name ,还可以用容器的编号 (docker ps 中 CONTAINER ID 对应)

docker exec -it mysql /bin/bash docker exec -it mysql bash

输入 exit 可退出当前环境,退入原生 Linux 环境。

Docker 常见命令

Docker images :查看所有本地的镜像

Docker rmi :删除本地镜像

  • 如果有镜像已经在运行需要先删除,使用 Dokcer ps 查询,使用 Docker rm 删除,之后再用 Docker rmi 删除本地的镜像。

Docker start :开启容器。

Docker stop :停止容器。

Docker ps :查看运行的容器进程。

  • Docker ps -a:停止的容器也会包含在内

Docker logs:容器运行的日志。

Docker exec:进入容器。

  • -it :以可输入终端的方式打开
  • bash :命令行

image-20240330161841148

docker load -i jdk.tar

更多命令,再官网查看。

Reference documentation | Docker Docs

Docker 运行 Nginx

Docker Hub Container Image Library | App Containerization

Docker Hub 中找到 Nginx

docker pull nginx
docker run -d \ --name nginx \ -p 80:80 \ nginx

Docker ps 格式化显示。

docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}" -a

Docker 数据卷 (Volume)

Docker 容器是一个镜像运行的最小环境,也就是说很多文件操作,vim 命令都没有实现。

数据卷就是一个解决此问题的一个技术。

image-20240330164307508

image-20240330165104250

查看 volume 相关命令。

docker volume --help

注意:只有在 docker run 执行时,带上 -v 数据卷:内容的目录 参数才能实现挂载,如果容器已经创造是无法再进行挂载的!

在创建 Nginx 时,挂载 html静态目录

Dockerhtml 目录位置为 /usr/share/nginx/html

删除之前创建的 nginx 容器。

docker rm -f nginx

创建新的 nginx

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

image-20240330170345661

docker volume ls docker volume inspect html

image-20240330170531787

由于使用空间的问题,有些数据会自动挂载在宿主机,形成匿名卷

在删除镜像时,这些存在宿主机的数据,数据卷映射会被删除,但是文件并不会删除,就会形成数据的冗余。

指定本地目录挂载数据卷

-v 本地目录:内容的目录

  • 本地目录必须以 / ,或者 ./ 开头,不加这些会被识别成数据卷,挂载在之前的提到的那个固定位置。

image-20240330175738288

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

自定义镜像

Linux 中部署 java应用的步骤

  1. 准备 Linux 服务器
  2. 按照 JRE 并配置环境
  3. 拷贝 jar
  4. 运行 jar

使用 Dockerfile 来构建自己的镜像

image-20240331130657713

详细文档:Dockerfile reference | Docker Docs

ubuntu 开始制作镜像

# 指定基础镜像 FROM ubuntu:20.04 # 配置环境变量,JDK安装,容器内时区 ENE JAVA_DIR=/usr/local COPY ./jdk8.tar.gz $JAVA_DIR/ COPY ./docker-demo.jar /tmp/app.jar # 安装 jdk RUN cd $JAVA_DIR \ && tar -xf ./jdk8.tar.gz \ && mv ./jdk1.8.0_144 ./java8 # 配置环境变量 ENV JAVA_HOME=$JAVA_DIR/java8 ENV PATH=$PATH:$JAVA_HOME/bin # 入口, java项目启动项 ENTRYPOINT ["java","-jar","/app.js"']

上面做的步骤,变化的只有指定 jar 包,其实 java 环境也有人已经做好了,我们只用做导入 jar 包就行了

jdk 开始做镜像

写成 dockerfile 文件

# 基础镜像 FROM openjdk:11.0-jre-buster # 设定时区 ENV TZ=Asia/Shanghai # 拷贝 jar 包 COPY docker-demo.jar /app.jar # 入口 ENTRYPOINT ["java","-jar","/app.js"]

运行

. :最后的 . 是指定 Dokcerfile 所在的目录在当前的目录下

docker build -t myImage:1.0 .

image-20240331131932873

运行镜像

docker run -d --name dd -p 8080:8080 docker-demo

Docker 网络

把不同的容器放入同一个网络中

image-20240331133214705

docker network name0 # 在创建容器时指定网络 docker run -d --name dd -p 8080:8080 --network name0 docker-demo # 创建容器后,加入网络 docker network connect name0 dd

Ubuntu 防火墙

安装防火墙工具

sudo apt-get install ufw

开启,重启,关闭

sudo ufw enable sudo ufw reload sudo ufw disable

查看状态

sudo ufw status

开放端口,关闭端口

sudo ufw allow 22 sudo ufw delete allow 22

__EOF__

本文作者Hoppz
本文链接https://www.cnblogs.com/hoppz/p/18105617.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Hoppz  阅读(85)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示