Docker容器技术简介

docker(容器) swarm kubernets(管理集群)  saltstack(自动化) ci -> gitlab cd -> jenkins (devops) ELK(日志分析) mfs(分布式) hadoop (大数据) openstack(底层管理容器集群) kvm/container

什么是docker

Docker之父Solomon Hykes:Docker就好比传统的货运集装箱.打包技术Docker是管理容器的引擎。
Docker为应用打包、部署平台,而非单纯的虚拟化技术。


VM VS Container

容器共享宿主机和硬件文件,虚拟机和宿主机是独立的

qemu-kvm(cpu/mem)


容器是如何工作的


我的第一个容器

实验需求:封装一台rhel7.6的虚拟机

然后保证能上网

然后我们的容器下载可以去阿里云开源镜像

根据网站提供的信息

然后我们把这个镜像放入下载到我们的/etc/yum.repos.d/

[root@server1 yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

然后我们编辑该文件vim docker-ce.repo

[docker-ce-stable]
name=Docker CE Stable-$basearch 
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable 
enabled=1
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

然后去测试一下

[ rooteserver1~1# yum repolist 
Loaded plugins: product-id, search-disabled-repos, subscription-manager 
This system is not registered with an entitlement server. You can use subscription-manager to register.
docker-ce-stable                                    |3.5kB 00:00:00
(1/2): docker-ce-stable/×86 64/primary db            41kB00:00:00
(2/2): docker-ce-stable/x8664/updateinfo            55B00:00:00
repo id                     repo name                     status 
docker-ce-stable/×8664Docker CE Stable-×8664                70
dvd                             rhel7.6                5,152
repolist:5,222

测试成功之后我们去下载docker

yum install docker-ce

但是存在一些依赖性

Error: Package:3: docker-ce-19.03.8-3. el7.×86 64(docker-ce-stable)
Requires: container-selinux>=2:2.74
Error: Package: containerd. io-1.2.13-3.1. el7.x86_64(docker-ce-stable)
Requires: container-selinux>=2:2.74
You could try using--skip-broken to work around the problem You could try running: rpm-Va--nofiles--nodigest

查看虚拟机版本

[ root@ server1 ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.6(Maipo)

根据依赖性报错提示我们去阿里云下载

下载完成后我们安装

yum install docker-ce container-selinux-2.77-1.el7.noarch.rpm

然后我们启动docker

systemctl start docker
##然后我们查看docker信息
docker info

启动完成后存在两个warning理论上是不影响操作的但是为了完美我们可以通过设置将其修改

WARNING:bridge-nf-call-iptables is disabled
WARNING:bridge-nf-call-ip6tables is disabled

首先还要保证getenforce为disable状态

iptables  -L可以查看防火墙装填

然后过滤一下

[ root@ server1 ~]# sysctl -algrep bridge-nf-call-iptables 
net. bridge. bridge-nf-call-iptables=0
sysct1: reading key "net. ipv6. conf. all. stable secret"
sysctl: reading key "net. ipv6. conf. default. stable secret"
sysctl: reading key "net. ipv6, conf. dockere. stable secret"
sysctl: reading key "net. ipv6. conf. ethe. stable secret"
sysct1: reading key "net. ipv6. conf. lo. stable secret"

然后我们编辑文件将上述数值设置为1

[root@server1~]# vim /etc/sysctl.
sysctl.conf sysctl.d/
[rooteserver1~]# vim /etc/sysctl.d/bridge.conf
net.bridge.bridge-nf-call-iptables=1

net.bridge.bridge-nf-call-ip6tables=1

查看是否生效

[root@server1~]# sysctl --system

然后再查看警告是否还有docker info

我们可以查看容器的目录

[root@serverl~]# cd /var/Lib/docker
[rooteserver1 docker]# pwd
/var/lib/docker
[rootaserver1 docker]#1s
builder buildkit containers image network overlay2 plugins runtimes swarm tmp trust volumes
[root@server1 docker]#ll -d.
drwx--x--×14 root root 182 Apr 4 10:33.

然后我们安装一个包可以保证tab键补齐

[root@server1~]# yum install -y bash-*

然后我们利用docker部署一个nginx

我们可以不用准备镜像让他自己拉取利用(docker pull nginx)

[root@server1~]# docker images
REPOSITORY TAG IMAGE IDCREATED SIZE
[rooteserver1~]# docker pull nginx

因为是在官方拉取下载可能会比较慢我们可以下载一个加速器

首先我们创建一个阿里云账号然后登陆,然后进入控制台选择镜像加速,每个人都有一个自己的镜像加速地址

然后我们设置一个专属的daemon文件

[root@server1 docker]# pwd
/etc/docker
[rooteserver1 docker]# vim daemon.json
"registry-mirrors": ["https://rfo5zmyq.mirror.aliyuncs.com"]

然后我们加载一下

systemct1 daemon-reload

再重启docker

systemctl restart docker

如果我们不知道服务名字之类的我们可以通过search查询

docker search nginx

然后我们再拉取

[root@server1 docker]# docker pull nginx
[rootdserver1 docker]# docker images 
REPOSITORY     TAG        IMAGEI        DCREATED    SIZE
nginx        latested    21b7a8aee9    3 days ago    127MB

然后我们去运行

其实上述也就相当于桥接

[root@serverl docker]# yum install-y bridge-utils
[root@server1 docker]# brctl show 
bridge name     bridge id         STP enabled     interfaces 
docker0        8000.0242eec8a000        no        vethl2eff2e

可以通过docker inspect nginx

然后我们可以访问

我们也可以通过网页查看

先把我们的服务释放掉然后来一个端口映射

[root@serverl docker]# docker rm-f nginx
nginx
[rooteserver1 docker]# docker run -d --name nginx -p 80:80 nginx

也可以通过history查看端口信息

然后我们再网页上访问

也可以通过docker load-i game2048.tar直接加载本地已经存在的文件

查看自己docker版本

[root@serverl ~]# rpm -q docker-ce 
 docker-ce-19.03.8-3.e17.×8664

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值