Docker

本文深入探讨Docker的核心概念,包括镜像、容器与仓库之间的关系,并介绍如何使用Docker进行部署,涵盖常用命令及Dockerfile的编写技巧。


Docker为什么出现

环境问题:在我电脑上能运行,在你那就不行。

docker怎么解决:将配置好的环境 (jar +(Redis MySQL jdk) ) 打包好。

docker官网


Docker中的名词

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

镜像(image):类似一个模板,可以通过这个模板创建容器。

容器(container):用镜像安装包安装容器,理解为小的linux系统,容器之间互相隔离。

仓库(repository):存放镜像的地方。远程,需要设置国内仓库。

Docker是一个Client-Server结构系统的守护进程。

Docker比虚拟机更少的抽象层,docker利用的是宿主机的内核。

UnionFS联合文件系统:分层、轻量、 高性能。

Docker常用命令

官网所有操作

  • docker images:查看安装的镜像。
  • docker ps :查看正在运行的容器 , 加上-a更好。
  • docker start:运行已经安装的容器。
  • docker stop:停止已经运行的容器。
  • docker search xx:搜索镜像。
  • docker pull xx:下载镜像。
  • docker rm :卸载安装的容器。
  • docker rmi :删除镜像。
  • docker run 【】image:新建容器并启动。
    • –name 设置容器名,用来区分容器
    • -d 后台启动。
    • -p [主机端口:容器端口] 指定容器端口。
    • -v 挂载容器外部配置文件,因为修改容器内配置文件十分麻烦,需要进入 等。
  • docker exec -it xx bash:进入正在运行的容器,容器内目录结构和linux相似。
  • exit:推出容器。
  • docker logs:查看日志
  • docker top:查看容器详细信息。
  • docker cp :从容器中拷贝文件到虚拟机。
  • docker stats:查看cpu内存。
  • docker commit:提交容器成为一个新的镜像。
  • docker volume ls: 查看挂载情况。
  • docker inspect : 查看容器信息,json格式,信息全面。
  • docker history : 镜像构建历史。

Docker 部署的过程

以nginx为例

  1. docker search nginx
  2. docker pull nginx
  3. docker run -d --name nginx01 -p 3344:80。

容器数据卷

容器之间数据共享的技术。容器持久化和同步操作。

目录从容器挂载到linux上。

docker run -v 主机目录:容器目录。双向绑定。可以+ :ro(容器只读) rw(默认)设定读写权限。

容器删除后,本地挂载的不会删除,从而实现持久化。

匿名挂载:挂载的时候只写了容器目录,没写linux下的目录。
具名挂载:写了。

Dockerfile

用来创建镜像的脚本文件。

指令:

  • FROM: 基础镜像。scratch
  • MAINTAINER:作者。
  • RUN:镜像构建需要运行的命令。
  • ADD: 搭建tomcat等压缩包附加条件。
  • WORKDIR:工作目录。
  • VOLUME:挂载目录。
  • EXPOSE:暴露端口。
  • CMD:指定容器运行的命令。只有最后一个生效。
  • ENTRYPOINT:指定容器运行命令,可以追加。
  • ONBUILD:触发指令。
  • ENV:环境变量。

创建安装了vim指令centos的镜像。

FROM centos
MAINTAINER yao<232323@qq.com>

ENV MYPATH /user/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80
CMD echo $MYPATH
CMD echo "------end------"
CMD /bin/bash

docker build -f dockerfile文件 -t 镜像名:[tag]

springboot编写一个hellocontroller打包镜像。

FROM java:8

COPY *.jar /app.jar

CMD ["---server.port=8080---"]

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]

docker build -t hellodk .

Docker流程回顾

docker流程

docker会给每个容器分配ip地址。linux可以ping同docker容器内部ip。桥接。


总结

docker主要需要了解镜像,容器,仓库这三个概念以及关系,仓库好比应用市场,镜像就是安装包,容器就是安装好的app,还有一些基本命令,挂载的使用对于修改配置文件等十分友好。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值