Linux企业运维篇——docker容器搭建及简单镜像应用

一.安装docker和依赖性

在这里插入图片描述
安装图中七个软件包

在这里插入图片描述

在这里插入图片描述

[root@server1 docker]# systemctl start docker
[root@server1 docker]# docker info

在这里插入图片描述
在这里插入图片描述
安装bash*,使得可以补全命令,下载后要退出server1,重新连接才会生效

[root@server1 docker]# yum install -y bash*

在这里插入图片描述

[root@server1 ~]# logout
Connection to 172.25.70.1 closed.
[kiosk@foundation70 ~]$ ssh [email protected]
[email protected]'s password: 
Last login: Tue May 28 02:23:56 2019 from founction70.ilt.example.com

在这里插入图片描述

二.导入game2048的镜像

[root@server1 ~]# docker load -i game2048.tar 
[root@server1 ~]# docker images

在这里插入图片描述

[root@server1 ~]# docker run -d -p 80:80 --name vm1 game2048

在这里插入图片描述
浏览器172.25.70.1查看
在这里插入图片描述
查看2048的大小

[root@server1 ~]# du -h game2048.tar 

在这里插入图片描述

三.导入ubuntu镜像

[root@server1 ~]# docker load -i ubuntu.tar 

在这里插入图片描述
查看是否导入

[root@server1 ~]# docker images

在这里插入图片描述
运行ubuntu查看内核信息

[root@server1 ~]# docker run -it --name vm2 ubuntu
root@3b2158a61bee:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
root@3b2158a61bee:/# uname -r
3.10.0-514.el7.x86_64
root@3b2158a61bee:/# 

在这里插入图片描述

物理机中查看内核信息两者是共享内核,所以是一样的

[kiosk@foundation70 images]$ uname -r
3.10.0-514.el7.x86_64
[kiosk@foundation70 images]$ 

查看ubuntu的ip
root@3b2158a61bee:/# ip addr
在这里插入图片描述

root@3b2158a61bee:/#    #ctl+p+q:退出在后台运行

docker inspect 容器/镜像 # 获取容器/镜像的元数据

[root@server1 ~]# docker inspect vm1

在这里插入图片描述
在这里插入图片描述

[root@server1 ~]# docker inspect vm2

在这里插入图片描述
在这里插入图片描述

由以上两个命令可以看出ip是单调递增
在已有brctl命令的主机中查看brctl命令使用的包:

[kiosk@foundation70 images]$ which brctl 
/usr/sbin/brctl
[kiosk@foundation70 images]$ rpm -qf /usr/sbin/brctl
bridge-utils-1.5-9.el7.x86_64

在server1安装,查看桥接

