首先编写Dockerfile文件
FROM centos
# 维护者
MAINTAINER xxx
#解决centos8 yum失败
RUN sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
RUN sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
#安装nginx
RUN yum install -y nginx
# 挂载卷,测试用例(这里的挂载卷,不可以指定本机的目录,不够灵活,一般会在 启动容器时通过 -v 参数指定挂载卷,或在docker-compose.yaml文件中指定,都可以指定本地目录)
VOLUME ["/data"]
#nginx简单配置
RUN echo " \
user nginx; \
worker_processes auto; \
error_log /var/log/nginx/error.log; \
pid /run/nginx.pid; \
include /usr/share/nginx/modules/*.conf; \
events { \
worker_connections 1024; \
} \
http { \
sendfile on; \
tcp_nopush on; \
tcp_nodelay on; \
keepalive_timeout 65; \
types_hash_max_size 2048; \
include /etc/nginx/mime.types; \
default_type application/octet-stream; \
include /etc/nginx/conf.d/*.conf; \
include /data/*.conf; \
} " > /etc/nginx/nginx.conf
WORKDIR /hello
RUN cd /hello && echo "hello docker" > index.html
RUN echo " \
server { \
listen 80; \
server_name _; \
location / { \
root /hello; \
} \
} " > /etc/nginx/conf.d/hello.conf
EXPOSE 80
docker build 命令用于使用 Dockerfile 创建镜像
语法
docker build [OPTIONS] PATH | URL | - OPTIONS说明:
-
--build-arg=[] :设置镜像创建时的变量;
-
--cpu-shares :设置 cpu 使用权重;
-
--cpu-period :限制 CPU CFS周期;
-
--cpu-quota :限制 CPU CFS配额;
-
--cpuset-cpus :指定使用的CPU id;
-
--cpuset-mems :指定使用的内存 id;
-
--disable-content-trust :忽略校验,默认开启;
-
-f :指定要使用的Dockerfile路径;
-
--force-rm :设置镜像过程中删除中间容器;
-
--isolation :使用容器隔离技术;
-
--label=[] :设置镜像使用的元数据;
-
-m :设置内存最大值;
-
--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
-
--no-cache :创建镜像的过程不使用缓存;
-
--pull :尝试去更新镜像的新版本;
-
--quiet, -q :安静模式,成功后只输出镜像 ID;
-
--rm :设置镜像成功后删除中间容器;
-
--shm-size :设置/dev/shm的大小,默认值是64M;
-
--ulimit :Ulimit配置。
-
--squash :将 Dockerfile 中所有的操作压缩为一层。
-
--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
-
--network: 默认 default。在构建期间设置RUN指令的网络模式
#注意需要进入Dockerfile所在目录,且Dockerfile文件首字母需要大写
docker build -t centos_nginx:v1 .
#如果不进入Dockerfile所在目录,则需要指定目录
docker build -t centos_nginx:v1 /root/Dockerfile
执行成功会显示生成成功
使用docker ps -l 查看容器
启动容器
#将容器的 80 端口映射到主机的 80 端口
docker run -d -p80:80 centos_nginx:v1 /usr/sbin/init
进入容器 docker exec
#语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
#OPTIONS说明:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
docker exec -ti 21f595de4ab7 bash
启动nginx
访问127.0.0.1