太原网站建设招聘,做谷歌推广对网站的要求,商城网站 运营,word网站超链接怎么做一、初始Docker
1.什么是Docker
问题
①大型项目组件复杂#xff0c;运行环境复杂#xff0c;部署时依赖复杂#xff0c;出现兼容性问题。
②开发#xff0c;测试#xff0c;生产环境有差异。不同的环境操作系统不同
解决
①Docket将应用、依赖、函数库、配置一起打…一、初始Docker
1.什么是Docker
问题
①大型项目组件复杂运行环境复杂部署时依赖复杂出现兼容性问题。
②开发测试生产环境有差异。不同的环境操作系统不同
解决
①Docket将应用、依赖、函数库、配置一起打包形成可移植镜像。每个应用放在隔离容器运行避免相互干扰。
②Docker镜像包含完整的运行环境包括系统库函数仅依赖系统的Linux内核。可以在任意的linux系统运行。 2.Docker架构
镜像
将应用程序及其依赖、环境、配置打包在一起
容器
镜像运行起来的就是容器一个镜像可以运行多个容器
Docker架构
服务端接收命令或远程请求操作镜像或容器
客户端发送操作或者请求到Docker的服务端
DockerHub
一个镜像托管的服务器
3.镜像操作命令 案例从DockerHub中拉取一个nginx镜像并查看
systemctl start docker # 启动docker服务
①去镜像仓库搜索nginx镜像 ②在linux通过命令拉取到本地 docker pull nginx ③查看本地的镜像docker images 案例利用docker save将nginx镜像导出磁盘然后再通过load加载回来
①把镜像包导出tar
docker save -o nginx.tar nginx:latest ②把导出的tar加载到本地镜像
docker load -i nignx.tar 镜像操作有哪些
docker images 查看镜像docker rmi 删除镜像docker pull 拉取镜像到本地docker push 把镜像推到仓库docker save 把镜像打包成tardocker load 把tar文件加载到本地镜像
4.容器相关命令 ①docker run 创建容器
②docker pause 暂停容器
③docker unpause 暂停到运行容器
④docker stop 停止容器
⑤docker start 停止到运行容器
⑥docker ps 查看运行的容器的状态
⑥docker rm 删除指定容器
⑦docker logs 查看容器运行日志
⑧docker exec 进入容器执行其他命令
5.Docker基本操作-容器
案例一:创建并运行一个Nginx容器
命令: docker run --name mn -p 80:80 -d nginx
①docker run创建并运行一个容器
②--name给容器起了名字是mn
③-p虚拟机的端口与容器端口映射 虚拟机端口:容器端口
④-d 后台运行
⑤nginx镜像名称
测试
查看运行容器的状态docker ps ①访问虚拟机的ip地址 ②持续查看容器日志
docker logs mn -f 总结 案例二: 进入Nginx容器修改HTML文件内容添加“Hello world”
①进入容器docker exec -it mn bash
docker exec 进入容器内部执行命令
-it与容器交互
mn进入容器的名称
bash进入容器后执行的命令bash是一个linux终端交互命令
②进入nginx的HTML所在目录 /usr/share/nginx/html
cd /usr/share/nginx/html
③修改index.html的内容
sed -i s#Welcome to nginx# Hello world #g index.html
sed -i s#head#headmeta charsetutf-8#g index.html
总结 练习:进入redis容器并执行redis-cli客户端命令存入num666
①创建并允许一个Redis容器
docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes
②进入redis容器
docker exec -it redis bash
③执行redis-cli客户端命令
redis-cli
④设置数据 set num 666
⑤获取数据get num 二、数据卷Volume
1.数据卷简介
数据卷解决容器与数据耦合问题。将容器与数据分离解耦合方便操作容器内数据保证数据安全 数据卷Volume是一个虚拟目录指向虚拟机系统的某个目录(/var/lib/docker/volumes)
容器目录与虚拟机目录相关联容器与虚拟机修改同时更新。 2.数据卷操作
docker volume[写命令]
①create 创建一个volume
②inspect 显示一个或多个volume信息
③ls 列出所有的volume
④prune 删除未使用的volume
⑤rm 删除一个或多个指定的volume
3.案例:创建一个数据卷并查看数据卷在宿主机的目录位置
①创建数据卷html
docker volume create html
②查看所有的数据卷
docker volume ls
③查看数据卷的详细信息
docker volume inspect ④删除指定的html数据卷,-f是强制删除
docker volume rm -f html
4.挂载数据卷-V(volume)
创建容器时通过-v参数来挂载一个数据卷到某个容器目录。 案例创建一个nginx容器修改容器内的html目录内的index.html内容
①创建容器并挂载数据卷到容器内的HTML目录
docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx
-v 数据卷:容器目录的路径
如果容器运行时volume的html不存在会自动被创建出来
②进入html数据卷所在位置并修改HTML内容
# 查看html数据卷的位置
docker volume inspect html
# 进入该目录
cd /var/lib/docker/volumes/html/_data # 修改文件
vi index.html
三、Dockerfile自定义镜像
概念:镜像将应用程序以及系统函数库环境配置依赖打包而成。
结构以mysql镜像为例子 ①基础镜像mysql应用依赖的系统函数库环境配置文件。
②层在基础镜像基础上添加安装包依赖配置每次操作后都形成一个层 。镜像是分层的
③入口启动的脚本
2.Dockerfile语法
概念Dockerfile是一个文本文件包含一个个指令用指令说明执行的操作来构建镜像。每一个指令形成一层Layer 3.案例基于Ubuntu镜像构建一个新镜像运行一个java项目
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# 暴露端口
EXPOSE 8090
# 入口java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar步骤
①新建一个空文件夹docker-demo把资料复制在这个文件夹 ②运行命令
docker build -t javaweb:1.0 .
③查看镜像 ④启动此镜像:
docker run --name web -p 8090:8090 -d javaweb:1.0 ⑤访问
http://192.168.137.129:8090/hello/count 四、DockerCompose
1.什么是DockerCompose
①DockerCompose基于Compose文件快速部署分布式应用无需手动一个个创建和运行容器
②Compose是一个文本文件通过指令定义集群中每个容器怎样运行 2.案例将cloud-demo微服务集群利用DockerCompose部署
①查看课前资料提供的cloud-demo文件夹里面已经编写好了docker-compose文件 ② 修改自己的cloud-demo项目将数据库、nacos地址都命名为docker-compose中的服务名
③使用maven打包工具将项目中的每个微服务都打包为app.jar
④将打包好的app.jar拷贝到cloud-demo中的每一个对应的子目录中
⑤将cloud-demo上传至虚拟机利用 docker-compose up -d 来部署
http://192.168.137.129:10010/user/2?authorizationadmin
⑥停止是docker-compose down 五、Docker镜像仓库
1.搭建私有镜像仓库
①配置Docker信任地址
# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容
insecure-registries:[http://192.168.150.101:8080]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker②创建Compose
version: 3.0
services:registry:image: registryvolumes:- ./registry-data:/var/lib/registryui:image: joxit/docker-registry-ui:staticports:- 8080:80environment:- REGISTRY_TITLE私有仓库- REGISTRY_URLhttp://registry:5000depends_on:- registry③部署
docker-compose up -d
2.向镜像仓库推送镜像
①推送镜像到私有镜像服务必须先tag
docker tag nginx:latest 192.168.137.129:8080/nginx:1.0
②上传
docker push 192.168.137.129:8080/nginx:1.0 3.从镜像仓库拉取镜像
docker pull 192.168.137.129:8080/nginx:1.0
4.总结