Docker容器学习 --- 容器管理+镜像管理+数据卷管理

本文介绍了在RHEL7环境下安装Docker,并演示了基本命令的使用,如启动容器、运行2048游戏、管理容器(rm, stop, pause)、镜像搜索与加速、自定义镜像以及数据卷的挂载来改变Apache访问页面。通过实例展示了Docker的强大功能。" 125914806,11531335,JavaScript日期格式化:年月日与星期,"['JavaScript', '前端开发', '日期处理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker容器的详解已经在前面的博客提到:https://blog.csdn.net/aaaaaab_/article/details/81814185
本篇博客讲解Docker的基本指令和用法:
实验环境:rhel7.0,在物理机操作

Docker 是一个开源的应用容器引擎,主要利用 linux 内核 namespace 实现沙盒隔离,用用cgroup 实现资源限制。
Docker 支持三种不同的镜像层次存储的 drivers:
aufsdevicemapperbtrfs ;

安装docker容器:

[root@foundation38 Desktop]# ls
docker  timg.jpg
[root@foundation38 Desktop]# cd docker/
[root@foundation38 docker]# ls
docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm
docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm
[root@foundation38 docker]# yum install docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm -y   所需安装包在阿里云镜像仓库里面均可以下载
[root@foundation38 docker]# systemctl start docker.service   开启服务
[root@foundation38 docker]# docker info  查看信息
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 17.03.1-ce
Storage Driver: overlay
 Backing Filesystem: xfs
 Supports d_type: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 4ab9917febca54791c5f071a9d1f404867857fcc
runc version: 54296cf40ad8143b62dbcaa1d90e520a2136ddfe
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-514.el7.x86_64
Operating System: Red Hat Enterprise Linux Server 7.3 (Maipo)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 3.749 GiB
Name: foundation38.ilt.example.com
ID: JY5P:HDZ2:XUEK:A5AZ:23NV:4EGX:5L6B:KEKV:F43J:6MHJ:YN4X:B3FG
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

这里写图片描述
演示管理docker的基础命令:

# docker run -it --name vm1 ubuntu bash   创建容器
# docker ps -a   查看容器状态
# docker attach vm1   连接容器
# docker top vm1   查看容器进程
# docker logs vm1 查看容器指令输出 -f 参数可以实时查看
# docker inspect vm1 查看容器详情
# docker stats vm1 查看容器资源使用率
# docker diff vm1 查看容器修改
# docker run -d --name vm1 ubuntu bash -c "while true; do echo westos; sleep 1; done"
后台运行
# docker stop vm1 停止容器
# docker start vm1 启动容器
# docker kill vm1 强制干掉容器
# docker restart vm1 重启容器
# docker pause/unpause vm1  暂停/恢复容器
# docker rm vm1  删除容器
# docker export vm1 > vm1.tar  导出容器
# docker import vm1.tar image  导入容器为镜像 image
[root@foundation38 Desktop]# docker  输入docker加一个空格加两下Tab可以看到docker可以使用的命令
build      export     kill       plugin     rmi        stats      version
commit     help       load       port       run        stop       volume
container  history    login      ps         save       swarm      wait
cp         image      logout     pull       search     system     
create     images     logs       push       secret     tag        
diff       import     network    rename     service    top        
events     info       node       restart    stack      unpause    
exec       inspect    pause      rm         start      update     
[root@foundation38 docker]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@foundation38 docker]# docker ps  查看docker进程
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@foundation38 docker]# docker ps -a  查看docker隐藏进程
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

这里写图片描述
简单搭建一个2048小游戏:

[root@foundation38 Desktop]# docker load -i game2048.tar 导入镜像
[root@foundation38 Desktop]# docker run -d --name vm1 game2048  运行镜像
3650d596dd3c43752efee46fbae19d4b41121597e1868d78976a84f6c4fd1125
[root@foundation38 Desktop]# docker inspect vm1  查看镜像信息
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "21ca12d3508c3e19aaece046156199a461117e85da9ba634134b1e8c3914d69f",
                    "EndpointID": "4f92e361846c1533fefd065da06bd0b60138f5a475929c82a26d6ea7f4e3b27f",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",    在网页用于访问的IP,对外开放
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02"
                }
            }
        }
    }
]

可以查看到docker的IP信息:

[root@foundation38 Desktop]# ip addr  查看IP可以看到对应的docker
9: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:30:3c:02:cb brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:30ff:fe3c:2cb/64 scope link 
       valid_lft forever preferred_lft forever
