Docker

安装

可以直接跟着官网的操作去做
https://docs.docker.com/engine/install/centos/
仓库的话可以使用我们国内的阿里云

阿里云镜像仓库

yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm

卸载

卸载

yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker

基础命令:

systemctl start docker  #启动Docker
docker version  #Docker版本信息
docker info  #Docker详细信息
docker --help  #Docker帮助命令

官网文档
https://docs.docker.com/reference/
在这里插入图片描述

镜像命令

docker images  #查看所以本地主机上的镜像

在这里插入图片描述

docker search  (mysql)  # 搜素仓库中的镜像

下载镜像

docker pull:(tag版本)  不写:tag就默认最新的

删除镜像

docker rmi -f 镜像id

在这里插入图片描述

==============================================================================

容器命令

有了镜像才可以创建我们的容器

新建容器并且启动

docker run -it --name nginx01 -p 80:3344 nginx /bin/bash

在这里插入图片描述

退出容器

  1. exit 退出容器不在运行
  2. ctrl+Q+P 后台运行

列出所有正在运行的容器

docker ps
docker ps -a  #不在运行的也可以查出来

删除容器

docker rm 容器id  #正在运行的要加-f

在这里插入图片描述

启动 重启 停止 杀死

在这里插入图片描述

后台启动

在这里插入图片描述

查看日志

在这里插入图片描述

查看进程

dokcer top 容器id

在这里插入图片描述

查看容器的元数据

docker inspect 容器id

进入当前进行的容器

docker exec -it 容器id /bin/bash
docker attach 容器id

docker exec 是进入当前容器但新启一个终端
docker attach 是直接进入当前那个容器所在的终端

容器的数据拷贝到主机

docker cp 容器id :容器内文件的路径 主机路径
在这里插入图片描述

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

docker stats                 #查看容器的状态

docker部署nginx的图解

在这里插入图片描述

提交镜像

如果你想保存当前容器的状态那么就可以提交然后保存为我们容器的镜像

docker commit 
 docker commit -a="作者名字" -m="描述" 容器id 镜像名称:版本
 docker commit -a="xiyuehua" -m="add webaap app" 6b739cb8cb3d myselftocmat:1.0

使用数据卷

使用命令来挂载数据卷 我们主机的目录会与容器绑定的目录自动同步 如在容器创建了一个文件夹 主机自动创建一个与之对应的文件夹

docker run -it -v /home/test:/home centos /bin/bash
docker run -it -v 主机目录:容器目录 centos /bin/bash 

在这里插入图片描述

指定路径|匿名|具名 挂载

-v     容器内路径     #匿名挂载
-v      /容器外路径:/容器内路径    #指定路径挂载
-v      卷名:/容器内路径      #具名挂载

ro/rw 可以设置我们的容器权限

在这里插入图片描述

dockerfile

dockerfile文件就是用来生成我们的镜像文件的一个命令脚本

样例

FROM centos

VOLUME ["volume01","volume02"]

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

启动我们的dockerfile
-f 就是我们dockerfile的地址
-t 就是target 生成的东西

docker build -f dockerfile1 -t xiyuehua/centos:1.0 .  #不要忘了最后这个点

数据卷容器

俩个甚至多个mysql同步数据
在这里插入图片描述

在这里插入图片描述
手动实现挂载

docker run -it --name dokcer01 2f27c7d48432(镜像id) /bin/bash 
 docker run -it --name docker02 --volumes-from 0ae80a921f55(父容器的id) 2f27c7d48432(镜像id)

dockerfile指令

在这里插入图片描述

在这里插入图片描述

实战测试

FROM centos

MAINTAINER xiyuehua<781655857@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

CMD与ENTRYPOINT的区别

在这里插入图片描述
他们俩个都是在容器启动时自动执行的命令 而我们的CMD在启动时加参数会覆盖而ENTRYPOINT会追加

Docker网络

所有的容器可以通过我们veth pair技术 虚拟网络技术想连接 当容器被删除时 桥接也删除 所有我们的所有容器之间可以相互都通信 docker就相当于一个路由器
在这里插入图片描述

–link(不推荐使用)

把tomcat03与tomcat02 通过我们的名字相连通

ping tomcat02        #就可以ping通

但我们02ping 03 就不行
就像我们springcloud的openfein

自定义docker网络

我们开启docker容器时 默认就是用的我们的bridge网卡在这里插入图片描述

创建我们自己的网卡

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

在这里插入图片描述
查看我们自己配置的网络
在这里插入图片描述
用我们自己的网络开启我们的容器

docker run -d -P --name tomcat-net01 --net mynet tomcat  

在这里插入图片描述
我们不同集群可以搭建不同的网络
在这里插入图片描述
在这里插入图片描述

网络的总结:

用我们自己配置的网络 不用使用–link 也能直接ping名字 即容器之间可以通信

网络连通

下图我们想tomcat-01 与tomcat-net-01相通是不可能 我们要先把tomcat-01 与mynet 俩个网络打通
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

打通!在这里插入图片描述
打通之后就是把我们的容器tomcat01直接放到了mynet网络下
打通之后可以通信了
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值