1、引入
11、如果企业中,有1000台服务器,你能够保证所有的机器全部使用CentOS吗?
22、如果企业中要求部署一个Django,但是有很多台服务器不支持Python怎么办?
33、如果企业中要求将所有的服务,在无感知的情况下从阿里云切换至腾讯云,请问你怎么做?
4
5上世纪八十年代,虚拟化 sgroupd
62010左右 , 提出容器化的概念
7 存在两个难以解决的问题
8 名称随机
9 IP随机
102013年左右 , docker
112014年左右 , docker三剑客(解决了名称随机、IP随机)
122015年左右 , Google(请了Guido开发了kubernetes)
13 Google内部Brog系统 ---> kubernetes
14
15现kubernetes市场占有率达到90%以上
2、docker简介
1docker是一款容器软件。由2013年发布,后来加入linux基金会。
3、安装部署docker
1下载链接:https://www.docker.com/products/docker-desktop
2
3windows :
4mac
5linux
6
7docker分为两个版本:
8 docker-ce : 社区版
9 docker-ee :企业版
10
11linux 3.10的内核 有BUG
12
131、升级系统内核
14 [root@localhost ~]
15 [root@localhost ~]
16
17 [root@localhost ~]
18
19 [root@localhost ~]
20
21 [root@localhost ~]
22
23 [root@localhost ~]
24
25 [root@localhost ~]
26
272、安装依赖包
28 [root@localhost ~]
29
303、添加软件源信息
31 [root@localhost ~]
32
334、更新并安装Docker-CE
34 [root@localhost ~]
35 [root@localhost ~]
36
37 k8s支持的最新的版本,也是最稳定的版本是19
38
395、启动Docker
40 [root@localhost ~]
41
426、检测docker
43 [root@localhost ~]
44
457、加速docker
46(使用阿里云镜像源)
47sudo mkdir -p /etc/docker
48sudo tee /etc/docker/daemon.json <<-'EOF'
49{
50 "registry-mirrors": ["https://8mh75mhz.mirror.aliyuncs.com"]
51}
52EOF
53sudo systemctl daemon-reload
54sudo systemctl restart docker
4、docker的基础使用
11、docker三大概念
2 1、镜像 :镜像是启动容器的模板
3 2、容器 :是对外提供服务的实例
4 3、仓库(Harbor) :存放镜像的地方
5
62、docker和虚拟机之间的区别
7
83、镜像
9镜像是启动容器的模板,同一个镜像启动的所有的容器完全相同。
10
113.1、下载镜像
12 docker pull [仓库的URL]/[命名空间]/[镜像名称]:[版本号]
13 默认的仓库URL:https://index.docker.io/v1/
14 默认的命名空间:library
15 默认的版本号:latest
16
17 index.docker.io/library/nginx:latest
18 使用默认下载:[root@localhost ~]
19
20 [root@localhost ~]
21 REPOSITORY TAG IMAGE ID CREATED SIZE
22 nginx latest f6987c8d6ed5 6 days ago 141MB
23
243.2、查看本机镜像列表
25 [root@localhost ~]
26 [root@localhost ~]
27 REPOSITORY TAG IMAGE ID CREATED SIZE
28 nginx latest f6987c8d6ed5 6 days ago 141MB
29 仓库名 版本 镜像ID 创建距离现在的时间 大小
30
313.3、查看镜像的详情
32 docker inspect [镜像名称|ID]
33 [root@localhost ~]
34
353.4、镜像tag
36 docker tag [镜像ID] [新的名称]
37 [root@localhost ~]
38
39
40 [root@localhost ~]
41 REPOSITORY TAG IMAGE ID CREATED SIZE
42 nginx latest f6987c8d6ed5 6 days ago 141MB
43 xiaodocker latest f6987c8d6ed5 6 days ago 141MB
44
453.5、登录仓库
46
47 首先需要在docker官网注册一个账号
48
49 docker login [仓库的URL地址]
50 默认的仓库地址:hub.docker.com
51 [root@localhost ~]
52 输入用户名、密码登录(官网注册的用户名和密码)
53
543.6、上传镜像
55 第一步:打tag
56 [root@localhost ~]
57 第二步:上传
58 [root@localhost ~]
59
603.7、删除镜像
61 docker rmi [镜像的名称|ID]
62 [root@localhost ~]
63
64注:docker镜像只能创建和删除,不能修改。
65 docker的ID全宇宙唯一,名称也不能重复
5、容器
1对外提供服务的实例。
2
31、容器生命周期
4 容器内的进程至少有一个进程运行在前台。
5
62、启动一个容器
7 docker run [参数] [镜像名称|ID] [启动命令]
8
9 参数:
10 -d : 以守护进程方式运行
11 [root@localhost ~]
12
13 --rm : 当容器生命周期结束时,立即删除该镜像(默认结束后不会立即删除)
14 [root@localhost ~]
15
16 --name : 指定容器名称
17 [root@localhost ~]
18
19 -e : 指定容器内部的环境变量
20 [root@localhost ~]
21
22 -h : 指定容器的主机名
23 [root@localhost ~]
24
25 -p : 端口映射(固定)
26 [root@localhost ~]
27 将centos7里面的4000端口映射成容器里的80端口,这样我们可以通过centos7的4000端口访问到容器的80端口
28
29 -P (大写) : 端口映射(随机)
30 [root@localhost ~]
31
32 -i : 打开标准输出(将容器内部的标准输出接入到命令行中)
33 -t : 创建一个命令行(伪终端)
34 这两个参数一般一起使用,可以使用命令行模式操作容器
35 [root@localhost ~]
36
37 -v : 添加一个目录映射
38 [root@localhost ~]
39 由于/tmp/目录下没有内容,会报错403
40 [root@localhost ~]
41
42
43 [root@localhost ~]
44helloword
45 通过docker ps查看随机端口
46 http://192.168.15.100:4001/ 查看
47
48 --link
49 --network
50
513、查看本机运行的容器列表
52 docker ps
53 -a : 显示本机上的所有的容器
54 -q : 只显示ID
55
56
574、在容器内部执行命令
58 docker exec [容器名称] [命令]
59 [root@localhost ~]
60
61 进入容器:
62 docker exec -it [容器名称] bash
63 [root@localhost ~]
64
655、删除容器
66 docker rm [容器ID或名称]
67
68 -f : 强制删除
69
70 [root@localhost ~]
6、保存容器和镜像
11、直接将容器保存成本地镜像
2
3 docker commit
4
5 docker commit --hrlp
6 Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
7 参数: 参数 容器(name或id) 自定义名称和版本号
8 -a : 作者
9 -m : 提交是解释信息
10 -p : 保存容器时,是否暂停运行容器
11
12 [root@localhost ~]
13 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
14 7390f1d18977 nginx "/docker-entrypoint.…" 9 minutes ago Up 9 minutes 80/tcp hungry_wright
15 [root@localhost ~]
16
17 [root@localhost ~]
18 REPOSITORY TAG IMAGE ID CREATED SIZE
19 test v1 9c5a265319e1 9 seconds ago 141MB
20
212、将本地的容器保存成镜像压缩包
22
23 1、保存容器为镜像压缩包
24
25 [root@localhost ~]
26 Usage: docker export [OPTIONS] CONTAINER
27 Options:
28 -o, --output string Write to a file, instead of STDOUT
29
30 docker export
31 [root@localhost ~]
32 再进行压缩
33 [root@localhost ~]
34
35 2、解压容器压缩包成镜像
36
37 [root@localhost ~]
38 Usage: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
39 Options:
40 -c, --change list Apply Dockerfile instruction to the created image
41 -m, --message string Set commit message for imported image
42 --platform string Set platform if server is multi-platform capable
43
44
45 [root@localhost ~]
46
47 docker import
48 [root@localhost ~]
49
503、将本地的镜像保存成镜像压缩包
51
52 [root@localhost ~]
53 Usage: docker save [OPTIONS] IMAGE [IMAGE...]
54 Options:
55 -o, --output string Write to a file, instead of STDOUT
56
57 docker save
58 [root@localhost ~]
59
60----------------------------------------------------------------------------------------------------
61
62 [root@localhost ~]
63 Usage: docker load [OPTIONS]
64 Options:
65 -i, --input string Read from tar archive file, instead of STDIN
66 -q, --quiet Suppress the load output
67
68 docker load
69 [root@localhost ~]
70
714、save 和 export之间的区别
72 1、针对的对象不一样
73 2、save保存的镜像更加完善