DOCKER基础

一、DOCKER简介

1、DOCKER是一种开源的容器引擎,可以让开发者打包应用以及依赖的库,然后发布到任何流行的Linux发行版上,移植性强。

2、由go语言编写,基于apache2.0协议发布。

3、基于Linux kernel ,要想在widows下运行需要借助虚拟机来实现。

4、DOCKER优势:

(1)启动快,秒级别

(2)资源利用率高,一台高配置服务器上可以跑上千个dockers容器

(3)更快的交付和部署,一次创建和配置后,可以在任意地方运行。

(4)内核级别的虚拟化,不需要额外的hypevisor支持,会有更高的性能和效率。

(5)易迁移,平台依赖性不强。

5、DOCKER核心概念:

(1)镜像,是一个只读的模板,类似于安装系统用到的那个iso文件,我们通过镜像来完成各种应用的部署。

(2)容器,镜像类似于操作系统,而容器类似于虚拟机本身。它可以被启动,开始,停止,删除等操作,每个容器都是隔离的。

(3)仓库,存放镜像的场所,仓库分为公开仓库和私有仓库。最大的公开仓库是Docker hub(hub.docker.com),国内公开仓库(dockerpool.com)。

二、DOCKER安装

1、下载yum源

curl https://download.docker.com/linux/centos/docker-ce.repo -o  /etc/yum.repos.d/docker.repo

2、安装DOCKER

yum install -y docker-ce

3、也可以通过扩展源安装

yum install -y epel-release

yum install -y docker

4、启动DOCKER

systemctl start docker

三、DOCKER镜像管理

1、通过docker pull下载镜像

docker pull centos

2、查看本地镜像

docker images

3、为镜像标记标签

docker tag 源镜像 标签名

4、将镜像启动创建容器,首次启动使用run,-i表示让容器的标准输入打开,-t表示分配一个伪终端,-d表示后台启动

docker run -itd wyu

5、查看运行的容器

docker ps

6、进入正在运行的容器

docker exec -it container id bash

7、使用模板创建镜像

(1)下载模板

http://openvz.org/Download/templates/precreated

(2)将模板传到虚拟机中,导入镜像

cat centos-6-x86-minimal.tar.gz|docker import - centos6

(3)docker images查看导入镜像

(4)将现有镜像导出为文件

docker save centos6 -o linux1

(5)使用刚才的文件导入镜像

docker load --input linux1

docker load <linux1

8、容器及镜像的删除

(1)首先将容器停止,删除容器

docker ps

docker stop container id 如果无法删除可加-f强制删除

docker stop container id -f

docker rm container id

(2)其次删除对应镜像

docker rmi image id

四、DOCKER仓库管理

1、下载registry镜像,registry为docker官方提供的一个镜像,可以用来创建docker私有仓库。

2、以registry镜像启动容器,-p会把容器的端口映射到宿主机上,:左边为宿主机监听端口,右边为容器监听端口。

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

694770bb5e48bbab02ce8c35803ce52612fecb2adc773ee191a8772bf2a72bcb

3、可以通过curl来访问。

[root@oracle2 ~]# curl 127.0.0.1:5000/v2/_catalog

{"repositories":[]}

4、将镜像上传到私有仓库中。

(1)标记tag,必须要带有私有仓库的ip:port

[root@oracle2 ~]# docker tag wyu 192.168.0.43:5000/wyu

(2)将标记的镜像推送到私有仓库

要提前修改配置文件,vim /etc/docker/daemon.json加入以下内容

{ "insecure-registries":["192.168.0.43:5000"] } 重启服务systemctl restart docker之后将镜像推送

[root@oracle2 ~]# docker push 192.168.0.43:5000/wyu

5、查看推送上来的镜像

[root@oracle2 ~]# curl 127.0.0.1:5000/v2/_catalog

{"repositories":["wyu"]}

五、DOCKER数据管理

1、挂载本地目录到容器里,相当于创建了一个数据卷

[root@oracle2 ~]# docker run -itd -v /doc1/data:/data wyu bash

b105906eead4f155a3c0da770e02c81929cda806987dfe897b826537535924d6

-v用来指定挂载目录,:前面/doc1/data为宿主机本地目录,/data为容器中目录,会在容器中自动创建。

进入到该容器中查看目录信息

2、挂载数据卷,使用上一步创建的数据卷为模板再创建一块数据卷并将其挂载。

(1)挂载目录时可以指定容器name,如果不指定就是随机定义

(2)生成新的数据卷

[root@oracle2 ~]# docker run -itd --volumes-from zen_lamport --name vol1 wyu bash

其中--volumes-from后加容器name,--name后为自定义容器name,wyu为来源镜像文件,可以通过docker ps 查看刚刚创建并挂载好的数据卷

