Docker
是什么?
解决的问题是什么?
Docker相关概念?
Docker的安装使用?
Docker的相关命令(重点内容)
Dockerfile的使用
DockerCompose的使用
Docker与传统虚拟机的区别?
Docker的概念
Docker是什么,解决的问题是什么?
Docker是一个容器化技术,解决的问题是环境迁移问题。[代码–>开发、测试、运维]
在这里插入图片描述

安装:centos7, docker -v 查看当前docker的版本

Docker的相关架构
镜像(images) : 类似于的安装软件包 / 类
容器(container):类似于安装软件按住成功后的可运行的软件 / 对象
一个镜像可以对应多个容器
远程仓库: Docker官方提供的下载镜像的地址,国外网站,下载速度非常慢。
私服:
自己搭建的私服
第三方搭建的私服(阿里)
Docker镜像加速器
作用:提升Docker镜像的下载速度。
1.
vim /etc/docker/daemon.json
2.
{
“registry-mirrors”: [“https://ivmyd0og.mirror.aliyuncs.com”]
}
3.esc
:wq
4.重启docker

Docker的相关命令
Docker服务相关
centos7的命令
systemctl start|stop|restart|status|enable(设置开机启动) docker

Docker的镜像相关
(1) 搜索一个镜像
docker search images[:version]

(2)下载一个镜像
docker pull images[:version]

(3)查看下载的镜像
docker images

(4)删除镜像
docker rmi images[:version]/imagesId
docker rmi docker images -q

Docker的容器相关
(1)创建容器
交互式 (进入容器)
docker run -it --name=containerName imagesName[:version] /bin/bash

守护式(不进入容器,后台运行)
docker run -id --name=containerName imagesName[:version]

交互式—>守护式
容器中的命令 输入 exit

守护式—>交互式 [container必须是启动状态]
宿主机的命令 输入 docker exec -it containerName /bin/bash

(2) 查看容器
查看当前正在运行的容器
docker ps

查看所有容器
docker ps -a

(3)启动容器
docker start|stop|restart containerName/containerId

(4)查看容器的详细信息
docker inspect containerName/containerId

(5)删除容器
docker rm containerName/containerId
docker rm docker ps -aq

数据卷(-v)
1.数据卷概念
•宿主机的一个目录或文件
2.数据卷作用
•容器数据持久化
•客户端和容器数据交换
•容器间数据交换
3.数据卷容器
•创建一个容器,挂载一个目录,让其他容器继承自该容器( --volume-from )。
•通过简单方式实现数据卷配置

(1)容器中的数据持久化, 保证容器中数据的安全性。
容器被删除,容器出问题导致容器不能使用。

(2)容器之间的数据交互
数据卷的创建
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名:版本号
docker run -it -v /myDataVolume:/dataVolumeContainer centos

数据卷容器创建
docker run -id/t --name=containerName -v 宿主机的目录(文件):容器目录(文件) imagesName[:version] [/bin/bash]

数据卷容器
在这里插入图片描述
Mysql的部署
docker run -id --name=c_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6

问题:所有和Mysql相关的内容都是在c_mysql容器中,如果容器蹦掉,Mysql数据库中的数据就会跟着丢失。
docker run -id
-p 3306:3306
–name=c_mysql
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs
-v $PWD/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456
mysql:5.6

Tomcat的部署
mkdir tomcat
cd tomcat
docker run -id --name=c_tomcat -v $PWD:/usr/local/tomcat/webapps -p 8080:8080 tomcat

问题:项目(war)如何添加到tomcat的webapps下面???
-v
如果大家在访问的时候,注意下,防火墙。
Nginx的部署
docker run -id --name=c_nginx -p 80:80 nginx
docker run -id --name=c_nginx
-p 80:80
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf
-v $PWD/logs:/var/log/nginx
-v $PWD/html:/usr/share/nginx/html
nginx

Redis的部署
docker run -id --name=c_redis -p 6379:6379 redis:5.0

总结部署:
(1)搜索镜像
(2)拉取镜像
(3)根据镜像创建容器
docker run -it/d --name=containerName -v 宿主机目录地址:容器目录地址 -p port1:port2 imagesName[:version] [/bin/bash]

(4)验证
问题
由镜像创建容器。
镜像从哪里来?从远程下载,远程的镜像又怎么来???
镜像的创建问题?
在这里插入图片描述
如何创建一个镜像?
方案一(了解):
镜像(centos:7)—>容器—>安装JDK—>安装tomcat—>镜像(centos/jdk/tomcat)
容器–>镜像 docker commit containerName/containerId imagesNewName[:version]
镜像–>tar docker save -o xxx.tar imagesNewName[:version] /imagesNewId
tar–>拷贝别人[网络]
tar—>镜像 docker load -i xxx.tardocker
docker images
docker run…

方案二:
dockerfile
FROM 基础镜像
MAINTAINER 作者信息 zhangsanzhangssan@itcast.cn
RUN linux的命令 在镜像创建的过程中会执行这些命令
WORKDIR 系统的一个目录 例如: /usr/local/tomcat
ADD/COPY
ADD 将文件拷贝到镜像中,并且在拷贝的过程中会对压缩文件进行解压缩
COPY 将文件拷贝到镜像中,只是负责拷贝,不进行解压缩
EXPOSE 端口 暴露端口
ENV 设置环境变量
CMD linux的命令 是在根据该镜像创建容器的时候,会默认执行命令

案例一

Dockerfile
FROM centos:7
MAINTAINER itheimaitheima@itcast.cn
RUN yum install -y vim // yum install -y vim安装vim命令
WORKDIR /usr
CMD /bin/bash

docker build [-f ./dockerfile的文件名,如果文件名为Dockerfile,可以省略不写] -t imagesName[:version] .
注意注意注意: 最后有一个点,点前面有一个空格

案例二(需求:学会在docker上部署springBoot微服务项目)
SpringBoot项目部署(package–>jar) java -jar springboot.jar
Dockerfile
FROM java:8 //centos镜像,该镜像中包含有jdk1.8的环境
MAINTAINER itheimaitheima@itcast.cn
ADD[COPY] springboot.jar /usr/app.jar //springboot.jar要和当前Dockerfile文件在同一个目录下
WORKDIR /usr
CMD java -jar /usr/app.jar

docker build [-f ./dockerfile的文件名,如果文件名为Dockerfile,可以省略不写] -t imagesName[:version] .
注意注意注意: 最后有一个点,点前面有一个空格

思考一下: FROM java:8更改成centos:7???
不能,原因是centos:7没有jdk的环境
需求:从centos:7开始构建镜像,要使用dockerfile完成最后镜像的构成,镜像创建成容器后,要和上述的效果一直。
Docker compose[了解]
问题:
镜像对应的容器会越来越多。如何批量管理容器的创建、启动、停止和删除等相关操作。
Docker compose:服务编排工具。按照【一定规则】批量管理容器的创建、启动、停止和删除等相关操作。
如何制定规则:
docker-compose.yml

根据配置文件运行
docker-compose up …
Docker的私服搭建
(1)程序员手动搭建
》拉取镜像 registry
docker pull registry
》根据镜像创建容器
docker run -id --name=registry -p 5000:5000 registry[:version]
》添加信任
vim /etc/docker/daemon.json 镜像加速器
{
“insecure-registries”:[“xxx.xxx.xxx.xxx:5000”]
}
》重启docker让配置生效
systemctl restart docker

上传镜像到私服
》打标签
docker tag images[:version] | imagesId docker私服的IP:port/imagesName[:version]
》推送
docker push docker私服的IP:port/imagesName[:version]

从私服下载镜像
docker pull docker私服的IP:port/imagesName[:version]

(2)第三方的私服(阿里)
容器化技术和虚拟机
在这里插入图片描述
相同点: 虚拟化技术。

在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