docker的相关概念
docker是一个做系统虚拟化的软件,跟vmware类似,虚拟出来的也是操作系统。我们现在在企业中, 使用docker虚拟出来的系统,大多都是linux系统。
docker镜像image:就是虚拟一个docker容器需要的操作系统、服务的依赖、服务包,打包成的一个文 件。
docker容器 container:就是用docker软件虚拟出来的一个linux操作系统。
docker仓库:就是管理镜像的地方。
- 公有仓库:hub.docker.com,所有人都可以在这里免费下载镜像
- 私有仓库: 管理私有镜像的仓库
docker的操作系统是一个不完整的操作系统。部署项目的操作系统,有很多操作系统的功能是不需要的。把一些不需要的功能,全部从操作系统中移出出去。那么这个操作系统就给变得非常小了。小到这 个操作系统,只有三个部分是必须的:cgroups、namespace、unionFS。所以容器就可以变得非常小。所以,它占用宿主机的资源就很小。所以一台机器就可以参数更多容器出来。
因为docker容器的操作系统,砍掉了很多功能,所以里面可以执行linux命令,但是不是所有的命 令都可以执行。
一个宿主机上,给运行多个docker容器,容器与容器之间默认是相互隔离的。
docker安装
bash
yum install -y yum-utils device-mapper-persistent-data lvm2
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl restart docker # 重启
systemctl enable docker #开机自启动
docker命令使用,需要超管权限。
获取帮助: docker --help
查看到docker子命令的帮助: docker command --help
常用到命令
- docker pull 下载镜像到本地,命令用法: docker pull 镜像名称:tag
- 默认是从docker官方网站上下载镜像: docker pull tomcat:8.0.53-jre7-alpine 下载tomcat为8.0.53 jre为7的tomcat镜像
- docker images 列出所有本地镜像
- docker run 创建容器并运行 docker run -itd --cpus 1 --memory 2G --name tomcat-kyj-1 -p 6666:8080 tomcat:8.0.53-jre7-alpine
- docker create 只是创建一个新容器,创建之后,并没有运行。
- 使用docker run 命令,常用选项参数:
- -i
- -t
- -d
- --name 自定义容器的名称,这个参数可以不带,不带就随机生成一个容器名称
- -p 发布容器的端口个宿主机。 -p 宿主机的端口:容器中服务的端口
- -v 卷积 把宿主机的一个路径映射到容器中一个路径。 当容器被删除时,这个宿主机的 路径下的内容不会删除。
- -e 设置环境变量 docker run 命令,在创建容器时,如果使用的镜像,本地没有就会去自动下载
- docker logs 容器名称或容器id
- docker ps 查看容器状态,默认时只显示正在运行的容器,跟上-a参数,显示所有的容器'容器id'和'容器的名称'
- docker stats 容器名称或容器id,可以来查看容器的运行状态
- docker inspect 容器名称或容器id,用来查看容器的相信信息
- docker network 容器网络 docker network ps显示所有的容器网络
- docker cp 拷贝
- docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- 从容器中拷贝到本地路径
- docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH 从本地拷贝到容器中某个路径
- docker exec 在一个运行中的容器中执行命令
- docker exec -it 容器名称或容器id /bin/bash 进入容器内部,使用bash命令一般情况 使用bash,也可以使用sh
- exit 退出容器
创建mysql数据库容器
docker run -itd --name mysql-1 -p 5566:3306 -e MYSQL_ROOT_PASSWORD=123456780
mysql:5.7.41
创建好了数据库容器之后,创建lemon_erp库,对库进行初始化操作
用docker方式,部署lemon-erp项目
bash
docker pull openjdk:8
docker run -itd --name erp-1 -p 8882:8082 openjdk:8
docker cp lemon_erp.jar erp-1:/opt/lemon_erp.jar
docker cp config/ erp-1:/opt/config/
# 修改 config文件夹中 application-dev.yml文件中数据库的配置
docker cp application-dev.yml erp-1:/opt/config/application-dev.yml
docker exec -it erp-1 /bin/bash
cd /opt
nohup java -jar lemon_erp.jar &
exit
监控docker
grafana + Prometheus + docker监控
cadvisor
bash
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --
volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --
volume=/dev/disk/:/dev/disk:ro --publish=8880:8080 --detach=true --name=cadvisor
--privileged --device=/dev/kmsg google/cadvisor
修复prometheus.yml
启动Prometheus和grafana
引入模板 193
如果公司用k8s,它的配置文件yml文件,与dockerfile类似。
docker 与 k8s
docker是一个用于管理和创建容器的软件
k8s,是容器的集成管理工具,这个工具集成了docker的能力。
以前,k8s创建容器,就是用docker
所以掌握了 docker知识k8s的使用就变得简单了。