03.安装docker
# 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
# 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)
资源限制:
- 1)为了让容器中的进程更加可控,
Docker 使用 Linux cgroups 来限制容器中的进程允许使用的系统资源
。 - 2)可以在启动容器是指定每个容器可以使用的
网络、磁盘、CPU以及内存
等
- 1)为了让容器中的进程更加可控,
# 2.ubuntu安装docker
# 2.1 安装docker
# 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
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/docker-ce/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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 2.2 docker默认是国外源可以设置成国内镜像源
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生效
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 2.3 docker启动设置
# 启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker
1
2
3
2
3
# 2.4 docker简单使用(创建一个ngixn容器)
# 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容器是否可以访问
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
上次更新: 2024/3/13 15:35:10