Docker安装镜像,并运行成为容器

本文介绍Docker如何解决部署依赖冲突的问题,通过容器化技术实现应用及其依赖的完整打包,并详解Docker镜像与容器的概念及操作命令。此外,还提供了镜像下载、保存与容器运行的具体步骤。

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

1.Docker作用

一个项目中,部署时需要依赖于node.js、Redis、RabbitMQ、MySQL等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。

而Docker确巧妙的解决了这些问题,

Docker为了解决依赖的兼容问题的,采用了两个手段:

  • 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包

  • 将每个应用放到一个隔离容器去运行,避免互相干扰

2.常用操作命令及概念

镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。(一般是一个.tar 或者.zip结尾的压缩包)

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

镜像,就是把一个应用在硬盘上的文件、及其运行环境、部分系统函数库文件一起打包形成的文件包。这个文件包是只读的。

容器,就是将这些文件中编写的程序、函数加载到内存中允许,形成进程,只不过要隔离起来。因此一个镜像可以启动多次,形成多个容器进程。

下载了一个QQ,如果我们将QQ在磁盘上的运行文件及其运行的操作系统依赖打包,形成QQ镜像。然后你可以启动多次,双开、甚至三开QQ,跟多个妹子聊天。

镜像运行起来就是容器,一个镜像可以运行多个容器

DockerHub

https://hub.docker.com/

是官方的下载镜像的地址。

1.下载镜像

1)首先去镜像仓库搜索nginx镜像,比如DockerHub:

2)根据查看到的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx

3)通过命令:docker images 查看拉取到的镜像

2.导出、导入镜像 

 将nginx容器整理为镜像,并打包镜像为.tar 文件,就可以在其他机器上运行这个镜像了。

为了验证导入的镜像确实是我自己的,我把nginx的配置文件中的端口号修改为了5000,以和官方镜像做区别。

1)将nginx容器整理为镜像

运行命令:

docker commit nginx5000 nginx5000images

-- nginx5000 容器名
-- nginx5000images 新的镜像名

结果如图:会新增一个镜像 

2)打包新镜像为.tar 文件
docker save -o nginx5000images.tar nginx5000images

-- nginx5000images.tar   镜像打包的文件
-- nginx5000images       镜像名称

在命令行当前位置,会多一个nginx5000images.tar文件:

3)将.tar 文件加载到docker成为镜像

   如果在本地测试,需要先把旧的那个镜像删掉。

docker rmi nginx:latest

运行命令,加载本地文件:

docker load -i nginx5000images.tar

结果:

4)根据镜像新建容器并启动

注意:如果有端口号映射,一定要在这一步,否则后面不能修改了

docker run -d -p 5000:5000 --name nginx5000containers nginx5000images
--  -p: 将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
--  -d:后台运行容器
-- nginx5000containers 容器名称
-- nginx5000images 镜像名称

可以在浏览器输入localhost:5000 查看是否容器的nginx启动成功

5)容器启动和停止命令
docker start nginx5000containers

docker stop nginx5000containers

三。docker  常用命令

查看当前运行的容器        docker ps

进入容器内部             docker exec -it nginx5000containers bash
                        -- nginx5000containers  容器名称或id

 3.导出和导入多个容器

recovery下有五个容器,且有一定的依赖关系,这种需要借助docker-compose 导出

1》检查docker-compose
docker-compose --version

有结果就没问题

2》将容器整理为新镜像
docker commit ragflow-server new-ragflow-server-images
docker commit ragflow-mysql new-ragflow-mysql-images
docker commit ragflow-minio new-ragflow-minio-images
docker commit ragflow-redis  new-ragflow-redis-images
docker commit ragflow-es-01 new-ragflow-es-01-images
3》将新镜像打包为tar文件
docker save -o new-ragflow-server-images.tar new-ragflow-server-images
docker save -o new-ragflow-mysql-images.tar new-ragflow-mysql-images
docker save -o new-ragflow-minio-images.tar new-ragflow-minio-images
docker save -o new-ragflow-redis-images.tar new-ragflow-redis-images
docker save -o new-ragflow-es-01-images.tar new-ragflow-es-01-images

这一步可能会卡住,如果时间长了还不行,按一下enter

4》复制文件

查看这个集合的文件夹,将所有文件复制,和上面的tar 文件一起传输到新机器上。

 

5》在新电脑上 新建docker镜像
docker load -i new-ragflow-server-images.tar
docker load -i new-ragflow-mysql-images.tar
docker load -i new-ragflow-minio-images.tar
docker load -i new-ragflow-redis-images.tar
docker load -i new-ragflow-es-01-images.tar
6》在新电脑上根据镜像新建容器并启动 (注意!!一定要在上面第四步 放置那些文件的地方启动cmd)
docker compose -f ./docker-compose.yml up -d

访问localhost:80 可以看到页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值