docker - 图2

概述

Docker 是一个开源的应用容器引擎,基于Go语言,并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

应用场景

  • Web 应用的自动化打包和发布
  • 自动化测试和持续集成、发布
  • 在服务型环境中部署和调整数据库或其他的后台应用
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境

Paas:Platform as a Service,平台即服务,把服务器平台作为一种服务提供的商业模式。

核心概念

  • 镜像(Image): 一个只读的模板,用来创建 Docker 容器。一个特殊的文件系统
  • 容器(Container): 具体的运行应用程序的一个进程,它里面包含应用程序的各种依赖。镜像运行时的实体。
  • 仓库(Repository):仓库是集中存放镜像文件的场所。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub。国内的公开仓库包括 Docker Pool等。

docker容器和宿主机共享内核
Docker容器的本质是宿主机上的进程,通过namespace实现资源隔离,通过cgroups实现资源限制,通过写时复制机制实现高效的文件操作。
与传统VM相比,docker是一种操作系统虚拟化技术,并不需要在镜像内安装GuestOS。

image.png

Dockerfile

产品路线图

安装和启动

添加阿里镜像

(若没有 yum-config-manager 命令,先执行 yum -y install yum-utils

  1. sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装

  1. sudo yum -y install docker-ce

查看版本

  1. docker --v

系统服务管理

  1. # 启动
  2. systemctl start docker
  3. # 停止
  4. systemctl stop docker
  5. # 重启
  6. systemctl restart docker
  7. # 查看状态
  8. systemctl status docker
  9. # 开机启动
  10. systemctl enable docker

镜像为模板,同一个镜像可以启动多个容器

  1. 查看本机已有镜像

docker images

  1. 搜索镜像

docker search hello

  1. 拉取镜像

docker pull hello-world

  1. 删除镜像

docker rmi xxx

  1. 在一个新容器中执行命令

docker run

  1. 从容器中退出(可能会停止,但不会删除)

exit

  1. 停止容器

docker stop

  1. 查看运行的容器

docker ps

  1. 查看所有容器 运行 + 停止的

docker ps -a

  1. 启动停止的容器

docket start id

  1. 删除容器

docker rm id

  1. -d 参数时,容器启动后会进入后台。此时想要进入容器

docket attach ,退出
docker exec ,退出容器终端,不会导致容器的停止
docket exec -it xxx /bin/bash

  1. 容器导出为镜像

docker export 2a7de642c12f >my_ubuntu:2.0

  1. 导入镜像

docker import my_ubuntu.tar my_ubunut:0.1

  1. 拷贝文件

到容器
docker cp xxx a7779bed422d:/tmp
从容器
docker cp a7779bed422d:/tmp/my_ubuntu.tar .

  1. 端口映射

docker run -p 8080:80-v /data:/data -d nginx:latest

docker run -it ubuntu /bin/bash
-i,以交互模式运行容器,常 t 一同使用
-t,为容器重新分配一个伪输入终端,通常与 i 一同时使用
-d, 后台运行

  1. # 拉取 ubuntu 镜像
  2. docket pull ubuntu
  3. # 使用 ubuntu 镜像启动容器,并已命令行进入该容器
  4. # /bin/bash:放在镜像名后的是命令
  5. docker run -it ubuntu /bin/bash

参考

[1] https://mp.weixin.qq.com/s/6dmGa6IwWVZfSCWmnnuq3g