概述
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。
Dockerfile
产品路线图
安装和启动
添加阿里镜像
(若没有 yum-config-manager 命令,先执行 yum -y install yum-utils )
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装
sudo yum -y install docker-ce
查看版本
docker --v
系统服务管理
# 启动systemctl start docker# 停止systemctl stop docker# 重启systemctl restart docker# 查看状态systemctl status docker# 开机启动systemctl enable docker
镜像为模板,同一个镜像可以启动多个容器
- 查看本机已有镜像
docker images
- 搜索镜像
docker search hello
- 拉取镜像
docker pull hello-world
- 删除镜像
docker rmi xxx
- 在一个新容器中执行命令
docker run
- 从容器中退出(可能会停止,但不会删除)
exit
- 停止容器
docker stop
- 查看运行的容器
docker ps
- 查看所有容器 运行 + 停止的
docker ps -a
- 启动停止的容器
docket start id
- 删除容器
docker rm id
- -d 参数时,容器启动后会进入后台。此时想要进入容器
docket attach ,退出
docker exec ,退出容器终端,不会导致容器的停止
docket exec -it xxx /bin/bash
- 容器导出为镜像
docker export 2a7de642c12f >my_ubuntu:2.0
- 导入镜像
docker import my_ubuntu.tar my_ubunut:0.1
- 拷贝文件
到容器
docker cp xxx a7779bed422d:/tmp
从容器
docker cp a7779bed422d:/tmp/my_ubuntu.tar .
- 端口映射
docker run -p 8080:80-v /data:/data -d nginx:latest
docker run -it ubuntu /bin/bash
-i,以交互模式运行容器,常 t 一同使用
-t,为容器重新分配一个伪输入终端,通常与 i 一同时使用
-d, 后台运行
# 拉取 ubuntu 镜像docket pull ubuntu# 使用 ubuntu 镜像启动容器,并已命令行进入该容器# /bin/bash:放在镜像名后的是命令docker run -it ubuntu /bin/bash

