一次搭建,处处运行
docker的安装
安装测试完成之后需要配置阿里云的镜像源,用户加速镜像的拉取
常用参数
参数 | 含义 | 使用示例 |
---|
-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 centos | WORKDIR | 镜像的工作目录;进入到镜像之后默认进入的路径 | WORKDIR centos | VOLUME | 挂载卷;与-v 参数类似 | VOLUME [“第一个卷”, “第二个卷”, “匿名卷”, “宿主机路径:容器内路径”] | EXPOST | 暴露端口;与-p 参数类似 | VOLUME [“第一个卷”, “第二个卷”, “匿名卷”, “宿主机路径:容器内路径”] | CMD | 指定容器启动时候需要运行的命令,会被运行容器时的 命令所取代 | CMD ["ls", "-a"] 运行镜像docker run 1234hijh ls -al 会将CMD中的命令给替换掉 | ENTRYPOINT | 当构建一个被继承dockerfile,此时就会触发 这个命令 | | ONBUILD | 集成dockerfile | CMD ["ls", "-a"] docker run 123gjhg -l 会追加到CMD命令最后 | ENV | 设置环境变量 | |
docker网络
容器间的网络
在搭建docker之后就会有 docker0网卡 veth-pair技术 每启动一个容器都会多出来一个对网卡;该网络是由docker分配的(最多可以分配255*255-2个);用户docker容器内外的通信,也可以与docker之间通信; docker内所有的网络都是虚拟的,虚拟的网络效率更高;
–link 技术
默认的网络
网络模式 | 含义 |
---|
host | 和宿主机共享网络 | bridge | 桥接模式(默认模式) | none | 不配置网络 |
网络规则
- 如果不指定网络会使用默认的bridge作为网络,并通过docker0来分发ip
- 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 强行给一个容器连接到另外一个网络上;该容器拥有双网卡
|