【笔记3】docker的存储、网络和dockerfile

存储

一、数据存储数据卷

容器在运行中可能会有一些数据需要保存起来,或共享给其他程序使用,这个时候需要使用数据卷。
数据卷是一个可供一个或多个容器使用的特殊目录,有以下特性:

  • 数据卷以正常的目录形式存在与宿主机上
  • 数据卷可以在多个容器间共享和重用
  • 数据卷内数据的修改会立刻生效

二、容器的数据持久化

  1. 将本地目录直接挂载到容器内
mkdir -p /data/volume_nginx	# 创建本地目录
docker run -d -v /data/volume_nginx:/usr/share/nginx/html nginx	# 将本地目录挂载到容器的/usr/share/www/html目录中
  1. 创建数据卷
docker volume create testvolume	# 创建一个数据卷,名字是testvolume
  1. 查看数据卷
docker volume ls	# 列出数据卷
docker volume inspect testvolume	# 查看数据卷详细信息
数据卷详细信息如下:
[
    {
        "CreatedAt": "2023-11-29T15:48:03+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/testvolume/_data",
        "Name": "testvolume",
        "Options": {},
        "Scope": "local"
    }
]
  1. 使用数据卷
docker run -d nginx -v testvolume:/usr/share/www/html

网络

一、docker的四种网络模式

网络模式简介
none容器有独立的network namespace,但没有任何后续配置,如配置IP、连接网桥、设置网络转发等
host容器无独立的network namespace,共享宿主机所有网络配置
bridge容器有独立的network namespace,并为其配置IP并连接到docker0网桥上等,默认此模式
container容器无独立的network namespace,共享其他容器的网络配置

可以使用命令查看:

[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
75cfb073ad15        bridge              bridge              local
cb9faa229a9d        host                host                local
e32a2a91de26        none                null                local

二、网络模式的使用方式

  • none
    在这个模式中,容器仅有lo网卡,用于本地回环接口,无其他网络配置
docker run -d --net=none --name nginx_none nginx:1.23.2
  • host
    在这个模式中,容器与宿主机共用网络配置以及端口范围,无需进行任何nat
docker run -d --net=host --name nginx_host nginx:1.23.2
  • bridge
    在这个模式中,docker给容器创建了一个虚拟的网桥docker0,新创建的容器会被自动桥接到docker0上,并配合iptables的nat规则跨主机通信
docker run -d --name nginx_bridge nginx:1.23.2
  • container
    在这个模式中,新创建的容器会和指定的容器共享网络配置以及端口范围
docker run -d --net=container:nginx_bridge --name nginx_container nginx:1.23.2

dockerfile

一、用途

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

二、指令详解

Dockerfile指令说明
FROM指定基础镜像,用于后续的指令构建。
MAINTAINER指定Dockerfile的作者/维护者。(已弃用,推荐使用LABEL指令)
LABEL添加镜像的元数据,使用键值对的形式。
RUN在构建过程中在镜像中执行命令。
CMD指定容器创建时的默认命令。(可以被覆盖)
ENTRYPOINT设置容器创建时的主要命令。(不可被覆盖)
EXPOSE声明容器运行时监听的特定网络端口。
ENV在容器内部设置环境变量。
ADD将文件、目录或远程URL复制到镜像中。
COPY将文件或目录复制到镜像中。
VOLUME为容器创建挂载点或声明卷。
WORKDIR设置后续指令的工作目录。
USER指定后续指令的用户上下文。
ARG定义在构建过程中传递给构建器的变量,可使用 “docker build” 命令设置。
ONBUILD当该镜像被用作另一个构建过程的基础时,添加触发器。
STOPSIGNAL设置发送给容器以退出的系统调用信号。
HEALTHCHECK定义周期性检查容器健康状态的命令。
SHELL覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令。

三、样例

# 1、第一行必须指定 基础镜像信息
FROM ubuntu

# 2、维护者信息
MAINTAINER xxxx@email.com
 
# 3、镜像操作指令
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

# 4、容器启动执行指令
CMD /usr/sbin/nginx
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值