docker
docker是一个应用容器引擎,基于 Go 语言,将应用程序装箱打包成独立的容器,确保应用程序在不同的环境下都能运行。Docker的主要目标是‘build ,ship and run any app,anywhere’,也就是说通过对应用程序组件的封装,分发,部署,运行等生命周期的管理。容器之间不会有交互接口,并且开销极低。镜像:类似于安装包,有运行的文件和配置信息文件。容器:镜像运行的实例仓库:
一、概述
1.什么是docker
docker是一个应用容器引擎,基于 Go 语言,将应用程序装箱打包成独立的容器,确保应用程序在不同的环境下都能运行。Docker的主要目标是‘build ,ship and run any app,anywhere’,也就是说通过对应用程序组件的封装,分发,部署,运行等生命周期的管理。容器之间不会有交互接口,并且开销极低。
2.docker有什么优势
有时候开发过程中没问题,运维时换个环境就出错了。
docker直接将该springboot项目制作成一个镜像文件,直接部署linux即可,减少依赖冲突概率。
Docker最终解决了运行环境配置中的问题。----镜像文件底层封装好了
二、名词介绍
镜像:类似于安装包,有运行的文件和配置信息文件。
容器:镜像运行的实例
仓库:存放镜像的地方
容器和虚拟机的区别:
虚拟机:虚拟硬件。在虚拟机上我们安装操作系统linux镜像。然后在操作系统上安装软件。
docker:操作系统层面的虚拟化。可以看做容器的管理器,依赖和应用都被打包在镜像中了,实际上docker中的镜像大小肯定会大于直接安装时候的大小。因为镜像中打包的还有他的依赖。容器和容器之间是隔离的。
特性 | 容器 | 虚拟机 |
启动速度 | 秒级 | 分钟级别 |
硬盘使用 | 一般为MB | 一般GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
隔离性 | 完全隔离 | 完全隔离 |
三、安装
查看安装成功的三种方法:查看版本号、查看进程、查看服务(守护进程)
- 1.通过 uname -r 命令查看你当前的内核版本
uname -r |
2.使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum -y updat |
该过程大概需要维持10分钟左右 |
3.卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine |
4.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2 |
5.设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
6.可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r |
7.安装docker
sudo yum install -y docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1 |
8.启动并加入开机启动
systemctl start docker systemctl enable docker |
9.验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version |
四、原理
1.下载镜像原理
2.阿里云加速镜像
每个人的镜像地址都是不一样的。
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
依次执行给的代码。
五、常用命令
获取docker版本:
docker -version
查看镜像:
docker images
查看镜像(只显示镜像id)
docker images -q
下载镜像、删除镜像:
docker pull nginx
docker images
docker rmi nginx
查看容器
docker ps
查看容器的详情
docker inspect 428175106d92
运行容器
docker run -i(保持容器一直运行)-t(给容器一个伪终端)-d(后台运行,不直接进入容器) --name=tomcat9.2(给启动容器起名字)-p 8080:8080(宿主:docker容器)tomcat:9.2(启动的容器)
docker run -itd --name=test_tomcat -p 8081:8080 tomcat
查看运行着的和停止的大容器:
docker ps -a
docker stop 428175106d92
删除容器:
docker rm b4a5982f1adf
启动容器并进入内部bash
docker start 428175106d92
docker exec -it 428175106d92 bash
我们可以看到容器也类似于一个小的linux系统,我们在这个上面运行镜像。
由容器创建镜像
docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
docker commit -m="自创镜像" -a="hxq" fcbeb39f6b4c "myimage666":v1
六、docker数据卷
数据卷使得本机的文件和容器中环境的文件形成映射,当本机指定的文件(数据卷)修改时,容器中的文件也修改了。这样可以不用进入容器修改配置等。比如nginx的配置文件、tomcat的静态资源文件等等,数据卷很好用。
使用-v指定数据卷
docker run -p 81:80 -itd -v /usr/software/demo/nginxdemo/html/:/usr/share/nginx/html/ -v /usr/software/demo/nginxdemo/nginx.conf:/etc/nginx/conf.d/default.conf nginx
七、dockerfile创建自己的镜像
dockerfile文件
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER www.boyatop.com
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为boyatop.jar
ADD boyatop-thymeleaf-1.0-SNAPSHOT.jar boyatop.jar
# 运行jar包
RUN bash -c 'touch /boyatop.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/boyatop.jar"]
#暴露8080端口
EXPOSE 8080
Dockerfile 指令 | 说明 |
---|---|
FROM | 指定基础镜像,用于后续的指令构建。 |
MAINTAINER | 指定Dockerfile的作者/维护者。(已弃用,推荐使用LABEL指令) |
LABEL | 添加镜像的元数据,使用键值对的形式。 |
RUN | 在构建过程中在镜像中执行命令。 |
CMD | 指定容器创建时的默认命令。(可以被覆盖) |
ENTRYPOINT | 设置容器创建时的主要命令。(不可被覆盖) |
EXPOSE | 声明容器运行时监听的特定网络端口。 |
ENV | 在容器内部设置环境变量。 |
ADD | 将文件、目录或远程URL复制到镜像中。 |
COPY | 将文件或目录复制到镜像中。 |
VOLUME | 为容器创建挂载点或声明卷。 |
WORKDIR | 设置后续指令的工作目录。 |
USER | 指定后续指令的用户上下文。 |
ARG | 定义在构建过程中传递给构建器的变量,可使用 "docker build" 命令设置。 |
ONBUILD | 当该镜像被用作另一个构建过程的基础时,添加触发器。 |
STOPSIGNAL | 设置发送给容器以退出的系统调用信号。 |
HEALTHCHECK | 定义周期性检查容器健康状态的命令。 |
SHELL | 覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令。 |
创建镜像
docker build -f dockerfile -t 镜像名:版本号 .
七、dockercompose编排技术
使用编排技术极大简化部署
下载
链接:https://pan.baidu.com/s/12_ny6_UisdVazbZZClZmCg
提取码:0505
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose -v
Compose 使用的三个步骤:
使用 Dockerfile 定义应用程序的环境。
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行 docker-compose up 命令来启动并运行整个应用程序。
dockercompose.yml模版
version: '3.0'
services:
tomcat80: ##服务名称
#container_name: tomcat8080 指定容器名称
image: tomcat:8 #镜像文件名称 run images
ports: ###端口号的映射 -p
- 8080:8080
volumes: ## 数据源 宿主机与容器数据共享 -v
- /usr/tomcat/webapps:/usr/local/tomcat/webapps
networks: ###定义网络的桥
- boyatop
tomcat81: ##服务名称
#container_name: tomcat8080 指定容器名称
image: tomcat:8 #镜像文件名称
ports: ###端口号的映射
- 8081:8080
volumes: ## 数据源 宿主机与容器数据共享
- /usr/tomcat/webapps:/usr/local/tomcat/webapps
networks:
- boyatop
networks: ## 定义服务的桥
boyatop:
配置同一个网段就可以互相访问(curl指令可以互相访问)
-d后台启动 -f指定deckercompose.yml文件
docker-compose up -d
更多推荐
所有评论(0)