13: veth1b24846@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP 
    link/ether de:3f:84:82:8a:d5 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::dc3f:84ff:fe82:8ad5/64 scope link 
       valid_lft forever preferred_lft forever
[root@foundation38 Desktop]# iptables -t nat -nL  查看策略
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0           
RETURN     all  --  192.168.122.0/24     224.0.0.0/24        
RETURN     all  --  192.168.122.0/24     255.255.255.255     
MASQUERADE  tcp  --  192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
MASQUERADE  udp  --  192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
MASQUERADE  all  --  192.168.122.0/24    !192.168.122.0/24    

Chain DOCKER (2 references)
target     prot opt source               destination         
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

这里写图片描述
在网页可以看到小游戏界面:
这里写图片描述
Docker命令演示:

[root@foundation38 Desktop]# systemctl start docker.service 开启docker服务
[root@foundation38 Desktop]# systemctl enable docker.service  开机自动启动docker服务
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@foundation38 Desktop]# cd /tmp/docker/
[root@foundation38 docker]# ls
Dockerfile  ssh  web  yum.repo
[root@foundation38 docker]# docker history nginx  列出nginx的历史
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
c82521676580        3 weeks ago         /bin/sh -c #(nop)  CMD ["nginx" "-g" "daem...   0 B                 
<missing>           3 weeks ago         /bin/sh -c #(nop)  STOPSIGNAL [SIGTERM]         0 B                 
<missing>           3 weeks ago         /bin/sh -c #(nop)  EXPOSE 80/tcp                0 B                 
<missing>           3 weeks ago         /bin/sh -c ln -sf /dev/stdout /var/log/ngi...   0 B                 
<missing>           3 weeks ago         /bin/sh -c set -x  && apt-get update  && a...   53.7 MB             
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENV NJS_VERSION=1.15.2....   0 B                 
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENV NGINX_VERSION=1.15....   0 B                 
<missing>           4 weeks ago         /bin/sh -c #(nop)  LABEL maintainer=NGINX ...   0 B                 
<missing>           5 weeks ago         /bin/sh -c #(nop)  CMD ["bash"]                 0 B                 
<missing>           5 weeks ago         /bin/sh -c #(nop) ADD file:919939fa0224727...   55.3 MB       

这里写图片描述

[root@foundation38 docker]# docker ps -a  查看当前进程
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
658ccfb8f90b        e8c13b6b6ffc        "/bin/sh -c 'yum i..."   38 hours ago        Exited (1) 38 hours ago                           reverent_pare
2fe7bc2ab2db        e8c13b6b6ffc        "/bin/sh -c 'rpmdb..."   38 hours ago        Exited (1) 38 hours ago                           condescending_shockley
d48a47fc8457        e8c13b6b6ffc        "/bin/sh -c 'rpmdb..."   38 hours ago        Exited (1) 38 hours ago                           pedantic_albattani
a8e5df7b597f        e8c13b6b6ffc        "/bin/sh -c 'rpmdb..."   38 hours ago        Exited (1) 38 hours ago                           thirsty_albattani
add450cfcd51        2e285b9b31d8        "/bin/sh -c 'rpmdb..."   39 hours ago        Exited (1) 39 hours ago                           keen_hugle
3b780163167b        e8c13b6b6ffc        "/bin/sh -c 'yum i..."   39 hours ago        Exited (1) 39 hours ago                           admiring_visvesvaraya
ff76dfe0207f        rhel7               "bash"                   39 hours ago        Exited (255) 11 minutes ago                       vm1
5be819f68b2e        ubuntu              "/bin/bash"              40 hours ago        Exited (0) 39 hours ago                           vm2
[root@foundation38 docker]# docker rm -f `docker ps -aq`  将所有docker杀死
658ccfb8f90b
2fe7bc2ab2db
d48a47fc8457
a8e5df7b597f
add450cfcd51
3b780163167b
ff76dfe0207f
5be819f68b2e
[root@foundation38 docker]# docker ps -a  查看docker进程为空
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

这里写图片描述

[root@foundation38 docker]# docker run -d --name vm1 nginx   创建并运行nginx
58a337021e4860332e5ac4b59bf257263e8410307ca7360eab08fcd32fae2f60
[root@foundation38 docker]# docker ps  查看进程
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
58a337021e48        nginx               "nginx -g 'daemon ..."   11 seconds ago      Up 11 seconds       80/tcp              vm1
[root@foundation38 docker]# curl 172.17.0.2  调用curl命令可以看到nginx的测试页
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值