安装Docker

                                                                      部署DOCKER

*******************************************************************

docker  安装环境准备

物理机:

    添加一个网桥  vbr1

 

配置两个虚拟机

    第一个 安装nove节点最少  6G 内存

               单独添加一块硬盘给 openstack cinder 使用 20G

               单独添加一块 网卡 使用 vbr1

    第二个 安装 nova 节点 最少 6G 内存

               单独添加一块 网卡 使用 vbr1

**********************************************************************8

1. 安装软件包

[root@redhat docker 1]# scp docker-*  /var/ftp/public/

[root@redhat public]# createrepo .

2. node11,node12配置yum

[root@node1 ~]# vim /etc/yum.repos.d/dvd.repo 

[node2]

name=node

baseurl=ftp://192.168.1.254/rhel6

enabled=1

gpgcheck=0

 

[node3]

name=node

baseurl=ftp://192.168.1.254/public

enabled=1

gpgcheck=0

3.检测

[root@node11 yum.repos.d]# yum repolist

4.安装docker

[root@node1]# yum -y install docker-engine

[root@node1]# systemctl start docker

[root@node1]# systemctl enable  docker

[root@node1]# docker images       //查看镜像

5. Docker hub镜像仓库

https://hub.docker.com

Docker官方提供公共镜像的仓库(Registry)

[root@node1]# docker search rhel7  //搜索镜像

[root@node1]# docker search centos

[root@node1]# docker search nginx

[root@node1]# docker search mysql

 

镜像操作

1 下载、上传镜像

• 下载镜像(从镜像仓库中下载镜像)

[root@server0 ~]# docker help pull

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

[root@server0 ~]# docker pull rhel7

• 上传镜像(上传镜像到仓库)

[root@server0 ~]# docdocker help push

Usage: docker push [OPTIONS] NAME[:TAG]

[root@server0 ~]# docker push rhel7

2 导入、导出镜像

• 导入镜像(通过tar包文件导入镜像)

[root@server0 ~]# docker load < xx.tar

[root@server0 ~]# docker images

• 导出镜像(将本地镜像导出为tar文件)

[root@server0 ~]# docker images

[root@server0 ~]# docker save image_name > xx.tar

3 启动镜像

• 启动centos镜像生成一个容器

[root@server0 ~]# docker images

[root@server0 ~]# docker run -it centos bash

• 开启另一个终端(查看容器信息)

[root@server0 ~]# docker ps

 

操作使用

1.导入镜像,导出镜像

[root@node1~]#yum -y install vsftpd

[root@node1~]#ftp 192.168.1.254

帐号:ftp

密码:123456

ftp> cd public

ftp> get docker_images.zip

ftp> exit

[root@node1~]#yum -y install unzip

[root@node1~]#unzip docker_images.zip

[root@node1~]#docker pull busybox

[root@node1~]#docker images

[root@node1~]#docker save busybox:latest >busybox.tar  //导出镜像

[root@node1~]#scp busybox.tar  node12:./

[root@node1~]#cd docker_images

[root@node1~]#for i in  *;do docker load <${i};done     //导入镜像

[root@node1~]#docker images

2 启动镜像

• 启动centos镜像生成一个容器                       /user/bin

[root@server0 ~]# docker images

[root@server0 ~]# docker run  -it  centos  bash   //交互式

[root@server0 ~]# docker run  -d  centos  bash   //非交互式

[root@server0 ~]# docker run  -itd centos  bash   //交互非交互式

• 开启另一个终端(查看容器信息)

[root@server0 ~]# docker ps -a

3.删除容器

[root@node1 ~]# docker rm  $(docker ps -aq)

4.循环使用容器

[root@node11 ~]# docker start 34af5ae3dfa

[root@node11 ~]# docker stop 34af5ae3dfa

 

命令列表

• 命令列表

docker images //查看镜像列表

docker history //查看镜像制作历叱

docker inspect //查看镜像底层信息

docker pull //下载镜像

docker push //上传镜像

docker rmi //删除本地镜像

docker save //镜像另存为tar

docker load //使用tar包导入镜像

docker search //搜索镜像

docker tag //修改镜像名称和标签

docker run //运行容器

docker ps //查看容器列表

docker stop //关闭容器

docker start //启动容器

docker restart //重启容器

docker attach|exec //进入容器

docker inspect //查看容器底层信息

docker top //查看容器进程列表

docker rm //删除容器

进入容器

[root@node11 ~]#docker  attach   34af5ae3dfa

Ctrl(一直按着) + p + q  //放入后台,用在查看报错信息

[root@node11 ~]# docker start 34af5ae3dfa

[root@node11 ~]# docker stop 34af5ae3dfa

[root@node11 ~]#docker  exec -it  34af5ae3dfa  /bin/bash

[root@server0 ~]# docker run  -itd centos  bash   //交互非交互式

 


 

案例1:

docker  rm  容器id  删除容器

docker  run  -d  -p  物理机端口:容器端口  镜像:标签

1问题:

启动一个nginx容器,可以通过外部进行反访问

修改默认主页 hello nsd1802

2步骤

[root@node11 ~]# docker run -d -p 80:80 ngin

[root@node11 ~]# docker ps

[root@node11 ~]# docker  exec -it  004368d3e1c9  /bin/bash

root@56ca19ce8cca:/# nginx -h

root@56ca19ce8cca:/# nginx -T

root@56ca19ce8cca:/# cd /usr/share/nginx/html

root@56ca19ce8cca:/# echo "hillo nsd1802"  > index.html 


 

案例2:

