Docker入门
Docker架构
Docker三个基本概念
-
镜像(Image): Docker镜像(Image)相当于一个root文件系统, eg:ubuntu:16.04包含了完整的Ubuntu16.04最小系统root文件系统。
-
容器(Container): 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
-
仓库(Repository): 仓库可以看成一个代码控制中心,用来保存镜像。
Docker使用客户端-服务端(C/S)架构模式,使用远程API来管理和创建Docker容器。(Docker容器通过Docker镜像来创建)
Docker | 面向对象 |
---|---|
镜像(Image) | 类(Class) |
容器(Container) | 对象(Object) |
![]() |
概念(concept) | 说明(description) |
---|---|
Docker镜像(Images) | Docker镜像是用于创建Docker容器的模板,eg: Ubuntu系统 |
Docker容器(Container) | 容器是独立运行的一个或一组应用,是镜像运行时的实体 |
Docker客户端(Client) | Docker客户端通过命令行或其他工具与Docker的守护进程通信 |
Docker主机(Host) | 一个物理或虚拟的机器用于执行Docker守护进程和容器 |
Docker Machine | Docker Machine是一个简化Docker安装的命令行工具 |
容器状态
created - 已创建 restarting - 重启中 running\up - 运行中 removing - 迁移中 paused - 暂停 exited - 停止 dead - 死亡
Docker常用命令
# docker -v // 查看当前Docker版本 # docker images // 查看本地镜像 # docker search xx // 搜索指定镜像 # docker pull xx // 拉去指定镜像 # docker rmi xx // 删除指定镜像 # docker run xx // 运行镜像 # docker run -i -t xx /bin/bash // 运行交互式的容器 # docker ps // 查看当前正在运行的容器 # docker stop xx // 停止当前正在运行的容器
Docker使用
获取镜像
docker pull ubuntu
启动容器
docker run -it ubuntu /bin/bash -i: 交互式操作 -t: 终端 ubuntu: ubuntu镜像 /bin/bash: 放在镜像名后的时命令
启动已停止运行的容器
# docker ps -a // 查看所有容器 # docker start b70bbcxxx // 启动一个已经停止的容器 # docker run -itd --name ubuntu-test ubuntu /bin/bash // 后台运行一个服务 # docker stop <容器 ID> // 停止一个容器 # docker restart <容器 ID> // 重启一个容器 # docker exec -it <容器 ID> /bin/bash // 进入一个容器,退出该容器终端,不会导致容器的停止 # docker export <容器 ID> > test.tar // 导出容器到本地 # cat docker/test.tar | docker import - test/ubuntu:v1 // 使用docker import从容器快照文件中再导入为镜像\ # docker rm -f <容器 ID> // 删除容器
Docker镜像使用
当运行容器时,使用的镜像如果仔本地中不存在,docker就会自动从docker镜像仓库中下载,默认是从Docker Hub公共镜像源下载
1、管理和使用本地Docker主机镜像 2、创建镜像
列出镜像列表
- REPOSITORY: 镜像的仓库源
- TAG: 镜像的标签
- IMAGE ID: 镜像ID
- CREATED: 镜像创建时间
- SIZE: 镜像大小
获取一个新的镜像
在本地主机上使用一个不存在的镜像时Docker就会自动下载这个镜像,想预先下载这个镜像,可以使用docker pull命令来下载
# docker pull xxx:3.0 // 拉取镜像 # docker rmi hello-world // 删除镜像 # docker build // 从零开始构建一个新的镜像, 需要创建一个Dockerfile文件,其中包含一组指令来告诉Docker如何构建我们的镜像 runoob@runoob:~$ cat Dockerfile FROM centos:6.7 ---- 第一条FROM 指定 MAINTAINER Fisher "fisher@sudops.com" RUN /bin/echo 'root:123456' |chpasswd ---- RUN指令告诉docker镜像内执行命令,安装了什么 RUN useradd runoob RUN /bin/echo 'runoob:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D 每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的
eg: 使用DOckerfile文件通过docker build命令来构建一个镜像。
runoob@runoob:~$ docker build -t runoob/centos:6.7 . Sending build context to Docker daemon 17.92 kB Step 1 : FROM centos:6.7 ---> d95b5ca17cc3 Step 2 : MAINTAINER Fisher "fisher@sudops.com" ---> Using cache ---> 0c92299c6f03 Step 3 : RUN /bin/echo 'root:123456' |chpasswd ---> Using cache ---> 0397ce2fbd0a Step 4 : RUN useradd runoob ......
参数说明:
- -t : 指定要创建的目标镜像名
- . : Dockerfile文件所在目录,可以指定Dockerfile的绝对路径
使用docker images 查看创建的镜像已经在列表中存在,镜像ID为xxx
Docker容器链接
通过网络端口来访运行在Docker容器内的服务
容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p参数来指定端口映射。
Docker容器互联
端口应黑色并不是唯一把docker连接到另一个容器的方法。
docker有一个连接系统允许将多个容器连接在一起,共享连接信息
docker连接会创建一个父子关系,其中父容器可以看到子容器的信息。
Docker仓库管理
仓库(Repository)是集中存放镜像的地方。只是远程的服务商不一样,操作都是一样的。
Docker Dockerfile
什么是Dockerfile?
Dockerfile是一个用来构建镜像的文本文件,文本内容包含一条条构建镜像所需要的指令和说明。
使用Dockerfile定制镜像
如何运行Dockerfile文件来定制一个镜像 ?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2021-01-24 IDEA中上下文变量名称的全局修改