Docker的入门基础和使用

1、Docker架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

  • Docker 客户端(Client) : Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。
  • Docker 主机(Host) :一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。

2、Docker安装

        安装略

安装完成后启动docker:

sudo systemctl start docker

测试是否启动成功: 

3、仓库配置

国内从 DockerHub 拉取镜像有时会特别慢,此时可以配置镜像加速器

Docker 官方和国内很多云服务商都提供了国内加速器服务,比如:

  • 阿里云的加速器:https://help.aliyun.com/document_detail/60750.html
  • 网易加速器:http://hub-mirror.c.163.com
  • Docker官方中国加速器:https://registry.docker-cn.com
  • ustc 的镜像:https://docker.mirrors.ustc.edu.cn
  • daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)

配置国内加速器镜像:

在/etc/docker/daemon.json文件(如果文件不存在则需要新建)添加如下配置:

{
        "registry-mirrors":["http://hub-mirror.c.163.com"]
}

然后重新启动服务:

systemctl daemon-reload
systemctl restart docker

4、镜像查看和拉取

4.1 查询镜像:hello-world

docker search hello-world

4.2 拉取镜像:hello-world

docker pull hello-world:latest

4.3 查看本地仓库已经pull下的镜像

4.4 运行镜像:hello-world

docker run hello-world

注意:如果在没有镜像的时候直接docker run hello-world也是可以的;它会先检查本地是否有这个镜像,没有的话会先从指定仓库中拉取。

5、容器实例-Ubuntu

5.1 从ubuntu镜像中输出hello world        

        Docker 允许在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。这里同样是个Hello World,不同在于它是在容器内部运行的。

docker run ubuntu:latest /bin/echo "hello world"

各个参数的含义:

  • docker: Docker 的二进制执行文件。
  • run: 与前面的 docker 组合来运行一个容器。
  • ubuntu:latest 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
  • /bin/echo "Hello world": 在启动的容器里执行的命令

        以上命令完整的意思可以解释为:Docker 以 ubuntu 最新的(默认是latest) 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。

5.2 运行交互式的容器

        通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力。

docker run -i -t ubuntu:latest
echo 'hello world'

参数解析:

  • -t: 在新容器内指定一个伪终端或终端。
  • -i: 允许你对容器内的标准输入 (STDIN) 进行交互。

运行 exit 命令或者使用 CTRL+D 来退出容器

5.3 运行容器至后台模式

 查看正在运行的容器:

docker container ls
docker ps

显示5.2中执行的程序不在容器中执行,目前没有正则执行的镜像。

需要-d参数,来让容器实例在后台运行:

docker run -d ubuntu:latest /bin/sh -c "while true; do echo hello world; sleep 1; done"

        在输出中,没有看到期望的 "hello world",而是一串长字符,这个长字符串叫做容器 ID,对每个容器来说都是唯一的,可以通过容器 ID 来查看对应的容器发生了什么。

再次通过docker ps 来查看目前是否有正在执行的容器:

输出详情介绍:

  • CONTAINER ID: 容器 ID。
  • IMAGE: 使用的镜像。
  • COMMAND: 启动容器时运行的命令。
  • CREATED: 容器的创建时间。
  • STATUS: 容器状态(状态有7种)。created(已创建)、restarting(重启中)、 running(运行中)、 removing(迁移中)、 paused(暂停)、 exited(停止)、 dead(死亡)
  • PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
  • NAMES: 自动分配的容器名称。

通过docker logs 命令,查看指定容器内的标准输出:

docker logs 187ec8cbe5b1

关闭正在启动的容器:

docker stop 187ec8cbe5b1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值