Docker的安装
我的环境是Centos7.4!1台服务器:Server
192.168.237.128-server
因为操作比较简单所以讲讲原理.
1.Docker是虚拟化技术中的一种,而且是目前互联网使用最广泛的一种虚拟机技术,得到 IT 企业广泛的采用.
2.最早期,集装箱没有出现时,在码头上经常看到搬运工人,工人搬运货物,货物比较散乱,当集装箱出现以后,货物都是统一打包至集装箱,集装箱跟集装箱之间是没有任何关联、隔离的,方便转运到各个码头、港口(所以为什么它的官方logo是一个鲸鱼,上面有很多货物 ).
3.Docker虚拟化的产物是Docker容器(虚拟机),Docker容器可以看成货轮上的集装箱,Docker容器中存储、部署的服务称为对外提供访问的业务(货物),承载集装箱的载体称为货轮,承载Docker容器的载体称为Docker引擎(虚拟化软件服务).
4.传统虚拟化(KVM)轻量级(Docker)虚拟化技术,分层结构图如下:
KVM虚拟化-Server(硬件)-Host OS(宿主机)-VMM(虚拟化引擎)-Guest OS(虚拟机)-Nginx(服务);
Docker虚拟化-Server(硬件)-Host OS(宿主机)-VMM(虚拟化引擎)-Nginx 服务;
↑说明Docker不像KVM需要虚拟机去运行服务,而是直接在虚拟化引擎上跑服务.
↓Docker有以下优点.
1.操作启动快.
2.轻量级虚拟化.
3.开源免费.
4.前景及云支持.
5.跟传统VM比较具有如下缺点:
目前知道的人比较少;
相关的中文技术资料欠缺;
Go语言还未完全成熟;
1. 安装扩展源 [root@server ~]# yum install epel-release -y
2. 安装Docker并启动 ↓目前企业里面一般都用yum安装.诶,太简单都不想写出来.
[root@server ~]# yum install docker* -y
[root@server ~]# systemctl start docker
↓查看当前版本号.
[root@server ~]# docker version
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-94.gitb2f74b2.el7.centos.x86_64
Go version: go1.10.3
Git commit: b2f74b2/1.13.1
Built: Tue Mar 12 10:27:24 2019
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-94.gitb2f74b2.el7.centos.x86_64
Go version: go1.10.3
Git commit: b2f74b2/1.13.1
Built: Tue Mar 12 10:27:24 2019
OS/Arch: linux/amd64
Experimental: false
3. 基本命令 ↓加入国内源,放入命令行执行.
1 2 3 4 5 cat>/etc/docker/daemon.json<<hyiqie { "registry-mirrors" : ["https://xxx.mirror.aliyuncs.com" ] } hyiqie
↓搜索镜像.
[root@server ~]# docker search nginx
INDEX NAME
docker.io docker.io/nginx
↓从网上下载镜像.
[root@server ~]# docker pull docker.io/nginx
Status: Downloaded newer image for docker.io/nginx:latest
↓查看当前存在的镜像.
[root@server ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 2bcb04bdb83f 11 days ago 109 MB
↓运行容器(自启动版).
[root@server ~]# docker run --restart=always -itd -p 80:80 docker.io/nginx
↓查看当前运行的容器.
[root@server ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6bd745d12935 docker.io/nginx "nginx -g 'daemon ..." About an hour ago Up About an hour 0.0.0.0:80->80/tcp clever_boyd
↓查看容器内的IP.
[root@server ~]# docker inspect 6bd745d12935|grep IPAddre
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
↓进入运行的容器.
[root@server ~]# docker exec -it 6bd745d12935 /bin/bash
↓查看容器内的信息.
[root@server ~]# docker exec 6bd745d12935 ls /usr/share/nginx/html/
↓复制本地文件到容器中,和复制容器文件到本地.
[root@server ~]# docker cp index.html 6bd745d12935:/usr/share/nginx/html/
[root@server ~]# docker cp 6bd745d12935:/etc/nginx/conf.d/default.conf .
↓关闭容器和启动容器.
[root@server ~]# docker stop 6bd745d12935
6bd745d12935
[root@server ~]# docker start 6bd745d12935
6bd745d12935
↓删除容器(加-f强制删除).
[root@server ~]# docker rm 6bd745d12935
6bd745d12935
↓删除镜像.
[root@server ~]# docker rmi docker.io/nginx
Untagged: docker.io/nginx:latest
Untagged: docker.io/nginx@sha256:c8a861b8a1eeef6d48955a6c6d5dff8e2580f13ff4d0f549e082e7c82a8617a2
↓导出镜像(export会丢失启动配置等,save不会).
[root@server ~]# docker export -o nginx_v1.tar f39a583e724c
[root@server ~]# docker save -o nginx_v2.tar d36626339046
↓导入镜像(save对应load).
[root@server ~]# docker import nginx_v1.tar nginx:v1
[root@server ~]# docker load -i nginx_v2.tar
↓查看容器当前系统情况.
[root@server ~]# docker stats c7681a47c2c1
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
c7681a47c2c1 0.00% 1.305 MiB / 3.686 GiB 0.03% 31.5 MB / 125 kB 188 kB / 73.1 MB 3