docker

91 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

一、docker介绍

背景:为了解决软件跨环境迁移问题诞生--》作为整体打包至容器中部署
诞生时间:2013
版本:社区版(CE)和企业版(EE)

二、docker架构

image-20200916091437096.png

客户端:接收并发送命令至服务端
服务端:
    容器:沙箱机制,相互隔离,互不影响
    镜像:类比于安装包,需要运行在容器中提供服务
仓库:
    官方仓库:docker hub
    三方仓库:镜像加速器
    本地仓库:

三、docker使用

3.1 打开虚拟机
账号/密码: root/root
#查看ip
ifconfig
找到------>ens33 inet对应ip连接即可
3.2 docker安装(已经安装好了,不需要你再操作)
#docker版本查看命令
docker -v
#结果
Docker version 19.03.5, build 633a0ea
3.3 镜像加速器配置(可以不操作,使用讲师配置好的)
  • 中科大镜像加速器
  • 网易镜像加速器
  • 腾讯镜像加速器
  • 阿里云镜像加速器(需要注册阿里云账号)
  • ............
#用于查看是否有使用自己的镜像加速器地址
docker info
3.4 docker三大命令(重点)
a. 守护进程操作命令
#启动命令
systemctl start docker
#开机自启命令
systemctl enable docker
#停止命令
systemctl stop docker
#重启命令
systemctl restart docker
#查看状态
systemctl status docker
b.镜像操作命令
#查找镜像
docker search 镜像名称(mysql/redis/nginx/tomcat) #默认是最新版本 
#指定版本查询
docker search 镜像名称:版本 (docker search mysql:5.7)
#下载镜像
docker pull 镜像名称 #默认是最新版本 
#删除镜像
docker rmi  镜像名称 #默认是最新版本 
#查看本地镜像
docker images
#查看本地仓库所有镜像id
docker images -q
c.容器操作命令
#沙箱机制 相互隔离 互不影响
#1.交互式容器 
   #特点:1.容器创建后直接进入内部;2.退出容器后容器自动停止运行。
    docker run -it --name=c1 centos:7 /bin/bash
    
    exit #退出容器
#2.守护式容器
    #特点:1.容器创建后不会直接进入内部;2.退出容器后容器正常运行。
    docker run -id --name=c2 centos:7 
#3.查看正在运行着的容器
docker ps
#4.查看所有容器
docker ps -a
#5.进入容器的命令
docker exec -it 容器名称 /bin/bash
#6.启动容器 
 #交互式容器经过start命令后会自动转换为守护式容器
docker start 容器名称/容器id
#7.停止容器
docker stop 容器名称/容器id
#8.删除容器
docker rm 容器名称/容器id

四、数据卷(了解)

1.数据卷作用

image-20200916113516684.png

  • 容器数据的持久化
  • 解决与外部机器的数据同步问题
  • 解决容器之间的数据共享问题
2. 命令
docker run -id --name=c1 -v /虚拟机绝对路径:/容器内部绝对路径  镜像名称
​
#注意:
    1.如果目录不存在会自动创建
    2.必须使用绝对路径
    3.冒号必须是英文的冒号,并且冒号前是虚拟机的路径,冒号后是容器的路径

五、docker应用部署(次重点)

1.mysql部署
#1.部署
docker run -id --name=c_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
#注意:
    1·必须做端口的映射,否则外部访问不到
    2.必须指定root账号的密码,否则创建失败
2.tomcat部署
#1.部署
docker run -id --name=c_tomcat -p 8080:8080 -v /root/tomcat:/usr/local/tomcat/webapps tomcat
#2.注意事项
    a.必须做数据的挂载
    b.必须在挂载完毕后再次新建目录(test)然后再创建index.html
    c.访问: http://ip:8080/test/index.html
3.nginx部署
#1.部署
docker run -id --name=c_nginx -p 80:80 -v /root/nginx:/usr/share/nginx/html nginx
#2.注意事项:
    a.必须做数据的挂载
    b.挂载位置必须是/usr/share/nginx/html (nginx默认部署页面的位置)
    c.访问:  http://ip
4.redis部署
#1.部署
docker run -id --name=c_redis -p 6379:6379 redis

六、docker镜像本质

概念:

docker镜像的本质其实就是一个文件分层管理系统。

思考:

为什么tomcat变大了?centos7变小了?

image-20200916151046172.png

原因:

1.因为tomcat不仅仅是一个tomcat,本质上是一个微型的虚拟机,并且此虚拟机中已经自带了jdk,所以tomcat变大了。

2.centos7变小是因为复用了bootfs。

七、dockerfile的使用(看一下就行了)

1. 使用dockerfile打包springboot项目
#boot启动命令
java -jar xxx.jar
#编写dockerfile
FROM java:8
MAINTAINER itheima
ADD spring-boot-docker-demo.jar app.jar
CMD java -jar app.jar
#构建docker镜像前记得上传jar包
docker build -f dockerfile文件名称 -t 镜像名称:1.0 .
#部署
docker run -id --name=c_springboot -p 8081:8080 31springboot:1.0
#访问
http://ip:8081/docker

八、容器与虚拟机的区别

image-20200916152636732.png

容器比虚拟机性价比高