女生 自慰 Docker初学教程
图片女生 自慰
著作目次 一、Docker抽象1. 什么是容器技能?2. 什么是Docker3. 为什么要使用Docker4. Docker和假造机的对比5. Docker相关宗旨6. DockerHub7. Docker架构 二、装配Docker1. 装配Docker2. 竖立阿里云镜像加快 三、Docker常用敕令1. 匡助敕令2. 镜像操作敕令3. 容器操作敕令4. 老成4.1 装配Redis4.2 RabbitMQ单机部署4.3 装配Ubuntu 四、Docker可视化器具五、数据卷1. 创建和放哨数据卷2. 挂载数据卷3. 挂载目次 六、Dockerfile自界说镜像1. 基于Ubuntu构建Java状貌2. 基于java8构建Java状貌 七、Docker Compose1. Docker Compose抽象2. Docker Compose装配与卸载3. Docker Compose使用 八、扩张1. 自界说dps敕令,通过docker ps查询指定列图片
一、Docker抽象 1. 什么是容器技能?容器是一个允许咱们在资源阻隔的历程中,驱动应用设施和其依赖项的 、轻量的 、操作系统级别的假造化技能, 驱动应用设施所需的所有必要组件齐打包为单个镜像,这个镜像是不错叠加使用的。当镜像驱动时,它是驱动在落寞的环境中,并不会和其他应用分享主机操作系统的内存、CPU或磁盘。这保证了容器内的程度不会影响到容器外的任何程度。
2. 什么是DockerDocker官网地址 : https://www.docker.com/
Docker文档地址 : https://docs.docker.com/
Docker镜像仓库地址 : https://hub.docker.com/
图片
图片
Docker是一个开源的应用容器引擎,闪开导者把他们的应用以及依赖打包到一个可移植的镜像中(打包),然后发布到任何流行的Linux或Windows操作系统的机器上,也不错收尾假造化,容器是透顶使用沙箱机制,互相之间不会有任何接口(阻隔)。Docker底层用的Linux的cgroup和namespace这两项技能来收尾应用阻隔,一个完好意思的Docker有以下几个部分构成:
Docker Client:客户端。Docker Daemon:看管程度。Docker Image:镜像。Docker Container:容器。 3. 为什么要使用DockerDocker不错科罚状貌部署问题,比如 传统情势的状貌部署会碰到以下问题:
组件兼容问题。(比如状貌依赖jdk8的环境,若是给他降jdk7就会碰到各式兼容问题)操作系统环境不同问题。(比如测试环境在centos,分娩环境迁到ubuntu,就会碰到系统兼容问题)1、Docker怎么科罚组件兼容问题?
Docker会将应用的Libs(函数库)、Deps(依赖)、竖立与应用一说念打包。
将每个应用放到一个阻隔的容器去驱动,幸免互相关扰。(沙箱机制)
图片
2、Docker怎么科罚操作系统不同问题?
Docker会将应用设施与所需要调用的操作系统函数库一说念打包。(会占用好多资源)
Docker驱动到不同操作系统时,平直基于打包的系统函数库,借助于操作系统的Linux内核来驱动。
图片
操作系统基本结构:
缱绻机硬件:举例CPU、内存、硬盘、网卡等系统内核:所有Linux刊行版的内核齐是Linux,举例CentOS、Ubuntu、Fedora等。内核不错与缱绻机硬件进行交互,对外提供内核辅导,用于操作缱绻机硬件。系统应用:操作系统自己提供的应用、函数库。这些函数库是对内核辅导的封装,使用愈加粗拙。 4. Docker和假造机的对比领先两者齐是用来作念阻隔的,Docker当作一种新兴的假造化情势, 跟传统的假造化情势比拟具有宽广的上风。
图片
1、更高效的垄断系统资源:
由于容器不需要进行硬件假造以及驱动完好意思操作系统等极度支拨,Docker对系统资源的垄断 率更高。不管是应用施行速率、内存损耗或者文献存储速率,齐要比传统假造机技能更高效。因此,比拟假造机技能,一个换取竖立的主机,时时不错驱动更多数目的应用。2、更快速的启动时间:
传统的假造机技能启动应用作事时时需要数分钟,而 Docker 容器应用,由于平直驱动于宿主内核,无需启动完好意思的操作系统,因此不错作念到秒级、以至毫秒级的启动时间。大大的精炼了开导、测试、部署的时间。3、一致的驱动环境:
开导历程中一个常见的问题是环境一致性问题。由于开导环境、测试环境、分娩环境不一致,导致有些bug并未在开导历程中被发现。而 Docker 的镜像提供了除内核外完好意思的驱动时环境,确保了应用驱动环境一致性,从而不会再出现 「这段代码在我机器上没问题啊」 这类问题。4、合手续委派和部署:
对开导和运维(DevOps)东说念主员来说,最但愿的等于一次创建或竖立,不错在职意地合法常驱动。使用 Docker 不错通过定制应用镜像来收尾合手续集成、合手续委派、部署。开导东说念主员不错通过 Dockerfile 来进行镜像构建,并聚合 合手续集成(Continuous Integration) 系统进行集成测试, 而运维东说念主员则不错平直在分娩环境中快速部署该镜像,以至聚合 合手续部署(Continuous Delivery/Deployment) 系统进行自动部署。何况使用 Dockerfile 使镜像构建透明化,不单是开导团队不错清爽应用驱动环境,也粗拙 运维团队清爽应用驱动所需条款,匡助更好的分娩环境中部署该镜像。5、更缩小的迁徙:
由于Docker确保了施行环境的一致性,使得应用的迁徙愈加容易。Docker不错在好多平台上驱动,不管是物理机、假造机、公有云、特有云,以至是条记本,其驱动恶果是一致的。 因此用户不错很松驰的将在一个平台上驱动的应用,迁徙到另一个平台上,而无须缅想驱动 环境的变化导致应用无法平淡驱动的情况。6、更缩小的融合和扩张:
Docker 使用的分层存储以及镜像的技能,使得应用叠加部分的复用更为容易,以及应用的融合更新愈加粗拙,基于基础镜像进一步扩张镜像也变得相等粗拙。此外,Docker 团队同各个开源状貌团队一说念融合了一大齐高质料的官方镜像,既不错平直在分娩环境使用,又不错当作基础进一步定制,大大的缩小了应用作事的镜像制作资本。对比传统假造机精采如下:
特质Docker假造机启动秒级分钟级硬盘使用一般为 MB一般为 GB性能接近原素性能较差系统救助量单机救助上千个容器一般几十个艾玛,真香!!!
搞起来!!!
5. Docker相关宗旨镜像、容器、仓库(要点)
镜像(Image):Docker将应用设施过火所需的依赖、函数库、环境、竖立等文献打包在一说念,称为镜像。(装配包 )
容器(Container):镜像中的应用设施驱动后酿成的程度等于容器,只是Docker会给容器程度作念阻隔,对外不行见。
仓库(repository):仓库等于存放镜像的场所!仓库分为公有仓库和特有仓库!
图片
一切应用最终齐是代码构成,齐是硬盘中的一个个的字节酿成的文献。唯有驱动时,才会加载到内存,酿成程度。
镜像等于把一个应用在硬盘上的文献、过火驱动环境、部分系统函数库文献一说念打包酿成的文献包。这个文献包是只读的。
容器是将这些文献中编写的设施、函数加载到内存中驱动,酿成程度(等于容器),Docker会给容器程度作念阻隔(看管程度)。
一个镜像不错启动多个容器。
6. DockerHubDockerHub镜像仓库地址:https://hub.docker.com/
[外链图片转存失败,源站可能有防盗链机制,淡薄将图片保存下来平直上传(img-2yqi1jGl-1676658332218)(docker.assets/image-20230214234712523.png)]
DockerHub:是Docker官方提供的镜像仓库(托管平台)。这么的平台称为Docker Registry。
国内也有肖似DockerHub的镜像托管平台:
网易云镜像作事: https://c.163yun.com/hub阿里云镜像作事:https://cr.console.aliyun.com/特有云:我方公司用的。等等图片
7. Docker架构咱们要使用Docker来操作镜像、容器,就必须要装配Docker。
Docker是一个CS架构的设施,由两部分构成:
作事端(server):Docker看管程度,持重处理Docker辅导,经管镜像、容器等。
客户端(client):通过敕令或RestAPI向Docker作事端发送辅导。不错在土产货或费力向作事端发送辅导。
图片
精采
镜像:肖似装配包,它将应用设施过火依赖、环境、竖立打包在一说念。
容器:镜像驱动起来等于容器,一个镜像不错驱动多个容器。
Docker结构:
作事端:继承敕令或费力恳求,操作镜像或容器。
客户端:发送敕令或者恳求到Docker作事端。
DockerHub:是一个镜像托管的作事器,肖似的还有阿里云镜像作事、网易云镜像作事等等,统称为DockerRegistry。
二、装配Docker 1. 装配Docker环境准备:CentOS7(系统内核要求是3.10以上的)、SSH客户端
匡助文档 : https://docs.docker.com/
图片
图片
1、放哨系统内核(系统内核要求是3.10以上的)
uname -r
图片
2、若是之前装配过旧版块的Docker,不错使用底下敕令进行卸载Docker:
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine \ docker-ce
3、装配yum器具
yum install -y yum-utils
4、 建设阿里云镜像源
yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
图片
5、更新镜像源
sed -i 's/download.docker.com/mirrors.aliyun.com/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
图片
6、 更新yum软件包索引
yum makecache fast
图片
7、装配docker-ce社区版 ,免费版块 ( ee企业版)
yum install -y docker-ce
图片
8、关闭防火墙
systemctl stop firewalld #关闭防火墙 systemctl disable firewalld #辞谢开机启动 systemctl status firewalld
9、启动docker
systemctl start docker # 启动docker作事 systemctl enable docker.service #建设docker开机自动启动住手docker作事:systemctl stop docker重启docker作事:systemctl restart docker
图片
10、放哨docker版块号,测试是否启动成功。
docker -v
图片
ok,docker照旧成功驱动起来啦!
2. 竖立阿里云镜像加快华为云容器镜像作事 :https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
阿里云镜像加快文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
1、登录阿里云找到容器作事
图片
2、找到镜像加快地址
图片
3、竖立镜像加快,全选底下的代码施行即可。
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { 'registry-mirrors': ['https://bbc8rnyr.mirror.aliyuncs.com'] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
图片
4、 放哨镜像加快竖立
cat /etc/docker/daemon.json
图片
ok,到这里阿里云镜像加快照旧竖立成功啦!
三、Docker常用敕令匡助文档的地址:https://docs.docker.com/reference/
图片
1. 匡助敕令docker -v # 自大docker的版块号 docker version # 自大docker的版块信息 docker info # 自大docker的系统信息,包括镜像和容器的数目 docker [COMMAND] --help # 匡助敕令 (COMMAND,敕令),举例 docker save --help
图片
2. 镜像操作敕令镜称号一般分两部分构成:[repository]:[tag]。
镜像名:版块, 举例:mysql:5.7。图片
若是拉取镜像不指定版块,默许是latest,代表最新版块的镜像。(最佳用具体版块的镜像,粗拙放哨版块)
图片
镜像常用敕令:
取得镜像: 土产货构建:docker bulid拉取镜像:docker pull 镜像称号 放哨镜像: docker images删除镜像: docker rmi 镜像称号或镜像id推送镜像: docker push 镜像称号导出镜像: docker save -o 文献名.tar 镜像称号加载镜像: docker load -i 文献名.tar加载镜像: docker load -i -q 文献名.tar (不输出日记)1、放哨镜像:
docker images
图片
2、拉取镜像,mysql5.7
docker pull mysql:5.7
图片
3、将mysql镜像打成压包,若是别的同学网不好,你不错把这个包丢给她。
docker save -o mysql.tar mysql:5.7
图片
4、删除mysql镜像
docker rmi mysql:5.7
图片
5、加载镜像,mysql.tar
docker load -i mysql.tar
图片
3. 容器操作敕令图片
容器保护三个现象:
驱动:程度平淡驱动暂停:程度暂停,CPU不再驱动,并不开释内存住手:程度间隔,回收程度占用的内存、CPU等资源容器常用敕令:
docker run:创建并驱动一个容器,处于驱动现象。
docker run --name [容器名] -p 宿主机端标语:容器里面端标语 -d [镜像称号]docker pause:让一个驱动的容器暂停。
docker unpause:让一个容器从暂停现象还原驱动。
docker stop:住手一个驱动的容器。
docker start:让一个住手的容器再次驱动。
docker restart:重启容器。
docker rm:删除一个容器。
docker rm -f :强制删除容器。
docker rm -f $(docker ps -qa): 删除所有dokcer容器 (包括正在驱动的和已住手的容器)
docker ps:放哨正在驱动的容器。
docker ps -a:放哨所有容器。
docker logs 容器名 :放哨容器日记。
docker logs -f 容器名 :合手续放哨容器日记。
参加容器:docker exec -it 容器名 bash。(execute,施行)
把容器建设开机自启:docker update --restart=always 容器名
查询指命称号来源的容器id:docker ps -a -q --no-trunc --filter name=^/xxx 。(这里xxx暗示容器来源称号)
组合敕令启动指命称号来源的容器:docker start docker ps -a -q --no-trunc --filter name=^/xxx。
扩张:
docker run -it IMAGES_NAME #会创建前台程度,可是会在输入exit后间隔程度。 docker attach DOCKER_ID #瓦解过衔接stdin,衔接到容器内输入输出流,会在输入exit后间隔程度. docker exec -it DOCKER_ID /bin/bash #会衔接到容器,不错像SSH不异参加容器里面,进行操作,不错通过exit退出容器,不影响容器驱动。 #以上几种情势均可通过输入Ctrl+P+Q把前台容器放入后台驱动,不间隔程度。
示例老成
1、下载nginx镜像,创建并驱动一个容器,容器名为nginx1
# 下载最新版的nginx docker pull nginx # 创建并驱动一个容器,容器名为nginx1,对外提供的端口是800,容器里面端口是80, -d暗示后台览动 docker run --name nginx1 -p 800:80 nginxdocker run :创建并驱动一个容器。–name : 给容器起一个名字,比如叫作念nginx1。-p :端口映射。-d:后台驱动容器。nginx:镜像称号,举例nginx。
图片
浏览器测试访谒:http://192.168.112.129:800/
图片
2、参加nginx1容器,修改nginx首页内容
docker exec -it nginx1 bash
docker exec :参加容器里面,施行一个敕令。
-it : 给刻下参加的容器创建一个范例输入、输出末端,允许咱们与容器交互。
mn :要参加的容器的称号。
bash:参加容器后施行的敕令,bash是一个linux末端交互敕令。
图片
# 操作文本敕令 sed -i -e 's#Welcome to nginx#白豆五接待您#g' -e 's#<head>#<head><meta charset='utf-8'>#g' index.html-e 施行多个文本替换。
图片
浏览器再次访谒:http://192.168.112.129:800/
图片
扩张:redis容器启动敕令
# 驱动redis容器 docker run --name redis1 -p 6379:6379 -d redis:7.0.0 redis-server --appendonly yes # --appendonly yes 开启AOF(Append Only File)合手久化 # 参加容器 docker exec -it redis1 bash4. 老成
使用Docker装配一些常用软件。
4.1 装配Redis1、下载redis镜像
图片
docker pull redis:6.2.8
图片
2、创建并驱动redis容器
docker run --name redis1 -p 6379:6379 -d redis:6.2.8 redis-server --appendonly yesredis-server 启动redis作事–appendonly yes 开启合手久化
图片
图片
防范:一定要关闭防火墙,或者怒放端口(在假造机上、或者作事器官网的安全组中添加),否则咱们windows主机无法访谒docker的redis容器。
3、参加redis容器
docker exec -it redis1 bash
图片
4、启动redis客户端(敕令行器具)
redis-cli
图片
ok,到这里redis就装配成功了。
4.2 RabbitMQ单机部署1、下载RabbitMQ镜像
性技巧docker pull rabbitmq:3.8-management
图片
2、装配RabbitMQ容器
docker run \ -e RABBITMQ_DEFAULT_USER=admin \ -e RABBITMQ_DEFAULT_PASS=123456 \ -v mq-plugins:/plugins \ --name mq1 \ --hostname mq1 \ -p 15672:15672 \ -p 5672:5672 \ -d \ rabbitmq:3.8-management\ 代表换行,要施行多行敕令-e 指定环境变量-e RABBITMQ_DEFAULT_USER=admin 用户名-e RABBITMQ_DEFAULT_PASS=123456 密码-v 挂载目次或文献 (数据卷)-p 15672:15672 用于页面使用的端口 (经管员页面)-p 5672:5672 用于分娩和花费端使用的端口(通讯端口,也等于在代码里使用)-d 后台驱动–name mq1 容器名字–hostname mq1 (RabbitMQ的一个遑急防范事项是它字据所谓的 “节点称号” 存储数据,默许为主机名);
图片
3、测试访谒RabbitMQ经管页面:http://ip:15672
图片
音书部队模子:
基本模子:粗拙部队、责任部队(work)模子。发布/订阅模子:播送、路由、主题。(需要依赖交换机) 4.3 装配Ubuntu1、拉取镜像
docker pull ubuntu
图片
2、装配ubuntu容器
docker run -it ubuntu /bin/bash
图片
3、强制删除驱动的容器
docker rm -f 容器称号或容器id
图片
4、删除镜像
docker rmi ubuntu
图片
四、Docker可视化器具Portainer是一个可视化的容器镜像的图形经管器具,垄断Portainer不错缩小构建,经管和融合Docker环境。 何况透顶免费,基于容器化的装配情势,粗拙高效部署。
官方装配讲解:https://www.portainer.io/installation/
1、装配Portainer
docker run -d -p 9000:9000 \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ --privileged=true \ --name prtainer-test \ portainer/portainer–privileged=true 掀开root权限
图片
2、浏览器访谒Docker经管界面:http://192.168.112.129:9000/
① 创建账号:
图片
建设登录密码,长度最少8位,粗拙缅想我就建设成12341234啦。
② 聘用经管土产货docker环境
图片
③ 参加docker经管面板:
图片
图片
五、数据卷之前修改容器里面文献,需要参加容器里面才略修改,操作相等进犯。
当咱们删除容器时,容器里的数据就丢失了。(容器和数据是耦合在一说念的,不行复用,升级融合不毛)
科罚决议:使用数据卷挂载目次。
数据卷(volume):是一个假造目次,指向宿主机文献系统中的某个目次。(然后让容器和数据卷关联)
作用:让容器外面的目次和容器里面的目次进行关联。
图片
一朝完成数据卷挂载,对容器的一切操作齐会作用在数据卷对应的宿主机目次。
这么,咱们操作外面的宿主机目次,就等同于操作容器内的目次。
即使咱们把容器干掉,数据依然在外面的宿主机目次中保留。
数据卷操作相关的敕令:
docker volume 【COMMAND】docker volume create:创建数据卷。docker volume ls:放哨所罕有据卷。docker volume inspect:放哨数据卷能干信息,包括关联的宿主机目次位置。docker volume rm:删除指定数据卷。docker volume prune:删除所有未使用的数据卷。 1. 创建和放哨数据卷
示例:创建一个数据卷,并放哨数据卷在宿主机的目次位置
创建数据卷:
# 语法docker volume create [数据卷称号] docker volume create abcd
放哨所罕有据卷:
docker volume ls
放哨数据卷能干信息卷:
docker volume inspect html
图片
2. 挂载数据卷咱们在创建容器时,不错通过 -v 参数来挂载一个数据卷到某个容器内目次,敕令神志如下:
docker run \ --name mn \ -v html:/usr/share/nginx/html \ -p 8080:80 nginx \
这里的-v等于挂载数据卷的敕令:
\ :暗示多行输入。
-v html:/root/htm :把html数据卷挂载到容器内的/usr/share/nginx/html这个目次中。
数据卷不存在时会自动创建。(手动创建数据卷再挂载也不错)
若数据卷中莫得文献,会将容器目次中的文献挂载到数据卷中。
若数据卷中有文献,会将数据卷中的文献遮掩容器目次中。
示例:给nginx挂载数据卷
1、启动容器并挂载目次
# 语法:docker run --name 容器称号 -v 数据卷:容器指定目次 -p 80:80 -d 镜像称号或id docker run --name nginx1 -v html:/usr/share/nginx/html -p 80:80 -d nginx
2、参加html数据卷所在位置,并修改HTML内容
# 放哨html数据卷的位置 docker volume inspect html # 参加该目次 cd /var/lib/docker/volumes/html/_data # 修改文献 vi index.html3. 挂载目次
容器不单是不错挂载数据卷,也不错平直挂载到宿主机目次上。挂载目次和挂载数据卷肖似,语法如下:
挂载数据卷:-v [数据卷称号]:[容器内目次]。目次挂载:-v [宿主机目次]:[容器内目次]。文献挂载:-v [宿主机文献]:[容器内文献]。图片
数据卷挂载与目次挂载的诀别:
数据卷挂载耦合度低(使用目次别号,即数据卷),由docker来经管目次,可是目次较深,不好找。(允洽数据量小的)目次挂载耦合度高(需要写完好意思目次),需要咱们我方经管目次,不外目次更容易查找。(允洽数据量大的)示例:创建并驱动一个MySQL容器,将宿主机目次平直挂载到容器指定目次中。
1、下载MySQL镜像
docker pull mysql:5.7
2、创建目次(存mysql数据和竖立文献)
mkdir -p /tmp/mysql/data mkdir -p /tmp/mysql/conf
3、在假造机/tmp/mysql/conf目次下,创建hmy.conf文献:
[mysqld] skip-name-resolve character_set_server=utf8 datadir=/var/lib/mysqlskip-name-resolve 禁用dns解析。character_set_server=utf8 建设字符集。datadir=/var/lib/mysql 容器里面存数据的目次
3、启动mysql:
docker run \ --name mysql1 \ --restart=always \ -e MYSQL_ROOT_PASSWORD=root \ -e TZ=Asia/Shanghai \ -p 3306:3306 \ -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \ -v /tmp/mysql/data:/var/lib/mysql \ -d \ mysql:5.7-p 3306:3306 端口映射。-e MYSQL_ROOT_PASSWORD=root ,密码建设为root。-e TZ=Asia/Shanghai 建设时区。–restart=always 开机自动启动。-v /tmp/mysql/data:/var/lib/mysql 挂载数据存储位置。-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf 挂载竖立文献。-d 后台驱动。 4、使用navicat或datagrip衔接测试。 六、Dockerfile自界说镜像
文档地址: https://docs.docker.com/engine/reference/builder
Dockerfile 是一个用来构建镜像的文本文献,文本内容包含了一条条构建镜像所需的辅导和讲解,然后每一条辅导齐会酿成一层。如 基础层FROM、进口层ENTRYPOINT。
图片
1. 基于Ubuntu构建Java状貌需求:基于Ubuntu镜像构建一个新镜像,驱动一个Java状貌。
1、新建一个空文献夹docker-demo:
mkdir -p /test/docker-demo cd /test/docker-demo/
图片
2、上传一个测试状貌demo.jar到docker-demo这个目次:
图片
图片
3、在docker-demo目次中,下载一个linux版jdk(上传文献到这个目次也不错)
wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz
图片
4、在docker-demo目次中,创建Dockerfile文献:
vi Dockerfile
竖立文献内容如下:(使用Dockerfile打包镜像)
# 指定基础镜像 FROM ubuntu:16.04 # 竖立环境变量,JDK的装配目次 ENV JAVA_DIR=/usr/local # 拷贝jdk和java状貌到指定目次 COPY ./jdk-8u202-linux-x64.tar.gz $JAVA_DIR/ COPY ./demo.jar /tmp/app.jar # 装配JDK RUN cd $JAVA_DIR \ && tar -xf ./jdk-8u202-linux-x64.tar.gz \ && mv ./jdk1.8.0_202 ./java8 # 竖立环境变量 ENV JAVA_HOME=$JAVA_DIR/java8 ENV PATH=$PATH:$JAVA_HOME/bin # 败露端口 EXPOSE 8089 # 进口,java项联系启动敕令 ENTRYPOINT java -jar /tmp/app.jar
图片
5、在docker-demo目次下,驱动docker build敕令:
docker build -t javaweb:1.0 .
参数详解:
docker build :构建镜像;(前提:刻下目次必须要有Dockerfile文献)-t :指定构建的镜像名和版块,举例 javaweb:1.0;. :暗示使用刻下目次下的Dockerfile构建。放哨本机镜像:
图片
6、驱动容器
docker run --name web1 -p8089:8089 -d javaweb:1.0
测试访谒: http://ip:8089/hello/
图片
2. 基于java8构建Java状貌上头的情势比较进犯,何况打包后的镜像也比较大。是以大多数情况下,咱们不错在一些装配部分软件的基础镜像上作念改良。
基于java:8-alpine镜像,将一个Java状貌构建为镜像。
Dockerfile文献内容如下:
# 基于java:8-alpine当作基础镜像 FROM java:8-alpine # 将demo.jar拷贝到镜像中 COPY ./demo.jar /tmp/app.jar # 败露端口 EXPOSE 8089 # 编写进口ENTRYPOINT,java项联系启动敕令 ENTRYPOINT java -jar /tmp/app.jar
构建镜像操作要道同上。
末节:
Dockerfile的骨子是一个文献,通过辅导描摹镜像的构建过;
Dockerfile的第一排必须是FROM,从一个基础镜像来构建;
基础镜像不错是基本操作系统,如Ubuntu。也不错是其他东说念主制作好的镜像,举例:java:8-alpine。
七、Docker Composedocker-compose常用敕令:https://blog.csdn.net/weixin_44336161/article/details/126446338
1. Docker Compose抽象图片
Docker Compose是一个作事编排器具(界说和驱动多容器的docker应用器具),不错帮咱们快速的部署溜达式应用,它还提供用于经管容器化应用的完好意思开导周期的敕令,包括作事构建、启动和住手。
使用要道如下:
垄断Dockerfile界说驱动环境镜像;使用docker-compose.yml界说构成应用的各个作事;(界说启动规章和关联关系)在docker-compose.yml文献所在目次,驱动docker-compose up 启动应用。 2. Docker Compose装配与卸载1、装配Docker Compose:
# 1、装配 # 情势一:从Github高下载它的二进制包进行装配,装配后的文献或者12m阁下(github下载速率略微有点慢) curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose # 情势二:快速装配DockerCompose curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose # 2、为docker-compose文献添加可施行权限 chmod +x /usr/local/bin/docker-compose # 3、放哨版块信息 docker-compose -version
图片
重启docker作事:systemctl restart docker.service
2、卸载Docker Compose:
# 平直删除/usr/local/bin/docker-compose文献即可 rm /usr/local/bin/docker-compose3. Docker Compose使用
1、创建docker-compose目次
mkdir /docker-compose cd /docker-compose
2、编写docker-compose.yml文献:(编写容器相关竖立)
version: '3' services: rabbitmq: image: rabbitmq:3.8-management # 镜像文献 container_name: rabbitmq # 容器名为'rabbitmq' hostname: my-rabbit # 主机名(集群的时候需要这个) restart: always # 建设docker重启时容器也重启 environment: # 建设环境变量,十分于docker run敕令中的-e TZ: Asia/Shanghai LANG: en_US.UTF-8 RABBITMQ_DEFAULT_USER: admin RABBITMQ_DEFAULT_PASS: 123456 volumes: # 数据卷挂载旅途建设,将本机目次映射到容器目次 - './rabbitmq/data:/var/lib/rabbitmq' - './rabbitmq/log:/var/log/rabbitmq' # 退却log日记报failed to open log file ports: # 竖立端口映射 - '5672:5672' # 分娩者、花费者通讯的端口 - '15672:15672' # 经管面板的端口
3、在/docker-compose目次下,使用docker-compose敕令启动容器
docker-compose up
图片
图片
八、扩张 1. 自界说dps敕令,通过docker ps查询指定列# 修改环境变量 vim ~/.bashrc # 在底部添加如下内容, 然后wq保存退出 alias dps='docker ps --format 'table{{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}'' # 让环境从头成功 source ~/.bashrc
图片
本站仅提供存储作事,所有内容均由用户发布,如发现存害或侵权内容,请点击举报。