存储
一、数据存储数据卷
容器在运行中可能会有一些数据需要保存起来,或共享给其他程序使用,这个时候需要使用数据卷。
数据卷是一个可供一个或多个容器使用的特殊目录,有以下特性:
- 数据卷以正常的目录形式存在与宿主机上
- 数据卷可以在多个容器间共享和重用
- 数据卷内数据的修改会立刻生效
二、容器的数据持久化
- 将本地目录直接挂载到容器内
mkdir -p /data/volume_nginx # 创建本地目录
docker run -d -v /data/volume_nginx:/usr/share/nginx/html nginx # 将本地目录挂载到容器的/usr/share/www/html目录中
- 创建数据卷
docker volume create testvolume # 创建一个数据卷,名字是testvolume
- 查看数据卷
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"
}
]
- 使用数据卷
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