docker笔记

一次搭建,处处运行

docker的安装

更新base源及epel源之后就可以安装docker-ce了
docker-ce安装完成后,配置daemon.json文件,重新启动docker服务

daemon.json参数含义备注
graph工作目录;现在已经被data-root取代docker引擎服务相关的文件存放目录
storage-driveroverloy2如果存驱动改变那么之前安装的镜像和容器都不可用
insecure-registries不安全的远程镜像仓库可以放私有仓库地址
registry-mirrors国内镜像加速源
bip宿主机给所在docker容器分配网络的路由器指定的ip段一般与宿主机后两位的ip段保持一致
exec-opts配置docker容器启动的相关配"native.cgroupdriver=systemd"用于优化cpu内存的进程控制服务

安装测试完成之后需要配置阿里云的镜像源,用户加速镜像的拉取

常用参数

参数含义使用示例
-i交互式模式运行
-t$12
-d后台运行
-v挂载数据卷
-p映射端口
-e指定环境变量
–name指定容器名字
run运行镜像docker run -it cenos /bin/bash
attach进入容器当前的命令行;使用ctl +q+p不停止推出容器docker run -it cenos /bin/bash
exec进入容器并执行一条命令docker exec 容器id /bin/bash
inspect查看docker的容器信息,其中mounts挂载信息就显示了容器的挂载情况docker inspect centos

容器数据卷

定义

将docker容器中的数据同步到本地

应用场景

docker中数据库的数据的本地存储,避免容器删除之后,数据的丢失;
不希望数据直接放到容器中;

使用

常用参数
参数含义使用示例
-i交互式模式运行
-t从容器打开一个交互终端
-d后台运行,并返回容器id
-v挂载数据卷docker run -it -v 本机目录: 容器中的路径 centos /bin/bash 该绑定为双向绑定
-- volumes-from从父容器中的挂载同样的数据卷,并且两者的数据卷数据同步docker run -it 镜像1的id --volumes-from 镜像1启动的别的容器 该命令启动的容器会与之前启动的容器公用相同的卷及数据

具名挂载or匿名挂载

docker volume ls 查询docker中历史所有的卷
docker run -v 容器内路径 匿名挂载
docker run -v 挂载名:容器内路径 具名挂载
docker run -v 挂载名:容器内路径:容器权限 默认为rw-容器可读可写;ro-容器只读;

多个容器数据卷的数据的共享

dockerfile初体验

原则

1. 所有关键字都大写
2. 每一行都是容器的一层
3. 建议dockerfile的文件名为 Dockerfile

常用命令

参数含义使用示例
build构建容器docker build -f /dockerfile路径 -t 镜像名称:版本号 镜像存储路径
history查看docker镜像是如何一步一步的构建起来的docker history 镜像id可以看下官方镜像是如何制作的

Dockerfile常用关键字

参数含义使用示例
FROM基础镜像FROM centos
MAINTAINER容器的作者MAINTAINER yyb
RUN镜像运行起来需要执行的命令FROM centos
ADD需要添加的压缩包等压缩文件FROM centos
COPY将指定文件夹下的所有文件拷贝到镜像中COPY . .
WORKDIR镜像的工作目录;进入到镜像之后默认进入的路径WORKDIR centos
VOLUME挂载卷;与-v 参数类似VOLUME [“第一个卷”, “第二个卷”, “匿名卷”, “宿主机路径:容器内路径”]
EXPOST暴露端口;与-p 参数类似VOLUME [“第一个卷”, “第二个卷”, “匿名卷”, “宿主机路径:容器内路径”]
CMD指定容器启动时候需要运行的命令,会被运行容器时的 命令所取代CMD ["ls", "-a"] 运行镜像docker run 1234hijh ls -al 会将CMD中的命令给替换掉
ENTRYPOINT当构建一个被继承dockerfile,此时就会触发 这个命令
ONBUILD集成dockerfileCMD ["ls", "-a"] docker run 123gjhg -l 会追加到CMD命令最后
ENV设置环境变量

docker网络

容器间的网络

在搭建docker之后就会有 docker0网卡
veth-pair技术 每启动一个容器都会多出来一个对网卡;该网络是由docker分配的(最多可以分配255*255-2个);用户docker容器内外的通信,也可以与docker之间通信;
docker内所有的网络都是虚拟的,虚拟的网络效率更高;

–link 技术

默认的网络

网络模式含义
host和宿主机共享网络
bridge桥接模式(默认模式)
none不配置网络

网络规则

  1. 如果不指定网络会使用默认的bridge作为网络,并通过docker0来分发ip
  2. run命令指定 --network 为容器指定自定义的网络,容器之间可以通过容器名称相互ping通。原理是 host文件配置了容器名称

常用命令

network 命令后续命令含义例子
ls查询当前存在的所有网络docker network ls
inspect查询指定网络的详细信息docker network ls
create查询当前存在的所有网络docker network create -subnet 192.168.0.1/16 网络名称

不同网络的容器互通

使用docker network connect 强行给一个容器连接到另外一个网络上;该容器拥有双网卡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岳大博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值