描述
Docker 包括三个基本概念:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
概念 |
说明 |
Docker 镜像(Images) |
Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。 |
Docker 容器(Container) |
容器是独立运行的一个或一组应用,是镜像运行时的实体。 |
Docker 客户端(Client) |
Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。 |
Docker 主机(Host) |
一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 |
Docker Registry |
Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。 |
Docker Machine |
Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 |
docker安装
Docker 要求 CentOS 系统的内核版本高于 3.10 ,使用uname -r
来验证你的CentOS 版本是否支持 Docker ;
1 2 3 4 5 6 7 8
| 使用 root 权限登录 Centos。确保 yum 包更新到最新。 yum update -y 卸载旧版本(如果安装过旧版本的话) yum remove docker docker-common docker-selinux docker-engine 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 yum install -y yum-utils device-mapper-persistent-data lvm2 设置yum源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
可以查看所有仓库中所有docker版本,并选择特定版本安装;
1
| yum list docker-ce --showduplicates | sort
|
1 2 3 4 5
| yum install docker-ce -y yum install <FQPN>
docker version
|
1 2 3
| systemctl start docker systemctl enable docker
|
1 2 3
| curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose -k chmod +x /usr/local/bin/docker-compose
|
docker使用
查看docker镜像
查看所有docker容器id
查看当前所有运行中的docker
运行一个容器
1 2 3 4 5 6 7 8 9 10 11
| 格式:docker start <id>
1. 停止一个容器 格式:docker stop <id>
2. 进入一个运行的容器 格式:docker exec -it <容器id> /bin/bash
3. 容器端口映射 格式:docker run <容器id> -it -p 5984:5984
|
docker容器内快速更换源
debian(163)
1 2 3 4 5 6 7
| mv /etc/apt/sources.list /etc/apt/sources.list.bak echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.list echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list #更新安装源 apt-get update
|
ubuntu(aliyun)
1 2 3 4 5 6 7 8
| mv /etc/apt/sources.list /etc/apt/sources.list.bak echo "deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list #更新安装源 apt-get update
|
Docker镜像命令
1 2 3 4 5 6 7
| docker search ubuntu docker pull ubuntu docker images docker history docker system df docker rmi -f id docker rmi -f `docker images -q`
|
Docker容器命令
镜像(Image
)和容器(Container
)的关系,就像是面向对象程序设计中的 类
和 实例
一样
镜像是静态的定义,容器是镜像运行时的实体,容器可以被创建、启动、停止、删除、暂停等
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 [命名空间]
因此容器可以拥有自己的 root
文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间
容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| docker ps docker inspect ID docker stats ID docker logs ID
docker run -it -d --name ubuntu_wintrysec -p 8088:80 ubuntu
docker exec -it ID bash
exit docker stop ID docker rm ID docker rm `docker ps -a -q`
docker stop `docker ps -aq` docker rm `docker ps -aq`
|