CentOS 7 安装docker & 使用教程

 

CentOS 7 安装docker & 使用教程

Docker 安装

前提

  • 查看内核版本(>3.10.0)

  • curl命令

  • 执行安装命令 curl -sSL https://get.docker.com | sh 需要FQ

如果没有梯子的朋友,可以去 https://www.daocloud.io/ 上使用docker加速器安装

命令相关

查看内核版本:

$ uname -r

确认有没有curl命令:

$ which curl

如果没有安装curl:

$ yum install -y curl

执行安装 docker 脚本,默认下载一下docker的软件包:

$ curl -sSL https://get.docker.com | sh

查看版本:

$ docker -v

启动docker:

centos7:

$ systemctl start docker

centos6:

$ service docker start

设置开机自启动:

$ systemctl enable docker

确认 docker 是否已经启动:

$ ps -aux | grep docker

Docker镜像分层技术

什么是 docker 镜像?

就是把业务代码和运行环境进行整体打包。

如何创建 docker镜像?

镜像是由多个layer组合而成,并且是只读的。

如何想要写入数据该什么办呢?我们会在镜像上起一层layer,其实就是把镜像启动成一个容器进行写操作!

例如在 ubuntu 加一层 nginx

 

 

推荐使用 dockerfile 创建镜像

避免使用 commit 创建镜像(不推荐, 容器必定是容器,容器不是虚拟机。)

Docker镜像下载

查看本地镜像

$ docker images

本地镜像介绍:

  • 从中心镜像仓库下载到宿主机本地

  • 如果第一次下载镜像,就会把镜像所有层都下载下来

  • 利用镜像分层技术,如果主机上已有的layer(层)存在(可以理解成父镜像),只下载新增加的layer(层)(可以理解成子镜像),类似git代码提交机制。

 

下载镜像到本地

docker官方镜像下载不需要认证,上传镜像是需要认证的。

命令:

$ docker pull <镜像名称>

 

如何把本地镜像上传,或者分析给其他人:

查看本地所有镜像命令:

$ docker images -a

查看 docker 所有的操作命令:

$ docker -h

 搜索docker镜像命令:

$ docker search <image:tag>

Docker删除镜像

什么情况下不可删除镜像?

1、有容器使用镜像被创建 可以通过docker ps -a 命令查看当前本地主机哪些容器在运行

2、镜像是其他镜像的父镜像

删除本地镜像命令:

$ docker rmi <镜像名称>

Docker上传镜像

上传镜像到共有镜像仓库

  1. docker hub 账号

  2. docker login

  3. docker push

登录docker hub 

$ docker login

推送

$ docker push <镜像名称>

docker容器

  • 容器是什么

  • 创建容器

  • 容器的操作命令

  • 容器与镜像之间的关系

docker 与 虚拟机不一样

虚拟机是服务器硬件和操作系统的解耦,容器本身是进程。

 

 

 Docker优点

  • 更轻量,镜像尺寸小,资源利用率高

  • 更快速,直接运行在宿主机上,没有IO转换负担

  • 更便捷,易安装,易使用,迁移方便,数据量小

Docker创建容器

命令

$ docker run -d -p 5000:5000 --restart=always --name registry -v /data/registry:/var/lib/registry registry:2
$ docker run -d -it -p 80:80 --name=centos6.6 -v /opt/:/opt/ centos:6.6 /bin/bash

更改镜像名称

$ docker tag nginx:1.11.1 new/nginx:1.11.1

上传镜像

  • 修改docker daemon启动参数 --insecure-registry=0.0.0.0/0

  • docker push new/nginx:1.11.1

命令

$ vim /usr/lib/systemd/system/docker.service

从新启动docker daemon

$ systemctl daemon-reload
$ systemctl restart docker

查看启动情况

$ ps -aux | grep docker

执行上传

$ docker push new/nginx:1.11.1

下载镜像

$ docker pull new/nginx:1.11.1

Docker容器的操作命令

  • run/create 运行/创建一个容器

  • start 启动一个容器

  • stop/kill 停止/杀死一个容器

  • restart 重启一个容器

  • pause 暂停一个容器

  • unpause 取消暂停一个容器

  • logs 查看容器日志

  • stats 查看容器监控资源信息(cpu 内容 网络流量)

  • top [容器名称] 查看容器运行多少进程

  • port [容器名称] 容器和本地主机映射的端口信息

  • exec/attach  docker exec -it [容器名称] bash 启动一个伪终端,登录到容器中。exit退出

  • diff [容器名称] 查看容器中文件哪些是一样的或者不一样的

  • inspect 查看容器/镜像详细信息 $ docker inspect app | grep -i memory 查看容器分配磁盘空间大小

  • update 更新容器信息 $ docker update -m 256m app 更新容器磁盘空间 $docker update -h 查看帮助

  • cp 拷贝文件 $ docker cp app:/usr/share/nginx/html/index.html ./

  • export 把容器保存成 tar 文件(用的不多)

  • import 把 tar 文件导入到镜像列表(用的不多)

  • rm 删除容器 -f 强制删除

 docker容器和镜像的关系

容器公用一个镜像,可以起好多个容器

 

 实现的机制

docker数据保存

把数据挂载到宿主机目录下,以保留数据。

 

Docker数据管理

 

 

镜像是怎么来的呢?是由dockerfile bulid 出来的

创建一个dockerfile:

FROM centos:7
RUN yum -y install epel-replease && \
       yum -y install nginx && \
       yum clean all
EXPOE 80 443
CMD ["nginx" , "-g" , "deamun off;"]
$ docker build -t app .

删除容器:

$ docker rm <container_id>
$ docker rm -v <container_id> // 连volume文件一起删除

查看容器匹配的volume文件有哪些

$ docker inspect 

Docker 实战网络模式

以 nat network(默认模式) 运行容器,实现从外网访问容器内的服务:

$ docker run -d -p 80:80 --name app nginx:1.11.1
$ ps -aux | grep docker

以 host network 运行容器:

$ docker run -d --name app2 --net=host nginx:1.11.1

 

 

容器与容器之间通讯比较平凡,可以使用 container network 模式。

 

 

Docker voerlay 网络模式

修改 docker 启动参数:

$ vim /usr/lib/systemd/system/docker.service

 

两台机器都需要修改 docker 启动配置文件:

重启 docker 服务:

$ systemctl daemon -reload
$ systemctl restart docker
$ ps -aux | grep docker //查看是否重启成功

第一台主机启动 consul :

$ docker pull progrium/consul //拉取consul
$ docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h consul progrium/consul -server-bootstrap -ui-dir /ui 

打开浏览器访问控制台 192.168.59.100:8500

 实践 overlay network

查看 docker 当前都有哪些网络:

$ docker network ls

创建 overlay :

登录进去:

$ docker exec -it app1 bash //查看ip addr

 

 

posted @ 2018-04-25 13:17  丶老中医  阅读(643)  评论(0编辑  收藏  举报
一切已经开始©2018 丶老中医