Docker学习

官网:https://www.docker.com
文档:https://www.docs.docker.com

1.下载安装Docker

2.阿里云镜像加速

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://habq57u3.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

3.Docker run原理

在这里插入图片描述
Docker全流程

在这里插入图片描述
在这里插入图片描述

4.Docker命令

镜像命令

//显示所有镜像
docker images

//搜索镜像
docker search mysql
docker search mysql --filter=STARS=3000

//下载镜像
docker pull mysql
docker pull mysql:5.7

//删除镜像
docker rmi -f 718a6da099d8 //删除指定id镜像
docker rmi -f $(docker images -aq)//删除所有镜像

容器命令

//新建容器并启动

docker run [可选参数] image
[可选参数]:
-d 后台方式运行
-it 交互方式运行,进入容器查看内容
-p 指定容器端口

//启动并进入容器
docker run -it centos /bin/bash

//退出
exit //容器停止并退出
Ctrl+P+Q //容器不停止退出

//列出所有运行的容器
docker ps //列出当前正在运行的容器
-a //列出当前正在运行的容器+带出历史运行过的容器
-n=? //显示最近创建的容器
-q //显示容器编号

//删除容器
docker rm 容器id  //删除指定的容器,不能删除正在运行的容器
docker rm -f $(docker ps -aq)   //删除所有的容器
docker ps -a -q|xargs docker rm   //删除所有的容器

//启动和停止容器
docker start 容器id    //启动容器
docker restart 容器id  //重启容器
docker stop 容器id     //停止当前正在运行的容器
docker kill 容器id     //强制停止当前容器

其他命令

后台启动容器
docker run -d 镜像名
docker ps 发现镜像停止了,这是因为后台运行,必须有一个前台进程,docker发现没有应用,就会自动停止。

查看日志
docker logs -f -t --tail 容器
docker logs -tf --tail 日志条数 容器Id
//自己编写一段脚本
docker run -d centos /bin/sh -c "while true;do echo zhulin;sleep 1;done"

查看容器中的进程信息
docker top 容器Id

查看镜像的元数据
docker inspect 容器Id

进入当前正在运行的容器
docker exec -it 容器Id /bin/bash  //进入容器后开启一个新的终端
docker attach 容器Id              //进入容器正在执行的终端

容器中文件复制到主机
docker cp c728c59e430b:/home/test.java /home

Docker命令小结
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.Docker部署Nginx

在这里插入图片描述
1.搜索Nginx

docker search nginx

2.下载Nginx

docker pull nginx

3.运行Nginx,映射到3344端口(阿里云安全组开启)

docker run -d --name nginx01 -p 3344:80 nginx

4.本机测试

curl localhost:3344

5.部署
在这里插入图片描述

6.Docker部署Tomcat

1.下载运行tomcat

docker run -d --name tomcat0101 -p 3355:8080 tomcat

2.部署Tomcat

docker run -d --name tomcat0101 -p 3355:8080 tomcat

在这里插入图片描述
说明Docker里是阉割版的Tomcat。

3.进入Tomcat

docker exec -it 5fa737d92bfd /bin/bash

4.拷贝必要文件