[root@server1 ~]# yum install -y bridge-utils-1.5-9.el7.x86_64
[root@server1 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
docker0		8000.0242914bc01c	no		veth1765463
							            veth3b3d575

物理机查看桥接

[kiosk@foundation70 images]$ brctl show

在这里插入图片描述
查看数据包转发功能是否开启

[root@server1 ~]# sysctl -a | grep ip_for
net.ipv4.ip_forward = 1 #查看转发功能是否开启,1表示开启(修改方法:sysctl -w net.ipv4.ip_forwiard=1)
net.ipv4.ip_forward_use_pmtu = 0

在这里插入图片描述

[root@server1 ~]# iptables -t nat -nL #可以看到防火墙策略中80端口自动分配给172.17.0.2

在这里插入图片描述

[root@server1 ~]# docker ps #查看正在运行的容器

在这里插入图片描述

拉起容器的方法有2种

(docker ps 可查看到的容器):
docker attach 容器名称
docker container attach 容器名称
之前让vm2在后台运行,现在拉起vm2

[root@server1 ~]# docker attach vm2  #无响应可以回车以下
root@3b2158a61bee:/#

在这里插入图片描述
可以建立10个文件,ctrl+D 直接退出
在这里插入图片描述
此时在查看正在运行的容器时发现vm2已经没有了

[root@server1 ~]# docker ps

在这里插入图片描述
查看所有容器时vm2还在

[root@server1 ~]# docker ps -a

在这里插入图片描述

启动容器的方式也有2种

(docker ps -a 可查看到的容器)
docker start 容器名称
docker container start 容器名称
之前关闭了vm2,现在启动vm2

[root@server1 ~]# docker start vm2
vm2
[root@server1 ~]# docker attach vm2 #拉起vm2查看里面的10个文件是否还在

在这里插入图片描述
ctrl+d退出,查看正在运行的容器已经没有vm2

[root@server1 ~]# docker ps

在这里插入图片描述

删除已有容器的方法

docker rm 容器名称
查看所有容器

[root@server1 ~]# docker ps -a

在这里插入图片描述
删除vm2

[root@server1 ~]# docker rm vm2

在这里插入图片描述

[root@server1 ~]# docker ps -a 查看已经没有vm2容器

在这里插入图片描述
查看镜像ubuntu镜像还在

[root@server1 ~]# docker images

在这里插入图片描述
重新将ubuntu镜像运行在vm2容器中将会是一个新的ubuntu,只是名字和之前相同罢了,查看之后ctrl+p+q后台运行

[root@server1 ~]# docker run -it --name vm2 ubuntu

在这里插入图片描述
查看ubuntu镜像信息,大小为188MB

[root@server1 ~]# docker images ubuntu

在这里插入图片描述
查看原本的ubuntu的层数是4层
在这里插入图片描述
拉起vm2建立文件ctrl+D退出

[root@server1 ~]# docker attach vm2
root@dedf98bb9a47:/# touch file{1..10}
root@dedf98bb9a47:/# ls
bin   etc     file2  file5  file8  lib    mnt   root  srv  usr
boot  file1   file3  file6  file9  lib64  opt   run   sys  var
dev   file10  file4  file7  home   media  proc  sbin  tmp
root@dedf98bb9a47:/# exit

在这里插入图片描述查看所有容器进程vm2还在

[root@server1 ~]# docker ps -a

在这里插入图片描述

提交数据保存

docker commit -m “注释” 容器/容器ID [REPOSTORY:[TAG]]

对镜像的一些操作会创建新的读写层,docker有很多层,每次提交都会加一层,层数尽量不要太多,127层以内

[root@server1 ~]# docker commit -m "add files" vm2 ubuntu:v1 #创建新ubuntu的镜像,版本设置为v1
sha256:cd7c62359e73fee6a60fcc9b780344ce4eaf2520c058850d24e0c4e8e914c62e        
[root@server1 ~]# docker images #查看ubuntu镜像多了一个v1版本的

在这里插入图片描述
查看新建的ubuntu:v1的层数,发现多了一层,并且带有注释add files

[root@server1 ~]# docker history ubuntu:v1

在这里插入图片描述
提交过后删除vm2容器再重新运行发现之前建立的文件还在,删除操作后ctrl+D退出

[root@server1 ~]# docker rm vm2
vm2
[root@server1 ~]# docker run -it --name vm2 ubuntu:v1
root@8e7ffe929da3:/# ls
bin   dev  file1   file2  file4  file6  file8  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  file10  file3  file5  file7  file9  lib   media  opt  root  sbin  sys  usr
root@8e7ffe929da3:/# rm -rf file*
root@8e7ffe929da3:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@8e7ffe929da3:/# exit

在这里插入图片描述
把删除后的ubuntu重新提交生成新的镜像

[root@server1 ~]# docker commit vm2 ubuntu:v2
sha256:362aaff511f01742457e24190712df2b3ad8ccd3e15ba7b01e2b98999b5430d7
[root@server1 ~]# docker images

在这里插入图片描述
对比两个镜像,v2版本又多了一层

[root@server1 ~]# docker history ubuntu:v1
[root@server1 ~]# docker history ubuntu:v2

在这里插入图片描述
最后删除vm2

[root@server1 ~]# docker rm vm2

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44321116/article/details/90546017
今日推荐