Docker是在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等,极大的简化了容器的创建和维护。使得docker技术比虚拟机更为轻便、快捷。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eGnI3ogZ-1602224518932)(C:/Users/free/Desktop/面试/interviewmd/assets/post/others/docker.png)]
Docker 是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问。
Docker相对于VM有更少的抽象层。他利用的是宿主机的内核,VM需要guest OS
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VdSEsPG1-1602224518935)(C:/Users/free/Desktop/面试/interviewmd/assets/post/others/vmdocker.png)]
docker version
docker info // 显示docker系统信息,包括镜像和容器的数量
docker 命令 --help // 帮助命令
docker images // 查看主机上的所有镜像
docker search image-name // 搜索远程仓库镜像
docker pull image-name[:tag] // 下载远程镜像
docker rmi -f image-name/image-id // 删除指定镜像
docker rmi -f $(docker images -aq) // 删除所有镜像
docker pull image-name // 新建容器
docker run [可选参数] image // 启动一个全新的容器
docker run -d --name nginx01 -p 3344:80 nginx
-d // 后台运行
--name // 名字
-p // 外部端口映射,使用主机的3344端口映射到容器内的80端口
docker ps // 列出运行中的容器
-a // 列出所有运行过的容器
exit // 退出容器
ctrl+p+q // 不停止容器退出
docker attach container-id // 进入一个正在运行的容器终端,不会开启一个新的终端
docker exec -it container-id /bin/bash // 进入容器并开启一个新的终端
docker start 容器id // 启动一个停止的容器
docker restart 容器id // 重启
docker stop 容器id // 停止当前容器
docker kill 容器id // 强制停止当前容器
docker run -d centos // 后台启动
// docker容器使用后台运行,就必须有一个前台进程,如果没有应用,docker就会自动停止
docker logs // 查看日志
-tf // 显示日志
--tail number // 要显示的日志条数
docker inspect container-id // 查看容器信息
docker cp container-id:path dstpath
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需要的所有内容,包括代码、运行时库、环境变量和配置文件等。
所有的应用,直接打包docker镜像,可以直接跑起来。
容器之间的一个数据共享的技术,docker容器产生的数据,同步到本地。
目录的挂载,将我们容器内的目录,挂载到linux上面。
容器数据卷技术是为了容器的持久化和同步操作。容器间数据也是可以共享的。
创建容器时直接使用命令来挂载 -v
docker run -it -v 主机目录:容器内目录
-v 卷名:容器内路径
-v 宿主机路径:容器内路径
-v :容器内路径:ro/rw
,ro表示只读,rw表示可读可写,是针对容器内的文件dockerfile就是用来构建docker镜像的构建文件,命令脚本。
通过这个脚本可以生成一个镜像。镜像是一层一层的,那么脚本也是一个一个的命令,一个命令就是一层。
FROM centos
VOLUME ["volume01", "volume02"]
CMD echo "--end--"
CMD /bin/bash
// 每一句就是一层
可以使用docker inspect container-id
查看卷挂载的目录
Dockerfile是面向开发的,以后发布项目,做镜像,就需要编写dockerfile文件。
FROM # 基础镜像,一切从这里开始构建
MAINTAIN # 镜像是谁写的,一般为名字+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 向里面添加内容,比如tomcat等
WORKDIR # 镜像的工作目录
VOLUME # 挂载卷目录
EXPOSE # 指定暴露的端口
RUN # 开始运行
CMD # 指定启动的时候要运行的命令,只有最后一个会生效,可以被替代,不能追加命令
ENTRYPOINT # 指定启动的时候要运行的命令,可以追加命令
ONBUILD # 当构建一个被继承dockerfile时候会运行这个指令。是一个触发指令
COPY # 类似于COPY,将文件拷贝到镜像
ENV # 构建的时候设置环境变量
例子:
FROM centos
# 设置维护者名称
MAINTAINER elbow95
# 设置环境变量
ENV MYPATH /usr/local
# 设置工作目录
WORKDIR $MYPATH
# 安装软件
RUN yum -y install vim
RUN yum -y install net-tools
# 暴露端口
EXPOSE 80
CMD echo