宁阳网站seo推广,tomcat加jsp做网站,免费咨询新冠医生,大姚网站建设你熟悉Docker吗#xff1f; 文章目录 你熟悉Docker吗#xff1f;快速入门Docker安装1.卸载旧版2.配置Docker的yum库3.安装Docker4.启动和校验5.配置镜像加速5.1.注册阿里云账号5.2.开通镜像服务5.3.配置镜像加速 部署MySQL镜像和容器命令解读 Docker基础常用命令数据卷数据卷…你熟悉Docker吗 文章目录 你熟悉Docker吗快速入门Docker安装1.卸载旧版2.配置Docker的yum库3.安装Docker4.启动和校验5.配置镜像加速5.1.注册阿里云账号5.2.开通镜像服务5.3.配置镜像加速 部署MySQL镜像和容器命令解读 Docker基础常用命令数据卷数据卷挂载本地目录挂载 自定义镜像镜像结构Dockerfile构建镜像 容器网络 项目部署部署Java部署前端DockerCompose Docker是用来快速构建、运行、管理应用的工具是用来帮助部署项目及项目所需要依赖的组件。
快速入门
Docker安装
安装教程参考Docker官方文档
1.卸载旧版
首先如果系统中已经存在旧的Docker则先卸载
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine2.配置Docker的yum库
首先要安装一个yum工具
yum install -y yum-utils安装成功后出现 “完毕” 字样执行命令配置Docker的yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo3.安装Docker
最后执行命令安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin4.启动和校验
# 启动Docker
systemctl start docker# 停止Docker
systemctl stop docker# 重启
systemctl restart docker# 设置开机自启
systemctl enable docker# 执行docker ps命令如果不报错说明安装启动成功
docker ps5.配置镜像加速
这里以阿里云镜像加速为例。
5.1.注册阿里云账号
首先访问阿里云网站注册一个账号。
5.2.开通镜像服务
在首页的产品中找到阿里云的容器镜像服务 点击后进入控制台 首次可能需要选择立刻开通然后进入控制台。
5.3.配置镜像加速
找到镜像工具下的镜像加速器 页面向下滚动即可找到配置的文档说明 具体命令如下
# 创建目录
mkdir -p /etc/docker# 复制内容注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json -EOF
{registry-mirrors: [https://xxxx.mirror.aliyuncs.com]
}
EOF# 重新加载配置
systemctl daemon-reload# 重启Docker
systemctl restart docker部署MySQL
先停掉虚拟机中的MySQL确保虚拟机已经安装了Docker且网络开通的情况下执行下面的命令即可安装MySQL
docker run -d \--name mysql \-p 3306:3306 \-e TZAsia/Shanghai \-e MYSQL_ROOT_PASSWORD123 \mysql镜像和容器
利用Docker安装应用时Docker会自动搜索并下载应用镜像image)。镜像不仅包含应用本身还包含应用运行所需要的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离环境称为容器container。存储和管理镜像的服务就是镜像仓库DockerHub是目前最大的镜像仓库其中包含各种常见的应用镜像
命令解读
docker run创建并运行一个容器-d是让容器在后台运行--name mysql给容器起个名字必须唯一-p 3306:3306设置端口映射-e KEYVALUE是设置环境变量mysql指定运行的镜像的名字 镜像命名规范一般分两部分组成[repository]:[tag]。repository是镜像名tag是镜像的版本。没有指定tag时默认是latest代表最新版本的镜像
Docker基础
常用命令
Docker最常见的命令就是操作镜像、容器的命令详见官方文档 命令说明docker pull将远端镜像拉取到本地docker images查看所有本地镜像docker rmi删除指定镜像docker build自定义构建镜像docker save将打包镜像保存到本地docker load加载镜像docker push推送本地镜像到远端镜像仓库docker run创建并运行容器docker stop停止容器docker start启动容器docker rm删除容器docker ps查看当前容器运行状态docker logs查看容器日志docker exec进入容器内部
数据卷
数据卷 volume )是一个虚拟目录是容器内目录与宿主机目录之间映射的桥梁。它将宿主机目录映射到容器内目录方便操作容器内文件或者方便迁移容器产生的数据
数据卷挂载
在创建容器时利用-v 数据卷名:容器内目录完成挂载容器创建时如果发现挂载的数据卷不存在时会自动创建
命令说明docker volume create创建数据卷docker volume ls查看所有数据卷docker volume rm删除指定数据卷docker volume inspect查看某个数据卷的详情docker volume prune清除数据卷
本地目录挂载
在执行docker run命令时使用-v 本地目录∶容器内目录可以完成本地目录挂载本地目录必须以 “/” 或 “./ 开头如果直接以名称开头会被识别为数据卷而非本地目录 -v mysql:/var/lib/mysql会被识别为一个数据卷叫 mysql-v ./mysql:/var/lib/mysql会被识别为当前目录下的 mysql目录
自定义镜像
镜像中包含了应用程序所需要的运行环境、函数库、配置、以及应用本身等各种文件。这些文件分层打包而成构建镜像的过程就是把上述文件打包的过程。
镜像结构
入口( Entrypoint )镜像运行入口一般是程序启动的脚本和参数层( Layer )添加安装包、依赖、配置等每次操作都形成新的一层基础镜像( Baselmage )应用依赖的系统函数库、环境、配置、文件等
Dockerfile
Dockerfile就是一个文本文件其中包含一个个的指令(Instruction)用指令来说明要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像。常见指令如下
指令说明示例FROM指定基础镜像FROM centos:6ENV设置环境变量可在后面指令使用ENV key valueCOPY拷贝本地文件到镜像的指定目录COPY ./jrell.tar.gz /tmpRUN执行Linux的shell命令一般是安装过程的命令RUN tar -zxvf /tmp/jrell.tar.gz EXPORTS path/tmp/jrell:$pathEXPOSE指定容器运行时监听的端口是给镜像使用者看的EXPOSE 8080ENTRYPOINT镜像中应用的启动命令容器运行时调用ENTRYPOINT java -jar xx.jar
更多详细语法说明请参考官方文档
举例
基于Ubuntu基础镜像利用Dockerfile描述镜像结构
#指定基础镜像
FROM ubuntu:16.04
#配置环境变量JDK的安装目录、容器内时区
ENV JAVA_DIR/usr/local
#拷贝jdk和java项目的包
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.jar]也可以直接基于jdk为基础镜像省略上述步骤
#指定基础镜像
FROM openjdk:11.0-jre-buster
#拷贝jar包
COPY docker-demo.jar /app.jar
#入口java项目的启动命令
ENTRYPOINT [java, -jar, /app.jar]构建镜像
编写好了Dockerfile可利用下面的命令来构建镜像
docker build -t myImage:1.0 . -t是给镜像起名格式依然是repository:tag的格式不指定tag时默认为latest.是指定Dockerfile所在目录如果就在当前目录则指定为 “.”
格式docker build -t 镜像名 Dockerfile目录
容器网络
默认情况下所有容器都是以bridge方式连接到Docker的一个虚拟网桥上 加入自定义网络的容器才可以通过容器名互相访问Docker的网络操作命令如下
命令说明docker network create创建一个网络docker network ls查看所有网络docker network rm删除指定网络docker network prune清除未使用的网络docker network connect使指定容器连接加入某网络docker network disconnect使指定容器连接离开某网络docker network inspect查看网络详细信息
项目部署
部署Java
Dockerfile
#基础镜像
FROM openjdk:11.0-jre-buster
#设定时区
ENV TZAsia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime echo $TZ /etc/timezone
#拷贝jar包
COPY liner-service.jar /app.jar
#入口
ENTRYPOINT [java,-jar,/app.jar]#构建镜像
docker build -t mall .
#运行镜像
docker run -d --name linmall -p 8080:8080 --network liner mall部署前端
docker run -d \
--name nginx \
-p 18080:18080 \
-p 18081:18081 \
-v /root/ngin/html:/usr/share/nginx/ html \
-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
--rTetwork liner \
nginxDockerCompose
Docker Compose通过一个单独的docker-compose.yml模板文件YAML格式来定义一组相关联的应用容器帮助我们实现多个相互关联的Docker容器的快速部署。 docker compose命令格式如下
docker compose [OPTIONS] [COMMAND]类型参数或指令说明Options-f指定compose文件的路径和名称Options-p指定projcct名称Commandsup创建并启动所有service容器Commandsdown停止并移除所有容器、网络Commandsps列出所有启动的容器Commandslogs查看指定容器的日志Commandsstop停止容器Commandsstart启动容器Commandsrestart重启容器Commandstop查看运行的进程Commandsexec在指定的运行中容器中执行命令