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

    xiaoxiao2023-10-15  160

    一.安装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 root@172.25.70.1 root@172.25.70.1'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

    最新回复(0)