Docker的基本操作
1.启动容器 docker run image [command] [Arg…]
Exp: docker run centos echo ‘hello world’
2.启动交互式容器 docker run -i -t image /bin/bash
-i -t 容器打开标准输入/伪tty终端
Exp: docker run -i -t centos bash
3.查看容器 docker ps [-a] [-l] 正在运行的/所有/最新
4.自定义容器名 docker run — name=容器名 -i -t image bash
Exp: docker run –name=container01 -i -t centos bash
5.重新启动停止的容器:
docker start [-i] 容器名
6.删除容器:
Docker rm 容器名
7.进入退出容器: docker attach [name/id]
守护式容器:1.能够长期运行 2.没有交互式会话 4.适合运行应用程序和服务
Ctrl+p ctrl+q (后台运行)
docker run –name [***] -d 容器名 [command] [args…]
查看容器日志 docker logs [-f] [-t] [–tail] 容器名 跟随log/时间戳/结尾处的数量
容器进程 docker top images
容器中启动新进程 docker exec [-d] [-i] [-t] 容器名 [command] [arg…]
停止容器 docker stop(等待响应的停止)/kill(直接暂停)
容器部署网站:
设置容器的端口映射 docker run -P ** –name ** -i -t centos bash
docker inspect [id/name] 建立的容器/镜像信息
镜像操作
删除镜像
docker rmi [ID/Name….] 删除镜像 docker rml $(docker images -q)
查找镜像
Docker search [镜像名]
下载上传镜像
Docker pull [-a] 镜像名[tag] / docker push
构建镜像
通过容器构建 docker commit
通过Dockerfile文件构建 docker build
连接方式:
修改配置
docker -h [……]
export DOCKER_HOST=”tcp://….. : …”
Docker守护进程的配置与操作
配置启动配置选项
修改启动配置使用sudo service docker start
Dockerfile
构建过程:
1.从基础镜像运行容器
2.执行指令对容器进行修改
3.执行docker commit操作,提交新镜像层
4.基于提交镜像运行新容器
5.执行DockerFile中下一条指令,直至全部完毕
Using:
使用中间层镜像进行调试 查找错误
构建缓存:
docker build –no-cache (不使用)
docker history 构建过程
1.注释
2.指令+参数
<1>from <2>maintainer <3>run <4>expose
<5>CMD <6>ENTERPOINT <7>ADD <8>COPY <9>VOLUME
<10>WORKDIR <11>ENV <12>USER <13>ONBUILD
From<image> From<image>:tag 第一条非注释指令 基础镜像
Maintainer<name> 指定镜像的作者信息
Run 指定当前镜像中运行的命令
Run<command>(shell) run echo …
Run[“executable”,”param1”,”param2”] (exec模式) run[“bash”,”-c”,”echo hello”]
EXPOSE [port…] 指定运行该镜像的容器端口
CMD 镜像启动后运行 (会被覆盖)
CMD[“executable”,”param1”,”param2”] (exec模式)
CMD command param1 param2 (shell 模式)
ENTRYPOINT (不会被覆盖)
ENTRYPOINT[“executable”,”param1”,”param2”] (exec模式)
ENTRYPOINT command param1 param2 (shell 模式)
Add<src>…包含tar解压功能 Copy<src>…复制文件
Workdir 容器中设置工作目录 (绝对路径)
ENV 环境变量 User 用户(默认root) USER user:group/gid
ONBUILD 指令 触发器
Docker网络连接 (通过虚拟网桥)
docker0 虚拟网桥:设置IP地址,相当于虚拟隐藏网卡
修改docker0地址:
Sudo ifconfig docker 192.168.200.1 netmask 255.255.255.0
Docker容器互联
守护进程选项 icc=true/false(允许/拒绝) –iptables –link (单连)
Docker与外部网络连接
Ip_forward iptables 端口映射访问 iptables限制访问
Ip_forward (允许数据转发)
Iptables 与Linux内核集成过滤防火墙系统
IPTables 操作控制
表(tables) 链(chain) 规则(rule)
添加规则
Sudo iptables -I DOCKER -s 访问原地址 -d 目的地址 -p 协议 –dport 端口 [操作]
Docker容器数据管理
<1>容器的数据卷 <2>数据卷容器 <3>数据卷的备份和还原
数据卷:
绕过UFS为多个容器提供访问,目的:数据永久化,不会被删.
数据卷架构:
宿主机,可以是目录也可以是文件
数据卷特点:
<1>启动时初始化,若镜像挂载点包含数据则拷贝到数据卷中.
<2>数据卷可以在容器之间共享和重用
<3>可以对数据卷内容直接修改
<4>卷变化不会影响镜像更新 卷会一直存在
Docker run -it -v(权限) [目录] –name [容器名] image [操作]
数据卷容器:进行数据共享
命名容器(数据卷容器)挂载数据卷,其他容器通过挂载该容器实现数据共享.
数据卷容器相当于知识配置数据卷的传递
Docker run –volumes-from [容器名] image [操作]
Docker数据卷备份还原
Docker run –volumes-from [容器名] -v[路径] image
Docker容器跨主机连接
1.网桥连接
利用网桥放置到同一网段下 (需要与主机在同一网段)
2.Open vSwitch(虚拟交换机)实现跨主机容器连接
GRE隧道技术
3.使用weave实现跨主机容器连接