[docker]docker 安装及构建流程
docker 安装及构建流程
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
docker的使用极大地简化了开发部署流程,编写一次代码,便可以在不同的机器上完美运行。
0. 基本概念
- 镜像(image)
如果把docker比喻为虚拟机,那么镜像即为虚拟机中的iso文件。Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
- 容器(container)
如果把镜像比为面向对象语言中的一个类,那么容器即为类的一个实例。镜像只是一堆可读的系统文件,容器是在其上层添加了可写层的读写文件,只有镜像实例化成容器才是可运行的。
- 仓库(repository)
镜像仓库的概念与github是类似的,是存放各种镜像的地方。当我们执行docker pull image的时候,docker默认是从dockerhub上去查找我们所需要的镜像文件,然后执行下载操作。这类的镜像仓库就是docker默认的公共仓库,所有人都可以直接查看或下载、使用。有时为了内部分享使用,通常在本地搭建离线的私有化镜像仓库。
1. 下载安装docker
- 脚本安装
docker官方提供了十分便利的脚本,在有网环境下,只需运行以下代码便可以安装,使用aliyun国内源以加快下载速度。
curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh --mirror Aliyun systemctl start docker systemctl enable docker
- apt/yum源下载
也可配置软件源进行安装:
deb:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
yum:
curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo > /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce
- 离线二进制安装
无网环境下使用二进制包方式进行安装,从网址https://download.docker.com/linux/
找到对应系统版本以及系统架构下载对应包即可。
启动docker后,查看docker版本以确认是否安装成功:
(base) wildkid1024@debian:~$ docker version Client: Docker Engine - Community Version: 20.10.14 API version: 1.41 Go version: go1.16.15 Git commit: a224086 Built: Thu Mar 24 01:48:21 2022 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.14 API version: 1.41 (minimum version 1.12) Go version: go1.16.15 Git commit: 87a90dc Built: Thu Mar 24 01:46:14 2022 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.5.11 GitCommit: 3df54a852345ae127d1fa3092b95168e4a88e2f8 runc: Version: 1.0.3 GitCommit: v1.0.3-0-gf46b6ba docker-init: Version: 0.19.0 GitCommit: de40ad0
2.拉取远程基础镜像
开发项目之前需先拉取对应基础镜像环境,可从dockhub下载任意开发使用的必要环境,比如python:3.6:
(base) wildkid1024@debian:~$ docker pull python:3.6 3.6: Pulling from library/python Digest: sha256:f8652afaf88c25f0d22354d547d892591067aa4026a7fa9a6819df9f300af6fc Status: Image is up to date for python:3.6 docker.io/library/python:3.6
拉取完成可以测试下环境是否成功:
(base) wildkid1024@debian:~$ docker run -it python:3.6 python Python 3.6.15 (default, Dec 21 2021, 12:03:22) [GCC 10.2.1 20210110] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
3. 构建本地项目
以一个flask项目为例,演示如何构建本地项目:
首先拉取Python镜像,并移动到项目目录下,在项目根目录下添加Dockerfile镜像,内容如下:
FROM python:3.6 WORKDIR ./ COPY requirements.txt ./ RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple COPY . . CMD ["python", "start.py"]
其中FROM声明要使用的镜像名称及版本,WORKDIR声明工作目录,requirements中声明flask版本和对应的python依赖。
然后构建镜像,便会生成一个用于生产环境的docker镜像:
docker build -t flask_app .
4. 镜像的导入导出
如果上述构建未出错的话,那么将在docker本地镜像中找到两个镜像,通过运行docker images来找到他们。
通过以下导入导出镜像命令可将生产镜像导出:
docker save image_id > image_export.tar docker load < image_export.tar
-------- 完结 -----------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)