Docker简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
docker设想是交付运行环境如同海运,OS如同一个货轮,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后一个标准化组件是用户的app)。这也就是基于docker的PaaS产品的原型。*
一.Docker的安装部署及简单应用
实验环境:RHEL7.3
-
获取软件安装包及其依赖包
container-selinux-2.21-1.el7.noarch.rpm pigz-2.3.4-1.el7.x86_64.rpm docker-ce-18.06.1.ce-3.el7.x86_64.rpm policycoreutils-2.5-17.1.el7.x86_64.rpm libsemanage-2.5-8.el7.x86_64.rpm policycoreutils-python-2.5-17.1.el7.x86_64.rpm libsemanage-python-2.5-8.el7.x86_64.rpm
-
安装并启动
yum install -y * [root@server1 ~]# systemctl start docker ##启动docker [root@server1 ~]# docker --version ##查看版本信息 Docker version 18.06.1-ce, build e68fc7a [root@server1 ~]# docker info ##docker宿主机的信息 Containers: 1 Running: 1 Paused: 0 Stopped: 0 Images: 1 Server Version: 18.06.1-ce Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: false Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog Swarm: inactive [root@server1 ~]# ip addr
在安装好docker后,linux系统会为docker容器分配一个ip
link/ether 02:42:83:dd:db:3c brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
-
docker常用命令
# docker load -i ubuntu.tar 导入镜像 # docker run -it --name vm1 ubuntu 创建容器(以ubuntu镜像为模板) # docker ps 查看容器状态 # docker ps -a 查看容器状态(包括不活跃的容器) # docker attach vm1 连接容器 # docker top vm1 查看容器进程 # docker logs vm1 查看容器指令输出 -f 参数可以实时查看 # docker inspect vm1 查看容器详情 # docker stats vm1 查看容器资源使用率 # docker diff vm1 查看容器修改 # docker stop vm1 停止容器 # docker start vm1 启动容器 # docker kill vm1 强制干掉容器 # docker restart vm1 重启容器 # docker pause/unpause vm1 暂停/恢复容器 # docker rm vm1 删除容器
二. 导入镜像,容器的使用
[root@server1 ~]# docker load -i game2048.tar ##导入镜像
011b303988d2: Loading layer [==================================================>] 5.05MB/5.05MB
36e9226e74f8: Loading layer [==================================================>] 51.46MB/51.46MB
192e9fad2abc: Loading layer [==================================================>] 3.584kB/3.584kB
6d7504772167: Loading layer [==================================================>] 4.608kB/4.608kB
88fca8ae768a: Loading layer [==================================================>] 629.8kB/629.8kB
Loaded image: game2048:latest
[root@server1 ~]# docker run -d -p 80:80 --name vm1 game2048
##添加端口映射,宿主主机的80端口映射到docker容器的80端口
5ba77b22817a3968946ba4fb4d9a4afb44142db96ac1dbf87cc1d03578e97c18
[root@server1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5ba77b22817a game2048 "/bin/sh -c 'sed -i …" 6 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp, 443/tcp vm1
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
game2048 latest 19299002fdbe 2 years ago 55.5MB
三.镜像的分层结构
[root@server1 ~]# docker run -it --name vm2 ubuntu
root@09474d140848:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@server1 ~]# docker images ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 07c86167cdc4 3 years ago 188MB
[root@server1 ~]# docker commit -m "add files" vm2 ubuntu:v1
sha256:f6df2bc65c74de267b62b0ec73607fd76c02364f294574baed909d179d16df0d
[root@server1 ~]# docker history ubuntu
IMAGE CREATED CREATED BY SIZE COMMENT
07c86167cdc4 3 years ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 3 years ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$… 1.9kB
<missing> 3 years ago /bin/sh -c echo '#!/bin/sh' > /usr/sbin/poli… 195kB
<missing> 3 years ago /bin/sh -c #(nop) ADD file:b9504126dc5590898… 188MB
[root@server1 ~]# docker history ubuntu:v1
IMAGE CREATED CREATED BY SIZE COMMENT
f6df2bc65c74 29 seconds ago /bin/bash 0B add files
07c86167cdc4 3 years ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 3 years ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$… 1.9kB
<missing> 3 years ago /bin/sh -c echo '#!/bin/sh' > /usr/sbin/poli… 195kB
<missing> 3 years ago /bin/sh -c #(nop) ADD file:b9504126dc5590898… 188MB
可以看到容器的分层结构