Docker学习

Docker容器

容器介绍

​ 容器是对进程的封装,
​ 操作系统层面虚拟化技术
​ 包含程序运行时完整的运行环境
​ 包含程序所需要的全部依赖
​ 每个容器之间相互隔离的
​ 跟宿主主机之间也是隔离的

容器与虚拟机

为什会有Docker原因

​ 传统物理服务器和虚拟操作系统本身会占用一定资源
​ CPU利用率40%,造成性能浪费
​ 容器可以高效利用资源
​ 容器技术比虚拟技术更加轻便快捷

区别

​ 从启动看,虚拟机分钟级,容器秒级
​ 硬件资源:虚拟机独占指定资源CPU、内存、硬盘,而容器为共享资源
​ 硬盘使用:虚拟机GB,容器MB
​ 性能:虚拟机弱于原生几分钟打开,而容器秒级接近原生

Docker介绍

​ 一个开源项目,诞生于2013年,是由Google公司推出Go语言实现
​ 详细
​ 仓库 Registry
​ 集中存放镜像文件的场所,分为共有和私有两种
​ 镜像 Image
​ 构建容器的基础,基于镜像来运行容器
​ 容器 Container
​ 运行程序的场所,容器是基于镜像启动起来的
​ 容器可以运行一个或者多个进程,启动容器,可以登录进去

安装教程

前提

​ 关闭防火墙
​ systemctl status filewalld.service
​ 查看防火墙状态
​ systemctl stop filewalld.serice
​ 关闭防火墙
​ systemctl disable filewalld.service
​ 设置禁止防火请自动启动
​ 关闭selinux
​ sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
​ 开启ip4转发
​ sed -i '$a\ net.ipv4.ip_forward=1' /etc/sysctl.conf
​ systemctl restart network
​ 重启网络配置
​ sysctl net.ipv4.ip_forward
​ 更新yum工具下载yum -utils
​ yum update
​ yum install -y yum-utils
​ 添加国内镜像
​ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装

​ 下载docker
​ yum install docker-ce-20.10.2
​ 启动docker
​ sysemctl start docker
​ 设置docker开机启动
​ system enable docker
​ 加入开机自动启动权限
​ 配置镜像加速
​ 在/etc/docker目录中新建daemon.json文件输入以上内容保存
​ 重启docker: systemctl daemon-reload
​ systemctl restart docker

常用命令

​ 基础docker

systemctl start/stop/restart docker Docker启动/停止/重启
system status docker 查看docker状态
docker info 查看docker概要信息

镜像

docker images 查看本地镜像
docker search 镜像名如MySQL 搜索一个镜像
docker pull 镜像名如MySQL:版本号 拉取镜像
docker push 镜像名:版本号 上传镜像
docker rmi 镜像ID(docker ps -a查看ID) 删除镜像
dorcker rmi $(docker images -q) 删除全部镜像
docker inspect 容器或者镜像id 查看镜像或者容器详细信息

容器

docker run 创建容器

​ 参数介绍
​ -i:运行容器
​ -t:登录容器shell参数
​ --name:创建容器命名
​ -v 目录映射关系,共享目录从宿主修改会映射到其他容器
​ -d:创建一个守护容器,后台运行,+it两个参数,创建后会直接进入容器里
​ -p 端口映射,可以多个接口映射

创建登录命令
docker run -di --name=容器名称 镜像名称:版本 创建守护容器
docker exec -it 容器名称 (容器ID) /bin/bash 登录守护容器
docker run -it --name=容器名称 镜像名称:版本 /bin/bash 创建交互式容器
exit退出当前容器
查看/删除/复制/重新启动容器
docker ps 查看
docker inspect 容器名 查看运行的容器
docker rm -f 容器ID 删除
docker start 容器id

​ 强制删除
​ 不加-f只能删除停止的容器

docker rm -f $(docker ps -a) 全部删除
docker cp 宿主文件 容器名:容器路径 复制

Dockerfile

介绍

​ Dockerfile是由一系列的命令和参数构成的脚本,这些命令和脚本应用于基础镜像并最终创建一个新镜像。
​ Dockerfile的参数
​ From image_name:tag 定义了使用哪一个镜像来启动构建流程
​ MAINTAINER user_name 声明镜像的创建者
​ ENV key value:设置环境变量(可以写多条)
​ RUN command:是Dockerfile的核心部分(可以写多条)
​ ADD source_dir/file:将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
​ COPY source_dir/file:和ADD类似,但是如果有压缩文件,不会解压
​ WORKDIR path_dir:设置工作目录

构建jdk镜像

​ 直接构建
​ docker bulid
​ 指定镜像名字
​ docker build -t jdk8
​ 指定镜像名字和路径
​ docker build -t jdk8 -f /path/Dockerfile .
​ docker build -t jdk8 -f http://www.example.com/Dockerfile .
​ 参数
​ -t 镜像名称
​ -f 指定dockerfile文件位置

快速创建java应用-jar包

​ 编写dockerfile文件
​ #1、基础镜像:FROM指令:基础镜像名:tag
​ FROM java:8
​ #2.维护者:格式:MAINTAINER
​ MAINTAINER nemo
​ #3.镜像的操作指令

​ ADD拷贝一个文件到容器中,格式:ADD

​ ADD hello.jar /usr/src/javaapp.jar
​ #5.配置容器启动后,执行什么命令
​ ENTRYPOINT ["java","-jar","/usr/src/javaapp.jar"]
​ 利用dockerfile和hello.jar进行镜像构建
​ docker build -t javahello
​ 运行容器执行jar文件
​ docker run -it --name=java_helloworld javahello

Volumes

创建数据卷

​ docker volumes create niginx-vol

查看数据卷

​ docker volume ls

查看数据卷的挂载目录

​ docker volumes inspect nginx-vol

使用卷来创容器

​ docker run -di --name=nginx-test -v nginx-vol:/usr/share/nginx/html nginx
​ 宿主机的目录为:/var/lib/docker/volumes/nginx-vol 数据放在data目录下
​ 创建好容器后可以查看宿主机的_data目录和容器内的指定目录文件是否可以同步更新

清理

​ docker stop nginx-test
​ 停止容器
​ docker rm nginx-test
​ 删除容器
​ docker voume rm nginx-vol
​ 删除数据卷

MySQL容器安装部署

拉取MySQL镜像

​ docker pull mysql:5.7

创建容器

​ docker run -di --name=mysql -p3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
​ -p端口映射
​ -e添加环境变量

登录MySQL容器

​ docker exec -it mysql /bin/bash

登录MySQL

​ mysql -uroot -p123456

posted @ 2022-03-30 10:21  枯树老鸭  阅读(46)  评论(0编辑  收藏  举报