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
---&gt; d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
---&gt; Using cache
---&gt; 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
---&gt; Using cache
---&gt; 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文件来定制一个镜像 ?

答案: https://www.runoob.com/docker/docker-dockerfile.html

posted @   Felix_Openmind  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
历史上的今天:
2021-01-24 IDEA中上下文变量名称的全局修改
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}
点击右上角即可分享
微信分享提示