Skip to main content

32 容器

隔离出一部分资源,专门用于某个进程,不需要虚拟化硬件。

通过 namespace(命名空间)和 cgroup(网络资源限制)来隔离。

Docker

目前最主流的容器技术的实现 Docker

CentOS 下安装 Docker:

删除原有版本的 Docker

yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

安装依赖的包

yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

安装 Docker 所属的库

yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

安装 Docker

yum install docker-ce docker-ce-cli containerd.io

启动 Docker

systemctl start docker

拉取镜像

可以在https://hub.docker.com/上搜索

# docker pull ubuntu:14.04
14.04: Pulling from library/ubuntu
a7344f52cb74: Pull complete
515c9bb51536: Pull complete
e1eabe0537eb: Pull complete
4701f1215c13: Pull complete
Digest: sha256:2f7c79927b346e436cc14c92bd4e5bd778c3bd7037f35bc639ac1589a7acfa90
Status: Downloaded newer image for ubuntu:14.04

查看镜像

# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 14.04 2c5e00d77a67 2 months ago 188MB

启动镜像

# docker run -it --entrypoint bash ubuntu:14.04
root@0e35f3f1fbc5:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.6 LTS"

Docker 镜像

通过 Dockerfile 将代码放到容器镜像里

  • FROM 基础镜像
  • RUN 运行过的所有命令
  • COPY 拷贝到容器中的资源
  • ENTRYPOINT 前台启动的命令或者脚本

编译 Dockerfile

docker build -f Dockerfile -t testnginx:1 .