Docker容器的详解已经在前面的博客提到:https://blog.csdn.net/aaaaaab_/article/details/81814185
本篇博客讲解Docker的基本指令和用法:
实验环境:rhel7.0,在物理机操作
Docker 是一个开源的应用容器引擎,主要利用 linux 内核 namespace 实现沙盒隔离,用用cgroup 实现资源限制。
Docker 支持三种不同的镜像层次存储的 drivers:
aufs、devicemapper、btrfs ;
安装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>