cp -r webapps.dist/* webapps

在这里插入图片描述
部署成功!

7.部署ES+Kibana

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。

1.部署ES

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

在这里插入图片描述

2.Kibana需要连接ES

    Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。
    Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。
    设置Kibana非常简单。无需编码或者额外的基础架构,几分钟内就可以完成Kibana安装并启动Elasticsearch索引监测。
Docker网络原理:借助宿主机。
在这里插入图片描述

8.Portainer可视化面板安装

docker run -d -p 9000:9000 -v /root/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name dev-portainer portainer/portainer

在这里插入图片描述

在这里插入图片描述

9.Commit镜像

在6中部署Tomcat时,修改了文件,我们可以将修改好的容器打包成为新的镜像。

docker commit -a="zhuin" -m="add webapps" id tmocat02:1.0

在这里插入图片描述

10.容器数据卷

使用命令挂载 -v

docker run -it -d -v /home/ceshi:/home centos /bin/bash
docker run -it -d -v /home/ceshi:/home:ro centos /bin/bash   //只读
docker run -it -d -v /home/ceshi:/home:rw centos /bin/bash   //默认,可读可写

主机home目录下有test文件夹,说明容器中的文件可以同步到主机。
在这里插入图片描述

停止容器,在宿主机上修改test文件,启动容器后后数据依然同步

在这里插入图片描述

docker inspect id

查看

在这里插入图片描述
多个容器之间数据同步,一个容器变成数据卷容器,让其他容器共享数据,比如搭建集群。

volumes-from

生命周期:挂载到宿主机一直存在,数据卷容器直到没有使用为止。

11.DockerFile

1.基础知识:

1.每个保留关键字(指令)都是大写字母

2.执行顺序从上到下

3.#表示注释

4.每一个指令都会创建提交一个新的镜像层并提交

2.Dockerfile构建镜像的步骤:

1.编写一个Dockerfile文件

2.docker build 构建成为一个镜像

3.docker run 运行镜像

4.docker push 发布镜像到(Dockerhub、阿里云镜像仓库)

3.Dockerfile指令:

在这里插入图片描述

4.实战构建centos

1.新建dockerfile目录写dockerfile文件mydockerfile-centos

FROM centos
MAINTAINER zhu<87492517@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "--------------end------------------"
CMD /bin/bash

2.构建成一个镜像

docker build -f mydockerfile-centos -t mycentos:0.1 . 

3.运行

docker run -it mycentos:0.1

在这里插入图片描述
vim、ifconfig命令也都可以使用;可以用docker history 镜像id查看镜像构造过程。

4.docker push 发布镜像到Dockerhub

docker tag 27cb44739e24 dockerzhulin521/mycentos:0.1
docker push dockerzhulin521/mycentos:0.1

5.docker push 发布镜像到阿里云镜像仓库

sudo docker login --username=朱琳爱玮琦 registry.cn-hangzhou.aliyuncs.com
docker tag 27cb44739e24 registry.cn-hangzhou.aliyuncs.com/dockerzhulin/dockerzhulin522:mycentos
docker push registry.cn-hangzhou.aliyuncs.com/dockerzhulin/dockerzhulin522:mycentos

12.Docker网络

在这里插入图片描述
1.准备环境

docker rmi -f $(docker images -aq)

在这里插入图片描述

2.启动两个容器tomcat1和tomcat2

docker run -d -P --name tomcat01 tomcat

docker run -d -P --name tomcat2 tomcat

docker exec -it tomcat01 ip addr
docker exec -it tomcat2 ip addr

在这里插入图片描述
在这里插入图片描述
56、57一对,58、59一对。

evth-pair充当一个桥梁,就是一对虚拟设备接口,成对出现,一端连着协议,一端彼此相连。

3.测试Linux能否Ping通容器

ping 172.17.0.2

在这里插入图片描述

4.测试容器能否Ping通容器

docker exec -it tomcat2 ping 172.17.0.2

在这里插入图片描述

5.容器互联link

docker0不支持容器名互联

docker run -d -P --name tomcat03 --link tomcat2 tomcat

此时3可以Ping通2,反过来不可以。link不推荐使用

6.自定义网络

查看所有的docker网络

docker network ls

自定义网络mynet

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

创建两个使用自定义网络的容器

docker run -d -P --name tomcat-net-01 --net mynet tomcat
docker run -d -P --name tomcat-net-02 --net mynet tomcat

测试tomcat-net-01能否与tomcat-net-02联通

docker exec -it tomcat-net-01 ping tomcat-net-01

在这里插入图片描述

不同的集群使用不同的网络,保证集群时安全和健康的。

7.网络连通

打通tomcat01 和 mynet

docker network connect mynet tomcat01

在这里插入图片描述
测试成功,实质:将tomcat01写入mynet。一个容器两个IP地址,类似阿里云既有公网 IP,又有私网IP。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值