1.docker基本原理
https://www.cnblogs.com/xiaonq/p/10241045.html
1.1 毛线是docker?
1.Docker是使用最广泛的 开源容器引擎
容器:
1)容器是一个操作系统级别下的虚拟化技术,运行一个容器就行运行一个进程一样
2)容器依赖linux内核特性:Namespace(资源隔离)和Cgroups(资源限制)
2.一种操作系统基本的 虚拟化技术
我们使用的VMware虚拟机就是虚拟化技术
一个操作系统下,虚拟出来,其他操作系统的机器
3.一种简单的应用 程序打包工具
4.依赖Linux内核特性: Namespace(资源隔离) 和 Cgroup(资源限制)
docker run -itd -p 91:80 nginx
1.2 资源隔离和资源限制
资源隔离:
1) Linux Namespaces 机制提供一种资源隔离方案,每个namespace看上去就像一个单独的
Linux系统。
2) PID ,IPC(进程通信), Network 等系统资源不再是全局性的,而是属于某个特定的
Namespace。
3)每个namespace下的 资源对于其他namespace 下的资源都是透明, 不可见的 。
4)系统中可以同时存在 两个进程号为0,1,2的进程 ,由于 属于不同的namespace ,所以它们
之间并不冲突。
5)而在用户层面上只能看到属于用户自己namespace下的资源,例如使用ps命令只能列出自
己namespace下的进程。
6)这样 每个namespace看上去就像一个单独的Linux系统 。
资源限制:
1)为了让容器中的进程更加可控, Docker 使用 Linux cgroups 来限制容器中的进程允许使
用的系统资源 。
2)可以在启动容器是指定每个容器可以使用的 网络、磁盘、CPU以及内存 等
2.ubuntu安装docker
2.1 安装docker
docker run -itd -p 91:80 nginx
1.卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 2.更新ubuntu的apt源索引
# 修改apt国内源为中科大源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/' /etc/apt/sources.list
2.2 docker默认是国外源可以设置成国内镜像源
2.3 docker启动设置
2.4 docker简单使用(创建一个ngixn容器)
sudo apt update
#3.安装包允许apt通过HTTPS使用仓库
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
#4.添加Docker官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#5.设置Docker稳定版仓库(国内使用都用用国内的源)
#5.1 设置使用阿里云
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/dockerce/linux/ubuntu $(lsb_release -cs) stable"
#5.2 设置使用官方,很慢(不建议用这个)
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
#6.添加仓库后,更新apt源索引
sudo apt-get update
#7.安装最新版Docker CE(社区版)
sudo apt-get install docker-ce
#8.检查Docker CE是否安装正确
sudo docker run hello-world
root@linux-node1 django-docker]# vim /etc/docker/daemon.json # 设置docker镜像源
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
或者
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
[root@linux-node2 ~]# systemctl daemon-reload # 重载文件
[root@linux-node2 ~]# systemctl restart docker # 重启docker生效
启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker
1、创建一个nginx容器
docker run -it nginx
2、查看docker运行的容器(可以获取到这个容器的id)
docker ps
3、访问这个容器
# 进入这个nginx容器(进入的文件系统和宿主机是完全隔离的,有自己独立的文件系统)
docker exec -it 73877e65c07d bash
4、查看当前容器的 IP
docker inspect 73877e65c07d # 73877e65c07d是通过docekr ps查看到的容器ID
curl 172.17.0.2 # 测试这个nginx容器是否可以访问