镜像和容器:
镜像仓库:
存储和管理镜像的平台,镜像仓库中有非常多常用软件的镜像,Docker官方维护了一个公共仓库:Docker Hub
部署MySQL:
docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \mysql
端口映射即将服务器端口映射到容器端口,例如访问服务器的3306端口,则服务器会调用MySQL容器。
镜像名称一般分两部分:镜像名:版本,没有指定版本时默认为最新版本。
常用命令:
命令别名:
①进入root下的.bashrc文件:
vi ~/.bashrc
如下:
②添加命令别名:
我已经在其中添加了一行内容
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
即代表dps命令可以代表后面单引号内的命令,具有同样功能,即更加简洁的展示容器状态信息。
③使文件生效:
source ~/.bashrc
接下来就可以直接使用dps命令了
数据卷挂载:
完成绑定映射的文件,修改其中一个另一个也会自行修改。这样可以更好的利用宿主机的更高级的编辑器,方便我们操作容器内文件,或者方便迁移容器产生的数据。
常用命令:
映射nginx的静态文件html:
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx
这里需要先删除原有的nginx容器,重新run一个nginx容器。
本地目录挂载:
练习:
代码:
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
注意需要先删除原MySQL容器
自定义镜像:
镜像结构:
DockerFile:
构建Java镜像:
Dockerfile:
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
网络:
自定义网络:
假如自定义网络的容器才可以通过容器名互相访问。
常用命令:
也可以在容器创建时将它放入某个网络:
docker run -d --name your-images-name -p 80:80 --network your-net-name images-name
DockerCompose:
MySQL的两种部署方法:
使用DockerCompose部署:
一次性部署MySQL、前端和后端
docker-compose.yml:
version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3306:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123volumes:- "./mysql/conf:/etc/mysql/conf.d"- "./mysql/data:/var/lib/mysql"- "./mysql/init:/docker-entrypoint-initdb.d"networks:- hm-nethmall:build: context: .dockerfile: Dockerfilecontainer_name: hmallports:- "8080:8080"networks:- hm-netdepends_on:- mysqlnginx:image: nginxcontainer_name: nginxports:- "18080:18080"- "18081:18081"volumes:- "./nginx/nginx.conf:/etc/nginx/nginx.conf"- "./nginx/html:/usr/share/nginx/html"depends_on:- hmallnetworks:- hm-net
networks:hm-net:name: hmall
(参考docker run写)
将上述文件与mysql、nginx、后端dockerfile与jar包放到同一目录下
再执行下面的语句:
docker compose up -d
即可成功部署。