docker  commit  配置好的容器ID   自已要定义的容器名字:latest

1问题:

定义一个自已的容器镜像

2 步骤

1) 安装容器

[root@node11 ~]# docker run  -itd centos  bash

[root@node11 ~]# docker ps -aq

2)配置容器

[root@node11 ~]# docker  exec -it 0a0c28db82d2  bash

root@56ca19ce8cca:/# cd /etc/yum.repos.d/

root@56ca19ce8cca:/# rm -rf *

root@56ca19ce8cca:/# vim dvd.repo

root@56ca19ce8cca:/# yum repolist

root@56ca19ce8cca:/# yum provides ifcomfig

yum -y install vim-enhanced-7.4.160-2.el7.x86_64

yum -y install bash-completion.noarch

yum install net-tools.x86_64

3)定义容器

[root@node11 ~]# docker commit 0a0c28db82d2  myos:latest

4)删掉之前的容器

[root@node11 ~]# docker stop $(docker ps -aq)

[root@node11 ~]# docker rm  $(docker ps -aq)

5)启动自已的容器

[root@node11 ~]# docker run -it myos


 案例3

1 问题

docker自动化配置容器镜像环境

2 步骤

[root@node11 xxoo]# docker  ps -a

[root@node11 xxoo]# mkdir xxoo

[root@node11 xxoo]# cd xxoo

[root@node11 xxoo]# touch Dockerfile

[root@node11 xxoo]# scp /etc/yum.repos.d/dvd.repo ./

[root@node11 xxoo]# vim Dockerfile

FROM centos:latest

RUN  rm -f /etc/yum.repos.d/*

ADD  dvd.repo /etc/yum.repos.d/xxoo.repo

RUN  yum repolist

RUN  yum -y install vim-enhanced psmisc net-tools iproute

[root@node11 xxoo]# docker build -t test:latest .

[root@node11 nnoo]# docker run -it  test  bash


 

案例4

1 问题

修改默认启动文件/bin/bash --->改为/user/bin/ptthon

2 步骤

[root@node11 nnoo]# mkdir nnoo

[root@node11 nnoo]# cd nnoo/

[root@node11 nnoo]# touch Dockerfile

[root@node11 nnoo]# vim Dockerfile

FROM myos:latest

CMD  ["/usr/bin/python"]

[root@node11 nnoo]# docker build -t myos:python .

[root@node11 nnoo]# docker run -it myos:python 


 

案例5

1 问题

安装apache软件,修改启动文件/bin/bash -->/usr/sbin/httpd

2 步骤

[root@node11 nnoo]# mkdir nnoo

[root@node11 nnoo]# cd nnoo/

[root@node11 nnoo]# vim Dockerfile

FROM  test

RUN yum install -y httpd

ENV EnvironmentFile=/etc/sysconfig/httpd

WORKDIR /var/www/html

RUN echo "helolo nsd1802" > index.html

EXPOSE 80

CMD ["/usr/sbin/httpd", "-DFOREGROUND"]

[root@node11 nnoo]# docker build -t http:httpd .

[root@node11 nnoo]# docker run -d -p 80:80 http:httpd

 

创建私有仓库

1.配置Node11

[root@node11 ~]# vim /etc/docker/daemon.json

{

"insecure-registries":["192.168.1.20:5000"]

}

[root@node11 ~]# systemctl restart  docker

[root@node11 ~]# docker run -d -p 5000:5000 registry

[root@node11 ~]# docker tag busybox:latest

 192.168.1.20:5000/busybox:latest

[root@node11 ~]# docker push  192.168.1.20:5000/busybox:latest

2.配置node12

scp  /etc/docker/daemon.json   192.168.1.21:/etc/docker/

[root@node12 ~]# systemctl  stop docker.service

[root@node12 ~]# systemctl  restart docker.service

[root@node12 ~]# docker run -it  192.168.1.20:5000/busybox:latest

3.查看镜像

[root@node11 ~]# curl http://192.168.1.20:5000/v2/_catalog

{"repositories":["busybox"]}

[root@node11 ~]# curl http://192.168.1.20:5000/v2/busybox/tags/list

{"name":"busybox","tags":["latest"]}

 

存储卷的概念

docker容器不保持任何数据

• 重要数据请使用外部卷存储(数据持久化)

• 容器可以挂载真实机目录或共享存储为卷

1.主机卷的映射

• 将真实机目录挂载到容器中提供持久化存储

[root@jacob ~]# docker run -v /data:/data -it centos bash

 

 

共享存储基本概念

• 一台共享存储服务器可以提供给所有Docker主机使用

• 共享存储服务器(NASSANDAS)

• 如:

– 使用NFS创建共享存储服务器

– 客户端挂载NFS共享,并最终映射到容器中

使用共享存储的案例                          

• 服务器

yum -y install nfs-utils

vim /etc/exports

systemctl start nfs

Docker主机

mount挂载共享

– 运行容器时,使用-v选项映射磁盘到容器中

1.步骤

[root@node11 ~]#  mkdir -pv  /nfsroot/nfsro

[root@node11 ~]# yum -y install nfs-utils

[root@node11 ~]# vim /etc/exports

/nfsroot/nfsro  *(ro) 

[root@node11 ~]# systemctl start nfs

[root@node11 ~]# docker run -v /nfsroot/nfsro:/nfsroot/nfsro -it centos bash

[root@node11 ~]# showmount -e 192.168.1.20

2.测试

在容器里查看文件夹文件。并进行使用

posted @ 2019-11-29 11:30  云计算(互联网)  Views(245)  Comments(0Edit  收藏  举报