安装图中七个软件包
[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浏览器172.25.70.1查看 查看2048的大小
[root@server1 ~]# du -h game2048.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 #查看正在运行的容器(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(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 psdocker 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 -adocker 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