docker切记安装前需关闭NetworkManager
直接使用网络安装
重启docker再次测试上传成功.配置完成.测试拉取镜像会发现变快了许多
导入镜像 docker load -i 镜像包
查看容器运行状态 docker ps -a
强制删除vm1
启动保存后的buxybox:v1名称为vm1
Docker镜像构建
docker commit构建新镜像
运行容器----->>修改容器------>>保存容器为新镜像
缺点:效率低、可重复性弱、易出错、使用中无法对镜像进行审计,存在安全隐患.
利用docker build构建镜像
利用docker build构建镜像
例:
“Source”: “/var/lib/docker/volumes/a3343980370e534e391dd9dd164c6c9db9d741146063f50d5ab30c6125d354df/_data”,
进入目录创建文件并查看是否数据同步
如果需要手动设置挂载点不使用默认的/var/lib/docker/* 挂载点我们可以手动设置
例:
在重新启动一个vm3并加入-v参数冒号前面挂载点冒号后面容器镜像目录
RUN
在容器中运行命令并创建新的镜像层,用于安装软件等服务.
CMD、ENTRYPOINT
这两个指令都是用于容器启动后执行的命令,但CMD会被docker run后面的命令覆盖,而 ENTRYPOINT不会被忽略,一定会被执行.
docker run 后面的参数可以传递给ENTRYPOINT指令当做参数.
Dockerfile中只能指定一个ENTRYPOINT,如果指定了多个,只有最后一个有效,其他无效.
CMD指令
1)、exec格式用法 (常用)
exec格式,也被称为JSON风格[“command”,“arg1”].
2)、shell格式用法
例:
- exec格式用法 (常用)
ENTRYPOINT [“top”,"-b", “-H”]
exec格式,也被称为JSON风格[“command”,“arg1”].
例:
3)shell格式用法
ENTRYPOINT exec echo “nihao”
ENTRYPOINT ps -aux
例:
利用dockerfile安装nginx服务
首先下载centos镜像并在本地搭建yum源或利用外网yum源也行,这里在本地搭建http源安装
在本地生成nginx主页面并拷贝安装nginx所需yum源
配置dockerfile
查看web所对应的IP是否生成
因为没有做端口映射所有只能访问docker内置Ip在进行映射
启动web2并进行映射 -p端口映射
Docker私有仓库搭建
1、首先需下载registry
2、映射registry端口
3、修改push镜像名称为本地名称
4、Push镜像及pull镜像并查看镜像存放点.
启动registry并打入后台运行并进行端口映射registry默认为5000端口
查看数据卷
修改nginx名称
上传至本地仓库
登录测试
在服务端拷贝客户端认证key
创建自定义网络网络名称为network1
创建自定义网络-d默认为bridge 如需更改模式只需修改-d后
Joined 容器是一种特别的网络模式
在创建容器时添加 --network=conatiner:vm1(容器名称)
在两台docker中做同样步骤 创建一个macvlan 并制定网卡为ens34
Macvlan会独占主机网卡,但可以使用vlan子接口实现多macvlan网络
Vlan可以将物理二层网络划分为4094个逻辑网络,彼此隔离,vlan id 取值为1 ~ 4094
创建vlan子接口
在docker1中创建并启动新容器vm3
Docker数据卷
Docker分层文件系统 性能差,生命周期与容器相同
Docker数据卷
Mount至主机,绕开分层文件系统;和主机磁盘性能相同,容器删除后依然保留;仅限本地磁盘不能随容器仅限迁移
Docker提供了两种卷
Bind mount docker managed volume
Bind mount 将主机上文件或目录直接以mount至容器中
例:
Docker volume插件 可根据官方插件进行配置
https://docs.docker.com/engine/extend/legacy_plugins
本地利用convoy插件配置卷
首先需要在两台docker中配置文件存储 这里利用nfs实验
在Docker1中
在docker2配置
挂载成功后安装convoy,两台docker都需要安装convoy
注这里启动convoy服务path指定的是nfs挂载目录也就是docker1在/mnt/nfs中docker2在/opt/data中否则不能启动
例:
例:
Docker 基于lxcfs增强docker隔离性
如
http://man7.org/linux/man-pages/man7/capabilities.7.html acp-add所需权限页面
例如添加网络权限
在次新增一台docker服务器
Server1
在server1中