使用Docker

Docker是一个开源应用容器引擎,允许开发者将应用及其依赖打包成镜像并在不同系统上运行。文章介绍了如何查看和管理镜像,如`dockerimages`、`dockerpull`等,以及容器的创建、运行、停止等操作,如`dockerrun`、`dockerstop`。此外,还讲解了数据卷的概念,用于持久化容器中的数据,避免删除镜像时丢失数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初识Docker

Docker是一个开源的应用容器引擎,让开发者 打包他们的应用及依赖包到一个可移植的镜像(images)中,然后发布到任何操作系统上。

容器是完全使用沙箱(sandbox)机制,相互之间不会有任何接口。

镜像(images)和容器(container)是Docker中两个重要的概念:

镜像(images):Docker将应用程序及其所需的依赖,函数库,环境、配置等文件打包在一起。

容器(container):镜像中的应用程序运行之后形成的进程就是一个容器,Docker会给容器做隔离,对外不可见。

镜像操作

  • 镜像名称的组成:[repository]:[tag] 例如mysql:5.7
  • 不加tag默认最新版本,repository表示镜像名称

常用的镜像命令

docker images:查看镜像

docker rmi  images:删除镜像

docker push:推送到镜像服务器

docker  pull:从服务器拉取镜像

docker save:保存镜像为压缩包

docker load:加载压缩包为镜像

从DockerHub中拉取一个Nginx镜像并查看

先查看已安装的镜像

docker images

拉取自己需要的镜像:

docker pull nginx

拉取完成之后查看已有的镜像:

docker images

保存镜像:

docker save -o 保存文件的名称 镜像名称
docker save -o nginx.tar nginx

加载镜像:

先删除本地镜像:

docker rmi nginx

然后再加载:

docker load -i nginx.tar
加载完成之后再查看镜像:
docker images

就会显示nginx这个镜像。

容器操作

创建并运行一个容器:docker run

停止一个正在运行的容器:docker stop

让停止的容器再次运行:docker start

重新启动容器:docker restart

删除一个容器:docker rm

暂停一个运行的容器:docker pause

让一个容器从暂停状态恢复运行:docker unpause

创建并运行Nginx的容器

docker run --name containername -p 8080:80 -d nginx

参数说明:

docker run:创建并运行一个容器

--name:指定容器的名字

-p:将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口

-d:后台运行容器

nginx:镜像名称

默认情况下,容器是隔离环境,我们直接访问宿主机的80端口,肯定访问不到容器

中的nginx。现在,将容器的80与宿主机的80关联起来,当我们访问宿主机的80端口时,就会被

映射到容器的80,这样就能访问到nginx了。

运行nginx容器:

docker run --name ngi -p 8080:80 -d nginx

查看运行的容器:

docker ps

打开浏览器输入docker宿主机的ip和容器的映射端口,我是:118.178.197.65:8080,就可以看到如下界面

查看容器日志:

docker logs 容器名称
docker logs -f 容器名称  (添加-f可以持续查看日志)

查看容器状态:

docker ps
docker ps -a (查看所有容器状态,包括没有运行的)

数据卷

因为镜像中存储了应用程序的依赖,函数库、环境和配置等,一旦删除镜像这些数据也就都被删除了,数据卷就能解决这个问题。

数据卷是一个虚拟目录,指向宿主机文件系统中的某个目录。完成数据挂载后,对容器的一切操作都会作用在数据卷对应的宿主机目录了。

数据卷的作用

将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全。

数据卷操作命令

创建数据卷:docker volume create 数据卷名称

查看数据卷详细信息,包括关联的宿主机目录位置:docker volume inspect 数据卷名称

列出所有数据卷:docker volume ls

删除一个或多个指定的数据卷:docker volume rm 数据卷名称

创建一个数据卷,并查看数据卷在宿主机的目录位置

创建数据卷:

docker volume create html

查看所有数据卷:

docker volume ls

查看数据卷详细信息:

docker volume inspect html

可以看到,我们创建的html这个数据卷关联的宿主机目录为 /var/lib/docker/volumes/html/_data 目录。

挂载数据卷

在创建容器时可以通过-v参数挂载一个数据卷到容器内目录,代码如下:

docker run --name ng -v html:/usr/share/nginx/html -p 8080:80 -d nginx 

参数解析:

-v html:/usr/share/nginx/html:把html这个数据卷挂载到容器内的这个/usr/share/nginx/html目录中

nginx默认网页在nginx中的存储位置就是/usr/share/nginx/html目录

挂载后,宿主机的/var/lib/docker/volumes/html/_data目录就是nginx的网页目录了,在这个目录中创建网页就可用直接访问了。创建一个test.html文件,里面写html基本结构,主体写hello docker,在浏览器中输入宿主机ip地址环绕8080端口和test.html就能看到如下页面:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值