Top

Docker-Install

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
1
2
3
4
-i			#表示交互.
-t #表示终端.
-d #表示后台运行.
-p #表示端口映射将Docker的80(后)端口映射到实体机的80(前).会自动帮你写好iptables.
↓查看当前运行的容器.
[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