docker pull 명령은 애플리케이션 이미지를 가져오는 데 사용되며, docker pull nginx
명령은 nginx 이미지의 최신 버전을 가져오는 데 사용됩니다. 다음은 이미지 가져오기 프로세스의 응답 결과입니다. docker pull nginx
命令用于拉取最新版本的nginx镜像。下文为拉取镜像过程的响应结果:
# docker pull nginx Using default tag: latest latest: Pulling from library/nginx c229119241af: Pull complete 2215908dc0a2: Pull complete 08c3cb2073f1: Pull complete 18f38162c0ce: Pull complete 10e2168f148a: Pull complete c4ffe9532b5f: Pull complete Digest: sha256:2275af0f20d71b293916f1958f8497f987b8d8fd8113df54635f2a5915002bf1 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest
从上文我们可以看出nginx镜像是从docker.io
这个网址拉取下来的。
使用docker images
命令可以查看当前操作系统中下载了哪些镜像文件。
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 12766a6745ee 33 hours ago 142MB hello-world latest feb5d9fea6a5 6 months ago 13.3kB
REPOSITORY镜像仓库及镜像名称,如果不显示镜像仓库,默认就是docker.io
TAG镜像的版本或者是里程碑标签,latest表示最新版本
IMAGE ID 镜像的唯一标识
CREATED 这个镜像被创建的时间
SIZE表示镜像文件的大小
通过docker run
命令启动一个容器,容器名称为nginx-zimug。
# docker run -d --name nginx-zimug -p 80:80 nginx 81bb1211144bc0991a789f860458548643c60b5459466c14d0604be9a4ccbfd7
-d
表示容器在后台运行
--name
为容器起一个名字
-p
端口映射,格式为宿主机端口:容器端口
,上文中含义是将容器中的端口80映射到宿主机的端口80,对外提供访问服务。最后一个字段为镜像名称
当浏览器通过HTTP协议访问宿主机的80端口时,可以省略端口号。得到的访问结果如下,说明我们的nginx服务已经启动成功了。
通过docker ps
可以查看正在运行中的容器,如下所示:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 81bb1211144b nginx "/docker-entrypoint.…" 11 minutes ago Up 11 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp nginx-zimug
首先明确的是容器中的文件内容是可以被修改的,但是一旦容器重启,所有写入到容器中的,针对数据文件、配置文件的修改都将丢失。所以为了保存容器的运行状态,执行结果,我们需要将容器内的一些重要的数据文件、日志文件、配置文件映射到宿主机上。
以nginx为例,nginx有三个重要的文件目录:
容器中路径 | 宿主机中自定义映射路径 | |
---|---|---|
存储网站网页的目录 | /usr/share/nginx/html | /root/nginx/html |
nginx配置文件目录 | /etc/nginx/nginx.conf | /root/nginx/conf/nginx.conf |
日志目录 | /var/log/nginx | /root/nginx/logs |
在宿主机中新建文件目录
mkdir -p /root/nginx/logs /root/nginx/html /root/nginx/conf;
将容器中的文件copy到宿主机中
将nginx配置文件copy到宿主机中
docker cp nginx-zimug:/etc/nginx/nginx.conf /root/nginx/conf;
将一个模拟的html文件放入html目录
将下面的文件保存为index.html放入宿主机的/root/nginx/html
目录,因为存在映射关系,实际上也是放入了容器的/usr/share/nginx/html
目录。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>使用docker搭建nginx web服务</title> </head> <body> <h2>访问成功</h2> <p>厉害了!</p> </body> </html>
-v
参数表达了宿主机文件与容器中文件的映射关系,格式为-v 宿主机目录:容器文件系统目录
。启动一个新的容器,容器的名字叫做nginx-prod
docker run -d -p 80:80 \ --name nginx-prod \ -v /root/nginx/html:/usr/share/nginx/html \ -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /root/nginx/logs:/var/log/nginx nginx
在启动新容器之前,将nginx-zimug旧的容器删掉。如果不删除旧的容器,新容器的端口与旧容器端口会发生冲突。使用如下命令删除容器:
docker stop nginx-zimug; docker rm nginx-zimug;
执行上面的docker run
rrreee
docker.io
URL에서 가져온 것을 알 수 있습니다. docker Images
명령을 사용하여 현재 운영 체제에 다운로드된 이미지 파일을 확인하세요.
REPOSITORY 이미지 웨어하우스 및 이미지 이름. 이미지 웨어하우스가 표시되지 않는 경우 기본값은 docker.io
TAG 이미지의 버전 또는 마일스톤 태그, 최신은 최신 버전을 의미합니다
를 통해 컨테이너를 시작합니다. docker run
명령이고 컨테이너 이름은 nginx-zimug 입니다. 🎜rrreee-d
는 컨테이너가 백그라운드에서 실행 중임을 의미합니다🎜--name
컨테이너에 이름을 지정하세요🎜-p
포트 매핑, 형식은 호스트 포트:컨테이너 포트
, 위의 의미는 다음과 같습니다. 컨테이너를 포트 80에 넣는 것은 호스트의 포트 80에 매핑되어 외부 액세스 서비스를 제공합니다. 마지막 필드는 이미지 이름입니다🎜docker ps
를 통해 아래와 같이 실행 중인 컨테이너를 볼 수 있습니다. 🎜rrreee🎜3.파일 매핑🎜🎜우선 컨테이너의 파일 내용을 수정할 수 있다는 점은 분명하지만컨테이너를 다시 시작한 후에는 컨테이너에 기록된 데이터 파일 및 구성 파일에 대한 모든 수정 사항이 손실됩니다. 따라서 컨테이너의 실행 상태와 실행 결과를 저장하기 위해서는 컨테이너에 있는 일부 중요한 데이터 파일, 로그 파일, 구성 파일을 호스트에 매핑해야 합니다. 컨테이너의 경로 | 호스트 시스템의 사용자 정의 매핑 경로||
---|---|---|
웹사이트 페이지 저장을 위한 디렉터리 | /usr/share/nginx/ html | /root/nginx/html |
nginx 구성 파일 디렉터리 | /etc/nginx/nginx.conf | /root/nginx/conf/nginx.conf |
로그 디렉터리 | /var/log/nginx | / root/nginx/logs |
/root/nginx/html
디렉토리에 배치됩니다. 매핑 관계로 인해 실제로는 컨테이너의 /usr/share/nginx/에 배치됩니다. html
목차. 🎜rrreee🎜4. 컨테이너 서비스를 다시 시작하세요🎜🎜 -v
매개변수는 호스트 파일과 컨테이너 내 파일 간의 매핑 관계를 표현합니다. 형식은 -v 호스트 디렉터리: 컨테이너 파일 시스템입니다. 디렉토리. 새 컨테이너를 시작합니다. 컨테이너 이름은 nginx-prod🎜rrreee🎜입니다. 새 컨테이너를 시작하기 전에 이전 nginx-zimug 컨테이너를 삭제하세요. 이전 컨테이너가 삭제되지 않으면 새 컨테이너의 포트가 이전 컨테이너의 포트와 충돌하게 됩니다. 컨테이너를 삭제하려면 다음 명령을 사용하세요. 🎜rrreee🎜위의 <code>docker run
명령을 실행하여 새 컨테이너를 시작하세요. 구동 후 브라우저를 통해 호스트의 포트 80에 접속하면 아래와 같이 응답 결과가 나오며, 이는 nginx가 정상적으로 웹 서비스를 제공하고 있음을 증명합니다. 🎜🎜🎜🎜🎜동시에 호스트 시스템에서 nginx 구성을 수정하고 런타임 로그 파일을 볼 수 있습니다. 구성 파일을 변경하면 호스트와 컨테이너의 구성 파일 간에 매핑 관계가 있으므로 컨테이너에서 실행되는 nginx 서비스에 영향을 미칩니다. 🎜🎜🎜🎜위 내용은 docker를 사용하여 nginx에서 제공하는 웹 서비스를 설치하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!