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