docker容器学习---------容器管理、镜像管理、数据卷管理


实验环境:
server1:172.25.4.1 rhel7.3
如果使用的环境为rhel7.0,我们也可以在7.0的主机上配置7.3的yum仓库。


1、docker的安装



由于有依赖,我们找到依赖包放在该目录下,执行yum install * -y
2、docker启动
启动docker

docker info 查看信息
docker images 查看已有的镜像


3、通过下载的tar包导入镜像

docker load -i *.tar 导入tar包生成镜像

中间出了一个小问题,由于我使用的是虚拟机,我使用真实主机连接虚拟机的时候特别慢。查阅资料,我在网卡配制文件里删除了dns解析
4、搭建一个2048小游戏
[root@server1 tar]# docker run -d --name vm1 game2048
创建容器vm1,并且后台运行(-d)基于game2048镜像
[root@server1 tar]# docker inspect vm1

"NetworkSettings": {
            "Bridge": "",
            "SandboxID": "d858b8ac13e0aa7e7a4aee849b23ebf99f9675c199dfaeedbac8c80c066bf777",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "443/tcp": null,
                "80/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/d858b8ac13e0",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "3c25f6b22fc85e8f46b92b95199ddf083f6256572ed7e0936bd3d8b22d5783bb",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "3932bcd1998644ca454d9f47767279734035b04ca1db378c3a01b10f77bd1838",
                    "EndpointID": "3c25f6b22fc85e8f46b92b95199ddf083f6256572ed7e0936bd3d8b22d5783bb",
                    "Gateway": "172.17.0.1",      类似于虚拟机使用的网桥
                    "IPAddress": "172.17.0.2",    用于访问的ip
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }


主机产生了一个docker0接口,类似于虚拟机的网桥
此时在网页上访问172.17.0.2就会出现一个2048的游戏页面



使用 iptables -t nat -nL查看火墙策略

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0           

自动添加了策略

使用docker ps 查看docker进程



查看镜像信息



开启关闭容器,以及查看docker停止的进程

5、一些类似的操作


后台运行和交互式运行,以及打入后台(ctrl+p+q)的操作
6、更新镜像



[root@server1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a2c05c5ee549        ubuntu              "/bin/bash"         10 minutes ago      Up 10 minutes                           vm2
[root@server1 ~]# docker attach vm2
root@a2c05c5ee549:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@a2c05c5ee549:/# touch file{1..10}
root@a2c05c5ee549:/# ls
bin  boot  dev  etc  file1  file10  file2  file3  file4  file5  file6  file7  file8  file9  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@a2c05c5ee549:/# exit
exit
[root@server1 ~]# docker commit vm2 ubuntu:v1
sha256:023bfe60a2bcb7ae0bf08f9a1395b0f32d2975a544dcf2472f8768a9c1e6449c
[root@server1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              v1                  023bfe60a2bc        4 seconds ago       188MB
game2048            latest              19299002fdbe        23 months ago       55.5MB
ubuntu              latest              07c86167cdc4        2 years ago         188MB
rhel7               latest              0a3eb3fde7fd        4 years ago         140MB

[root@server1 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                          PORTS               NAMES
7e41fcb687a2        ubuntu:v1           "/bin/bash"         2 minutes ago       Exited (0) About a minute ago                       vm5
a2c05c5ee549        ubuntu              "/bin/bash"         19 minutes ago      Exited (0) 5 minutes ago                            vm2
[root@server1 ~]# docker rm vm5
vm5
[root@server1 ~]# docker run -it --name vm5 ubuntu:v1
root@cb03b9a2a1d2:/# ls
bin  boot  dev  etc  file1  file10  file2  file3  file4  file5  file6  file7  file8  file9  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

7、清除之前的环境
删除所有容器



发现两个镜像中最新的镜像比基础镜像多一层



删除之前更新的镜像

1、端口映射
创建容器的时候使用-v指定主机上的端口映射容器上的端口8080:80,查看防火墙策略



此时访问主机的8080端口会自动转发到容器上的80端口



2、exec



3、diff


docker连接远程仓库查找下载需要的镜像



这个文件里所写的东西,每个人都不一样。


由于我是在虚拟机上进行的实验,所以我们要连接到远程仓库,所以得先让虚拟机上网。
执行查找命令查找nginx



然后从远程拉取nginx镜像



清除之前的环境
[root@server1 docker]# docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
91ec0b640913bd0a22d9d5165a3d06d97d3d1a8984cec4b9e4131ce579c686db

Total reclaimed space: 24B

创建一个nginx容器并且开启地址转发功能



docker history nginx 默认最新版本


编写容器中nginx的默认发布页



从本地copy到容器中



使用-d模式创建容器的时候不要使用attach,应该使用exec

采用这种方式cp发布页,我们不能及时同步,所以我们考虑使用目录挂载


数据卷容器


你可能感兴趣的:(docker容器学习---------容器管理、镜像管理、数据卷管理)