建设企业网站企业网上银行,淮南品牌网站建设电话,开发网站公司如何运营,广告联盟Dcoker学习笔记一 一、 初识Docker1.1 简介1.2 虚拟机和docker的区别1.3 Docker架构1.4 安装Docker#xff08;Linux#xff09; 二、 Dcoker基本操作2.1 镜像操作2.2 容器操作练习 2.3 数据卷volume#xff08;容器数据管理#xff09;简介数据卷语法数据卷挂载 2.4 自定义… Dcoker学习笔记一 一、 初识Docker1.1 简介1.2 虚拟机和docker的区别1.3 Docker架构1.4 安装DockerLinux 二、 Dcoker基本操作2.1 镜像操作2.2 容器操作练习 2.3 数据卷volume容器数据管理简介数据卷语法数据卷挂载 2.4 自定义镜像2.4.1 镜像结构2.4.2 Dockerfile 2.4 DockerCompose编排简介 待续未完 一、 初识Docker
1.1 简介
Docker是一个快速交付应用运行应用的技术
Docker可以解决大型项目依赖关系复杂不同组件依赖的兼容性问题
docker允许开发中将应用、依赖、函数库、配置一起打包形成可移植的镜像docker应用运行在容器中使用沙箱机制相互隔离
Docker如何解决开发、测试、生产环境有差异的问题
docker镜像中包含完整运行环境包括系统函数库仅依赖系统的Linux内核因此可以在任意Linux操作系统上运行 1.2 虚拟机和docker的区别 docker和虚拟机的差异
docker是一个系统进程;虚拟机是在操作系统中的操作系统docker体积小、启动速度快、性能好、虚拟机体积大、启动速度慢、性能一般
1.3 Docker架构
Docker架构主要有两个内容镜像和容器
镜像Image:docker进应用程序及其所需依赖、函数库、环境、配置等文件打包在一起称为镜像。
容器Container镜像中的应用程序运行后形成的进程就是容器只是docker会给容器做隔离对外不可见
怎么进行镜像共享可以通过Docker Rrgistry进行镜像共享
DockerHubdocker镜像托管平台。这样的平台称为Docker Rrgistry 1.4 安装DockerLinux
首先需要大家虚拟机联网安装yum工具
输入如下命令
yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken然后更新本地镜像源
# 设置docker镜像源
yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i s/download.docker.com/mirrors.aliyun.com\/docker-ce/g /etc/yum.repos.d/docker-ce.repoyum makecache fast然后输入命令进行安装
yum install -y docker-ce等待安装完成输入
docker-v出现插图这表明安装成功 启动docker先关闭防火墙
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld启动、停止、重启docker命令
systemctl start docker # 启动docker服务systemctl stop docker # 停止docker服务systemctl restart docker # 重启docker服务二、 Dcoker基本操作
2.1 镜像操作
镜像名称规范:
镜像名称一般分成两部分组成【repository】:【tag】
操作命令
案例1从dockerHub中拉取一个Nginx进行并查看
1.首先去镜像仓库搜索Nginx镜像比如 DockerHub
2.复制命令 docker pull nginx #默认拉取最新版本 拉取完成后查看镜像版本
docker images案例2利用docker save将nginx镜像导出磁盘然后再通过load加载回来
步骤一利用docker xx --help命令查看docker save,将其打包 从上面我们可以看到假如把nginx镜像打包成一个压缩文件的命令为: docker save -o nginx.tar nginx:latest
接下来我们查看是否打包成功
可以看到已经成功了 接下来我们把原来的镜像给删除掉 docker rmi nginx:latest 然后我们进行load --help命令查看load 操作命令并加载出来 可以看出命令为:
docker load -i nginx.tar
接下来查看是否加载完成
可以看出已经成功被加载完成了
2.2 容器操作
操作容器的命令 扩展
docker logs -f [容器名称] #持续日志输出 案例1创建运行一个nginx容器
步骤一去docker hub 查看nginx的容器运行命令 命令 输入docker run --name mynginx -p 80:80 -d nginx 从上面可以看出我们已经让该镜像成功运行起来了
接着我们访问宿主机的IP和端口 访问成功
案例2进入nginx容器修改HTML文件内容添加“chushay was best”
步骤一进入容器。进入到刚才创建的nginx容器命令
docker exec -it mynginx bash
然后我们去dockerhub找到nginx的路径 步骤二进入nginx的HTML所在目录 /usr/share/nginx/html
cd /usr/share/nginx/html
步骤三修改index.html的内容
sed -i s#Welcome to nginx#chushay was best!#g index.html
sed -i s#head#headmeta charsetutf-8#g index.html
修改之后我们通过浏览器验证一下 我们可以看到已经修改成功
总结
练习
创建并运行一个Redis容器并支持数据持久化
步骤一到DdockerHub搜索Redis镜像
步骤二查看Redis镜像文档中的帮助信息
拉取镜像 docker pull redis
步骤三利用docker run 命令运行一个Redis容器 #docker run --name some-redis -d redis redis-server --appendonly yes
docker run --name myredis -p 6379:6379 -d redis redis-server --appendonly yes从上图中我们可以看出Redis镜像已经启动称为容器接下来我们通过Redis连接工具来测试一下 我们可以看到连接成功
接下来进入容器 docker exec -it myredis bash
进入Redis客户端 redis-cli
注 可以直接进入到redis-cli docker exec -it myredis redis-cli
添加一个key
set num 666
接下来我们查看Redis被成功的添加了
2.3 数据卷volume容器数据管理 简介 数据卷语法 实践小操
1.创建一个名为html的数据卷
docker volume create html
2.查看创建的数据卷: docker volume ls 3.查看创建的数据卷路径 docker volume inspect html
4.删除数据卷
删除未使用的卷 docker volume prune
删除指定的卷 docker volume rm [卷名]
总结
数据卷挂载 案例1 创建一个nginx容器修改容器内的html目录内的index.html内容 创建容器并挂载数据卷 docker run --name mynginx -p 80:80 -v html:/usr/share/nginx/html -d nginx
查看数据卷路径 进入该路径并查看数据卷
修改html内容
vi index.html
总结 案例2 创建并运行一个MySQL容器将宿主机目录直接挂载到容器 步骤一拉取MySQL镜像
docker pull mysql
查看镜像 步骤二创建目录
mkdir -p mysql/data
mkdir -p mysql/conf
步骤三把MySQL配置文件传到mysql/conf目录下 步骤四去DockerHub查阅资料创建并运行MySQL容器要求 ①挂载/tmp/mysql/data到mysql容器内数据存储目录 ②挂载/tmp/mysql/conf/hmy.cnf到mysql容器配置文件 ③设置mysql密码 docker run --name mysql -e MYSQL_ROOT_PASSWORD654321 -p 3306:3306 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf -v /tmp/mysql/data:/var/lib/mysql -d mysqldocker run \ #启动
--name mysql \ #容器名称
-e MYSQL_ROOT_PASSWORD654321 \ #mysql环境配置
-p 3306:3306 \ #mysql端口配置
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \ #挂载/tmp/mysql/conf/hmy.cnf到mysql容器配置文件
-v /tmp/mysql/data:/var/lib/mysql \#挂载/tmp/mysql/data到mysql容器内数据存储目录
-d \ #允许后台运行
mysql #镜像名称 启动成功之后我们通过连接mysql数据库查看 2.4 自定义镜像
2.4.1 镜像结构
镜像概念镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成的整体。
以mysql镜像为例解析镜像结构
总结
镜像是分层结构每一层称为一个Layer
BaseImage层包含基本的系统函数库、环境变量、文件系统Entrypoint:入口是镜像中应用启动的命令其他在baseImage基础上添加依赖、安装程序、完成整个应用的安装和配置
2.4.2 Dockerfile
Dcokerfile就是一个文本文件其中包含一个个指令用来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer 更多指令语法
案例1基于Ubuntu镜像构建一个新镜像运行一个Java项目
步骤一新建一个空文件夹docker-demo 步骤二拷贝课件资料中的docker-demo.jar文件到docker-demo这个目录 步骤三拷贝课前资料中的jdk8.tar.gz文件到docker-demo这个目录 步骤四拷贝课前资料提供的Dockerfile到docker-demo这个目录 步骤五进入docker-demo 步骤六运行命令 docker build -t javaweb:1.0v .
步骤一新建一个空文件夹docker-demo 步骤二拷贝课件资料中的docker-demo.jar文件到docker-demo这个目
步骤三拷贝课前资料中的jdk8.tar.gz文件到docker-demo这个目录 步骤四拷贝课前资料提供的Dockerfile到docker-demo这个目录 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.0v . 启动镜像
docker run --name javaweb -p 8090:8090 -d javaweb:1.0v访问成功
案例2基于Java:8-alpine镜像将一个Java项目构建为镜像
实现思路如下
① 新建一个空的目录然后在目录中新建一个文件命名为Dockerfile②拷贝课前资料提供的docker-demo.jar到这个目录中③编写Dockerfile文件 a)基于Java:8-alpine作为基础镜像b)将app.jar拷贝到镜像中c)暴露端口d)编写入口ENTRYPOINT ④使用docker build命令构建镜像⑤使用docker run创建容器并运行
① 新建一个空的目录然后在目录中新建一个文件命名为Dockerfile 还是使用原来的文件目录
②拷贝课前资料提供的docker-demo.jar到这个目录中 还是使用原来的文件目录
③编写Dockerfile文件
# 指定基础镜像
FROM java:8-alpine
# 配置环境变量JDK的安装目录
ENV JAVA_DIR/usr/local# 拷贝java项目的包
COPY ./docker-demo.jar /tmp/app.jar# 暴露端口
EXPOSE 8090
# 入口java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar④使用docker build命令构建镜像
docker build -t javaweb:2.0v .
⑤使用docker run创建容器并运行
docker run --name web -p 8090:8090 -d javaweb:2.0v
访问
总结
2.4 DockerCompose编排
简介 Docker Compose是Docker官方的开源项目负责实现对Docker容器集群的快速编排。Compose 是 Docker 公司推出的一个工具软件可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml写好多个容器之间的调用关系。然后只要一个命令就能同时启动/关闭这些容器 注引用CSDN博主「山河亦问安」原文链接点击查看原文这也是一篇关于DockerCompose不错的文章值得推荐 Compose文件是一个文本文件在文件中通过定义集群中的每个容器如何运行
docker-compose格式
version: 3.8 //compose版本service:mysql: //容器名称images: mysql:5.7.25 //镜像名称environment: //环境名称MYSQL_ROOT_PASSWORD: 654321volumes: //数据卷- /tmp/mysql/data:/var/lib/mysql- /tpm/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cofweb:build: . //从当前目录构建镜像ports: //暴露端口- 8090: 8090 CentOS7安装DockerCompose:
Linux下需要通过命令下载
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-uname -s-uname -m /usr/local/bin/docker-compose出现下图表示安装成功
修改文件权限
# 修改权限
chmod x /usr/local/bin/docker-compose查看docker-compose版本
docker-compose --version安装成功
待续未完