docker入门

Docker

是什么?

  • 一种虚拟化软件

  • 让应用程序的开发和部署变得简单

  • 将所有的文件打包进container(容器),包括代码,库,依赖项,环境配置。总而言之就是应用程序和他的运行环境。

为什么?

开发麻烦:要开发一个东西,每个人都要在本地配置环境,因为平台和版本的不同,极有可能出现问题。

部署麻烦:要给软件附上说明书,说明要配置哪些环境和服务,由运营团队来完成,这个过程同样容易出错

怎么解决

docker把所有的配置放入一个隔离的环境,不用在本地配置,直接指令docker run postgres或者rediis取得这些服务,从网上直接取出这个容器

可以运行不同版本的软件而且不会冲突

用户只需要配置好docker runtime,然后运行指令就行了。

docker的虚拟化

操作系统由内核 (与硬件交流)应用层(和用户交互)组成。

docker虚拟化的是应用层

VM虚拟机则是虚拟化了内核和应用层

和VM的区别

  • 轻量得多
  • 运行快
  • VM兼容性更强,无法在linux上运行windows的docker,需要和内核匹配

Docker Image

是什么

使用docker生成地打包或工件成为docker镜像。

基本上就只是个应用程序工件

但是它不仅拥有源码,还有环境配置信息(操作系统应用程序层,安装在上面的npm或者node.js)

镜像的运行实例就是一个container,容器就是一个运行实例,容器基于镜像启动,docker会在镜像只读层添加可写层。

所以可以同时运行多个基于同一个image的container,相互独立

注册表

储存和管理docker镜像的中央仓库。

Dockerhub用来找所有的官方,公司,个人的镜像,这个叫注册表

注册表中可以有很多个库,用来更新不同版本的image

image tags:image会进行版本控制

拉取指令

docker pull {name}:{tag} = Pull an image from a register

如果不指定版本,默认拉取最新

运行指令

docker run {name}:{tag} = Creates a contianer from given image and start it

run -d (detach):则不会锁住终端

docker log {container}

其实可以直接run image,尽管他不在本地,它会自动pull

docker stop {container} = Stop one or more running containers

怎么运行

container在一个独立的环境下运行,所以必须先把容器公开到本地

每次run一个container都是新的,但只会显示正在运行的,停机的不会显示,但是依旧存在

-a or --all = list all containers(stopped and runnning)

docker start {container} = start one or more stopped containers

--name = Assign a name to the container

端口绑定

-p {HOST_PORT}:{CONTAINER_PORT}:加入端口

在一个主机上,特定的端口上只能运行一个服务

绑定范围是1-9000

怎么创建Docker Image

选择一个base image,上面安装了npm或者应用程序需要的所有工具,是一个最小的操作系统环境。

一些镜像已经预装了特定的应用程序或框架,例如 nodepythonnginx 等。使用这些镜像可以方便地在其基础上开发相应的应用程序。

复制代码
# 使用 Ubuntu 作为基础镜像
FROM ubuntu:20.04

# 安装一些依赖
RUN apt-get update && apt-get install -y python3

# 复制应用程序代码
COPY . /app

# 设置工作目录
WORKDIR /app

# 指定容器启动时执行的命令
CMD ["python3", "app.py"]
相关推荐
Johny_Zhao5 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
zwjapple5 小时前
docker-compose一键部署全栈项目。springboot后端,react前端
前端·spring boot·docker
代码老y7 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
DuelCode8 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
杨浦老苏12 小时前
开源服务运行监控工具Lunalytics
docker·群晖·网站监控
呆萌的代Ma19 小时前
解决Mac上的老版本docker desktop 无法启动/启动后一直转圈/无法登陆账号的问题
macos·docker·eureka
feilieren19 小时前
Docker 安装 Elasticsearch 9
运维·elasticsearch·docker·es
KaiwuDB20 小时前
使用Docker实现KWDB数据库的快速部署与配置
数据库·docker
cleble21 小时前
(转)使用DockerCompose部署微服务
docker
朱杰jjj1 天前
Docker容器中无法使用vim、vi命令处理
docker·容器·vim