小知识:Docker的理解和基本命令详解

如何通俗解释D ocker是什么?

Docker思想来自于集装箱集装箱解决了什么问题呢?比如,在一艘大船上,要把各种各样的货物要整理起来,集装箱(Docker)就可以做到,并且相互间不会影响。就不需要指定运输的船了(这个船运吃的那个船运穿的)。只要把货物装在集装箱里封装好,就可以用一艘大船把他们都运走。

1.Docker就是类似的理念。云计算是运输船,Docker就是集装箱。

1.不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。比如IIS和Apache访问端口冲突。这个时候你就要隔离.net开发的网站和php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。

2.你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。

3.在服务器负载方面,如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。

总之docker就是集装箱原理。

4.docker就是用来存放应用的一个容器

容器管理

?
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# docker run -it –name vm1 ubuntu bash //创建容器
# docker ps -a //查看容器状态
# docker attach vm1 //链接容器
# docker top vm1 //查看容器进程
[root@foundation22 ~]# docker run -it –name vm1 ubuntu
root@b6e503aec1e3:/# [root@foundation17 ~]#
//////用ubuntu这个镜像生成一个名为vm1的容器///
[root@foundation22 ~]# docker run -it ubuntu //未制定容器名称
[root@foundation22 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c2c94bd4ef22 ubuntu “/bin/bash” 2 minutes ago Up 2 minutes silly_curie
a2798a01f075 ubuntu “/bin/bash” 4 minutes ago Up 8 seconds vm1
[root@foundation22 ~]# docker stop c2c94bd4ef22 //结束一个容器(用进程id结束)
c2c94bd4ef22
[root@foundation22 ~]# docker rm c2c94bd4ef22 //删除容器(用进程id删除)
c2c94bd4ef22
[root@foundation22 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a2798a01f075 ubuntu “/bin/bash” 5 minutes ago Up About a minute vm1
root@bd4961841626:/# [root@foundation17 ~]# docker attach vm1
root@bd4961841626:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@bd4961841626:/# touch file{1..5}
root@bd4961841626:/# ls
bin dev file1 file3 file5 lib media opt root sbin sys usr
boot etc file2 file4 home lib64 mnt proc run srv tmp var
[root@foundation22 ~]# docker pause vm1 //暂停容器
vm1
[root@foundation22 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd4961841626 ubuntu “/bin/bash” 2 minutes ago Up 41 seconds (Paused) vm1
[root@foundation22 ~]# docker unpause vm1 //启动容器
vm1
[root@foundation22 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd4961841626 ubuntu “/bin/bash” 3 minutes ago Up About a minute vm1
[root@foundation22 ~]# docker run -it –name vm2 ubuntu
root@aac0080d0606:/# [root@foundation17 ~]# docker run -it –name vm3 ubuntu
root@13e9f0e36ea0:/# [root@foundation17 ~]# docker run -it –name vm4 ubuntu
root@2e4adfc6ea87:/# [root@foundation17 ~]# docker run -it –name vm5 ubuntu
root@cf98619960fc:/# [root@foundation17 ~]#
[root@foundation22 ~]# docker ps -aq
cf98619960fc
2e4adfc6ea87
13e9f0e36ea0
aac0080d0606
bd4961841626
[root@foundation22 ~]# docker stop docker ps -aq
cf98619960fc
2e4adfc6ea87
13e9f0e36ea0
aac0080d0606
bd4961841626

容器内的数据提交:(docker commit vm3 ubuntu//提交vm3容器里面的数据到ubuntu镜像放到仓库)

?
1
2
3
4
5
6
7
8
9
10
[root@foundation22 ~]# docker commit vm3 ubuntu
sha256:ca9b1aa4a9aee738f632999bfad3baf5bda20b5a8b51de82b8f288a922cb4a66
[root@foundation22~]# docker stop vm3
vm3
[root@foundation22 ~]# docker rm vm3
vm3
[root@foundation22 ~]# docker run -it –name vm4 ubuntu
root@6cb52f07dcde:/# ls
bin dev file1 file3 file5 lib media opt root sbin sys usr
boot etc file2 file4 home lib64 mnt proc run srv tmp var

提交的内容是在镜像里面的内容上加一层(只读):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@foundation22 ~]# docker run -it –name vm1 ubuntu
root@59026e7f5104:/# ls
bin dev file1 file3 file5 lib media opt root sbin sys usr
boot etc file2 file4 home lib64 mnt proc run srv tmp var
root@59026e7f5104:/# rm -fr file*
root@59026e7f5104:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@59026e7f5104:/# exit
exit
[root@foundation22 ~]# docker commit vm1 ubuntu
sha256:734d5eba88071735584a1c22519d9000d133b531df3dd7b56e6bbd0dca2abdd3
[root@foundation22 ~]# docker run -it –name vm8 ubuntu
root@e05171f7c0c7:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[root@foundation22 ~]# docker history ubuntu //查看镜像的层(最多不能超过127层)
IMAGE CREATED CREATED BY SIZE COMMENT
734d5eba8807 29 minutes ago /bin/bash 52 B
ca9b1aa4a9ae 51 minutes ago /bin/bash 28 B
07c86167cdc4 14 months ago /bin/sh -c #(nop) CMD [“/bin/bash”] 0 B
220d2912ab1d 14 months ago /bin/sh -c sed -i ‘s/^#s*(deb.*universe)$/ 1.895 kB
cc77a2e3d72c 14 months ago /bin/sh -c echo ‘#!/bin/sh > /usr/sbin/polic 194.5 kB
c8fa7cdceff3 14 months ago /bin/sh -c #(nop) ADD file:b9504126dc55908988 187.7 MB

////vm1里面新建文件后,提交,vm1里面的文件提交到ubuntu之后,ubuntu里面就有记录,再用镜像ubuntu建立容器,容器内部包含有vm1里面的文件。如果删除vm1里面新建的文件,再次提交,ubuntu里面的内容就会被覆盖掉。再次用ubuntu建立容器,新建立的容器不就没有最早vm1里面建立的文件。

复制文件到容器里面需要制定路径(即容器源)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@foundation22~]# docker cp /etc/passwd vm1
must specify at least one container source
[root@foundation22 ~]# docker cp /etc/passwd vm1:/
[root@foundation22 ~]# docker export -o vm2.tar vm1 //导出到当前目录,并命名为vm2.tar
[root@foundation22 ~]# docker save -o ubuntu.tar ubuntu:v1 // 将ubuntu:v1镜像制成 ubuntu:v1文件
[root@foundation22 ~]# docker run -d –name web -p 8000:80 nginx
3cca467e17717b7dd09dd997d7df4e2239e8505be8f0fc79ec11804c5365103d
[root@foundation22 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cca467e1771 nginx “nginx -g ‘daemon off” 15 seconds ago Up 11 seconds 443/tcp, 0.0.0.0:8000->80/tcp web
[root@foundation22 ~]# netstat -antlp | grep :8000
tcp6 0 0 :::8000 :::* LISTEN 16093/docker-proxy
[root@foundation22 ~]# docker diff vm1
C /root
C /root/.bash_history
A /passwd
D /file2
D /file5
D /file1
D /file3
D /file4

D:表示删除

A:表示增加add

以上所述是小编给大家介绍的Docker的理解和基本命令详解,希望对大家有所帮助!

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:用 Flatpak 在 Linux 上安装应用

2023-4-17 15:51:33

建站知识

小知识:Linux下防火墙的简单配置与插入规则介绍

2023-4-17 16:00:05

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索