Docker极简教程 【进阶】

简介: Docker极简教程 【进阶】

1. DockerFile创建镜像


创建文件Dockerfile文件,该文件名不可更改


vi Dockerfile


写入文本

FROM alpine:latest
MAINTAINER smilevt
CMD echo "Hello Docker!


保存退出


docker build命令用于使用 Dockerfile 创建镜像


docker build -t hello_docker .


  • -t : 镜像的名字及标签,通常 name:tag 或者 name
  • path : .点代表当前路径下的所有文件。


运行结果:


image.png


查看是否成功创建镜像并运行


image.png


2. Dockerfile安装Nginx


再次新建文件夹并新建Dockerfile文件,写入以下内容;


FROM ubuntu
MAINTAINER anthor
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nginx
COPY index.html /var/www/html
ENTRYPOINT ["usr/sbin/nginx", "-g", "daemon off;"]
EXPOSE 80


简单说一下文本含义:从(FROM)ubuntu容器中运行(RUN)3条命令,第一条是修改archive.ubuntu.com为mirrors.ustc.edu.cn国内镜像,第二、三条是安装nginx,然后复制(COPY)index.html到容器内,提供容器进入点(ENTRYPOINT),使nginx在前台运行,之所以使用数组是为了隔开命令,最后暴露80端口。


接下来新建index.html文件,执行build命令创建镜像:


docker build -t hello-nginx:tag .


image.png


3. Dockerfile命令小结


命令 用途
FROM base image
RUN 执行命令
ADD 添加文件
COPY 拷贝文件
CMD 执行文件
EXPOSE 暴露端口
WORKDIR 指定路径
MAINTAINER 维护者
ENV 设定环境
ENTRYPOINT 容器入口
USER 指定用户
VOLUME mount point

4. 镜像分层

Dockerfile的每一行都会产生一个新层(新ID),比如:


image.png


已经存在image里面的层是只读的,一旦镜像运行为容器之后,就会产生一个新层(RW读写),分层的好处就是多个image可以共享相同的层,减少存储大小。


5. Volume


我们知道,Docker容器中的改动是不会被保存的,为了能够保存(持久化)数据以及共享容器间的数据,Docker提出了Volume的概念。简单来说,Volume就是目录或者文件,它可以绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。 比如在使用数据库时就可以使用Volume。


6. Volume操作


说白了,Volume只是-v参数而已。容器和宿主机目录挂载的三种方式:


第一种方式


运行Nginx容器,-d:后台运行,--name:指定名称nginx,-v /usr/share/nginx/html:运行容器内部用来访问网页的地址,最后的nginx是镜像名。


docker run -d --name nginx -v /usr/share/nginx/html nginx


获取容器/镜像的元数据


docker inspect nginx

可以看到宿主机目录Source和容器内目录Destination:


image.png


注意:如果是mac,则该路径不是mac上的实际路径,因为mac上运行docker是还有一层虚拟层,这是docker虚拟层中的路径,可以在docker中访问到


第二种方式


在启动Nginx容器时使用-v参数挂载本地目录到容器目录


docker run -p 8080:80 --name mynginx -v $PWD:/usr/share/nginx/html -d nginx


这句命令使用PWD环境变量(该变量始终指向当前目录)将当前目录挂载到容

器/usr/share/nginx/html目录。


我们访问主机8080端口


image.png


第三种方式


使用 docker create 创建一个新的容器但不启动它:


docker create -v $PWD/data:/var/mydata --name data_container ubuntu
  • 宿主机目录:$PWD/data
  • docker目录:/var/mydata
  • 容器名:data_container
  • 基础镜像:ubuntu


启动 ubuntu 容器镜像(默认ubuntu基础镜像没有服务):


docker run -it --volumes-from data_container ubuntu /bin/bash



  • -it: 以交互模式运行容器,并为容器重新分配一个伪输入终端
  • --volumes-from data_container:以另外一个容器挂载
  • 最后在容器内执行/bin/bash命令


进入到容器控制台后输入mount,查看挂载:


image.png


我们在/var/mydata目录下新建whatever.txt文件后退出,进入data目录查看,可以看到刚刚新建的txt文件。






目录
相关文章
|
4月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
1931 4
|
4月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
3286 8
|
7月前
|
文件存储 数据安全/隐私保护 开发者
群晖NAS Docker镜像源加速配置教程
本教程介绍了群晖NAS用户如何通过配置轩辕镜像加速服务提升Docker镜像拉取速度。内容包括配置前准备、详细设置步骤及日常使用说明,帮助用户快速完成配置并享受高效稳定的镜像下载体验。
4813 60
|
6月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
450 16
|
运维 关系型数据库 MySQL
宝塔面板 Docker 镜像加速教程
本文介绍了如何为宝塔面板中的 Docker 配置轩辕镜像加速。内容包括:安装 Docker 管理器、获取镜像加速地址、配置加速 URL 以及验证设置等步骤。通过使用免费版或专业版加速地址(如 docker.xuanyuan.me 或 xuanyuan.cloud),可显著提升镜像拉取速度。同时,还提供了日常使用方法和注意事项,帮助用户顺利完成配置并保障 Docker 服务稳定运行。
495 0
|
7月前
|
NoSQL Redis Docker
使用Docker Compose工具进行容器编排的教程
以上就是使用Docker Compose进行容器编排的基础操作。这能帮你更有效地在本地或者在服务器上部署和管理多容器应用。
657 11
|
机器人 网络安全 数据安全/隐私保护
autMan奥特曼机器人-对接Docker版本NTQQ详细教程
本文介绍了如何在服务器上搭建NTQQ机器人,通过官方NTQQ对接各框架,实现QQ登录的稳定运行。文章提到了需要准备一台服务器和相应的软件,并详细描述了通过SSH链接服务器、创建文件夹和配置文件、编辑配置文件地址端口、运行容器等步骤。同时,文章还介绍了VNC连接的使用和配置,以及使用watchtower进行NTQQ的更新。文章总结起来就是在服务器上搭建NTQQ机器人,实现QQ登录的稳定性和自动登录功能,同时提供了更新和维护的方法。
1143 3
autMan奥特曼机器人-对接Docker版本NTQQ详细教程
|
8月前
|
消息中间件 监控 Docker
Docker环境下快速部署RabbitMQ教程。
就这样,你成功地用魔法召唤出了RabbitMQ,还把它和你的应用程序连接了起来。现在,消息会像小溪流水一样,在你的系统中自由流淌。别忘了,兔子们不喜欢孤独,他们需要你细心的关怀,不时地监控它们,确保他们的世界运转得井井有条。
546 18
|
8月前
|
消息中间件 监控 Docker
Docker环境下快速部署RabbitMQ教程。
至此,这次神秘而简明的部署之旅告一段落。祝你在利用RabbitMQ打造消息队列时,一切顺风顺水!
416 8