3、定义数据卷容器,是用于多个容器之间共享数据,类似于Linux中的NFS,建立数据卷容器,以便于其他容器可以直接挂载该数据卷。

(1)建立数据卷容器

[root@oracle2 ~]# docker run -itd -v /data/ --name testvol1 wyu bash

/data是容器中的data目录

(2)其他容器挂载该数据卷

[root@oracle2 ~]# docker  run -itd --volumes-from testvol1 --name wyuvol2 wyu bash

进入到新创建的容器中查看是否挂载成功

在data目录下创建文件

到源数据卷容器中查看是否存在

4、DOCKER数据卷的备份与恢复

备份:

(1)创建备份目录

mkdir /u01/backup

(2)由数据卷创建新的容器,并将本地备份目录挂载上去

[root@oracle2 u01]# docker run -itd --volumes-from testvol1 -v /u01/backup:/backup --name backupvol1  wyu /bin/bash

(3)查看目录信息

其中/data为数据卷目录,/backup为备份目录

(4)打包文件

恢复:

(1)将备份目录下的压缩文件拷贝到共享目录/data下

(2)由原来的数据卷容器创建新的容器

[root@oracle2 /]# docker run -itd --volumes-from testvol1 --name bak1 wyu bash

可以在新的容器中查看到/data目录以及目录下的信息

(3)解压文件恢复

六、DOCKER网络模式

1、host模式,使用docker run时--net=host指定,docker使用的网络实际上和宿主机一样,在容器内看到的网卡IP是宿主机IP。

2、container模式,使用--net=container:container_id/container_name,多个容器公用的网络,看到的IP是一样的。

3、none模式,使用--net=none,这种模式下不会配置任何网络。

4、bridge模式,使用--net=bridge指定,默认模式,会为每个容器分配一个独立的network namespace,类似于VMware NAT模式,同一宿主机的所有容器会在同一个网段下,相互之间可以通信。

七、DOCKER网络管理,外部访问容器

1、创建容器,并安装httpd服务

[root@oracle2 /]# docker run -itd centos

16fd8c1ccfb39ee41db5522665a868e2a4e47586f13bf8b97ce3d4adcaa5f644

[root@oracle2 /]# docker exec -it 16fd8c1c bash

[root@16fd8c1ccfb3 /]# yum install -y epel-release

[root@16fd8c1ccfb3 /]# yum install -y nginx

[root@16fd8c1ccfb3 /]# systemctl status nginx

Failed to get D-Bus connection: Operation not permitted

无法查看服务状态,由本容器创建新的镜像

[root@oracle2 /]# docker commit -m "nginx_wu" -a "wyu" 16fd8c1ccfb3 nginx1

[root@oracle2 /]# docker run -itd --privileged -e "container=docker" -p 5123:80 nginx1 /usr/sbin/init

在进入容器时加参数 --privileged -e “container=docker” 将bash 改为/user/sbin/init

2、启动服务

systemctl start nginx

3、查找服务对应的入口文件

find / -name *.html

在网页上测试是否可以访问

 

4、配置桥接网络

(1)配置本地桥接网络

拷贝一份网卡并命名为ifcfg-br0

[root@oracle2 ~]# cd /etc/sysconfig/network-scripts/

[root@oracle2 network-scripts]# cp ifcfg-enp0s25 ifcfg-br0

[root@oracle2 network-scripts]# cat ifcfg-enp0s25

TYPE=Ethernet

POXY_METHOD=none

NAME=enp0s25

DEVICE=enp0s25

ONBOOT=yes

BRIDGE=br0

[root@oracle2 network-scripts]# cat ifcfg-br0

TYPE=Bridge

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

NAME=br0

DEVICE=br0

ONBOOT=yes

IPADDR=192.168.0.43

NETMASK=255.255.255.0

GATEWAY=192.168.0.1

DNS1=119.29.29.29

DNS2=8.8.8.8

(2)重启网络systemctl restart network

(3)安装pipework

git clone https://github.com/jpetazzo/pipework

(4)拷贝文件

[root@oracle2 /]# cp pipework/pipework /usr/local/bin/

(5)开启一个容器

[root@oracle2 /]# docker run -itd --net=none --name test1 wyu_net bash

--net=none表示不分配任何网络,--name test1容器name为test1,wyu_net为安装有网络服务的源镜像

[root@oracle2 /]# pipework br0 test1 192.168.0.4/24@192.168.0.1

br0为设置的桥接网卡,192.168.0.4为设置容器的IP,需要与本机在同一IP,24为子网掩码,@192.168.0.1为网关

可以查看到IP为我们设置的192.168.0.4

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值