1.安装不在介绍
2.基本概念
类似虚拟机,比虚拟机耗费更小的资源。
镜像:就是模板,类似JAVA 类。
容器:对象,类似 JAVA 对象。
3.相关命令总结 测试
#启动docker
systemctl start docker
#重启docker
systemctl restart docker
#查看命令 列出所有的命令
docker --help
#查询具体一个命令的使用 如
docker rm --help
#其他具体命令介绍
#1.查看本地已安装镜像
docker images
#2.查看本地已运行的容器
docker ps
#3运行容器
docker run <相关参数> <镜像 ID> <初始命令>
其中,相关参数包括:
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
-d: 让容器在后台运行(和 -i相反)格式 :宿主端口:容器端口。
-P: 将容器内部使用的网络端口映射到我们使用的主机上。
例:
docker run -i -t -p 6000:6000 -v /root/project/:/root/porject 25c5298b1a36
#4查看端口映射情况
docker port 25c5298b1a36
#5进入一个容器
docker exec -it 8465920bcaa9 bin/bash
#6停止容器
docker stop 25c5298b1a36
4. 关于docker镜像
#查找镜像
docker search 名称
#安装镜像,拉取仓库中已有的镜像 mysql http 等都有现成的
docker pull 名称:版本号
#自制镜像
概念:
1.通过编写Dockerfile配置文件 实现自定义镜像构建。相关的语法可参考官网。
基本命令介绍:
From :指定新镜像的基础镜像。
MAINTAINER :指明该镜像的作者和其电子邮件
RUN :在新镜像内部执行的命令,比如安装一些软件、配置一些基础环境,可使用\来换行。
也可以使用exec格式RUN ["executable", "param1", "param2"]的命令
COPY :将主机的文件复制到镜像内,如果目的位置不存在,Docker会自动创建所有需要的目录结构
ADD :将主机的文件复制到镜像中,跟COPY一样,限制条件和使用方式都一样
EXPOSE :暴露镜像的端口供主机做映射,启动镜像时,使用-P参数来讲镜像端口与宿主机的随机端口做映射,
可指定多个。
WORKDIR :指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
ONBUILD :当一个包含ONBUILD命令的镜像被用作其他镜像的基础镜像时(比如用户的镜像需要从某为准备好的位置添加源代码,或者用户需要执行特定于构建镜像的环境的构建脚本),该命令就会执行
USER :指定该镜像以什么样的用户去执行
VOLUME :用来向基于镜像创建的容器添加卷。比如你可以将mongodb镜像中存储数据的data文件指定为主机
的 某个文件。(容器内部建议不要存储任何数据)
CMD :容器启动时需要执行的命令 运行docker run 会被覆盖
ENTRYPOINT :CMD一样,不会被docker run覆盖
示例:
创建Dockerfile文件
#指定父镜像 你本地安装了此镜像
FROM ubuntu
#指定作者和QQ
MAINTAINER tbpworld xxxx@qq.com
#工作目录
WORKDIR /usr/local/docker
#添加文件
ADD temp.zip ./add/
COPY temp.zip ./copy/
#开放端口
EXPOSE 22
#运行 创建用户
RUN useradd tbpworld
#指定用户
USER tbpworld
ENTRYPOINT ["/bin/bash"]
运行:
5.关于docker网络
Bridge模式
默认方式,有自己的IP 端口。使用-p 宿主端口:容器端口 只是做了端口的转发。
HOST 模式 --net=host,无自己得IP 端口,使用宿主机的ip和端口。
container模式
--net=container:容器名称,使用指定已存在的容器的ip和端口
none模式
--net=none Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。
6.相关指令测试
#查看目前存在的网络模式 默认三种
docker network ls
#创建新的网络模式,
docker network create -d bridge --ip-range=192.168.1.0/24 --gateway=192.168.1.1 --subnet=192.168.1.0/24 mynet
#创建容器指定IP 使用此种方式可实现容器间 通过ip通信。
docker run -it --network=mynet --ip=192.168.1.3
#指定DNS名称 可通过DNS通信,后期指定IP
docker run -it --network=mynet --name box1
#容器和外部通信
1.转发方式
-p 映射 不太方便
2.其他
需要第三方的东西安装配置,以后用到再说吧,感觉有点复杂。