rm -fr /etc/yum.repos.d/local.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
yum install docker-ce -y
yum安装软件出现故障:
描述Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again
curl http://mirrors.aliyun.com/repo/Centos-6.repo >/etc/yum.repos.d/CentOS-Base.repo
sed -i 's#http://mirrors.aliyun.com#http://vault.centos.org#g' CentOS-Base.repo
sed -i 's#gpgkey=http://vault.centos.org/centos/#gpgkey=https://vault.centos.org/6.5/os/x86_64/#g' CentOS-Base.repo
Centos6开启SSH服务
docker run -d -it -p 1023:22 centos6.9_ssh:latest /bin/bash
docker exec -it vigorous_dhawan /bin/bash
yum install passwd openssl openssh-server -y
echo 123456 |passwd --stdin root
docker commit vigorous_dhawan centos6.9_ssh:v2
docker run -d -it -p 1023:22 centos6.9_ssh:v2 /usr/sbin/sshd -D
docker 容器开启ssh
一. 从docker hub 下载centos 官方镜像
docker pull centos:7
运行容器
docker run -i -t -p 1022:22 --name ssh centos:7 /bin/bash
二. 安装passwd,openssl,openssh-server
yum -y update
yum install passwd openssl openssh-server -y
启动sshd:
/usr/sbin/sshd -D &
正常启动需要pid文件存在,可以创建/var/run/ssh
这时报以下错误:
[root@ b5926410fe60 /]# /usr/sbin/sshd
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
执行以下命令解决:
[root@b5926410fe60 /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
[root@b5926410fe60 /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
[root@b5926410fe60 /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
然后,修改 /etc/ssh/sshd_config 配置信息:
UsePAM yes 改为 UsePAM no
UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no
[root@b5926410fe60 /]# sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config
[root@b5926410fe60 /]# sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config
制作启动脚本,可以安装NGINX
[root@2fb6f5ef48b4 ~]# cat /init.sh
#!/bin/bash
nginx &
/usr/sbin/sshd -D
tail -f /var/log/nginx/access.log
保持镜像持久化
docker commit priceless_satoshi centos7_ssh_nginx:v1
运行镜像
docker run -d -it -p 1022:22 -p 80:80 centos7_ssh_nginx:v1 /bin/bash /init.sh
http://cr1a.197946.com/kodexplorer.zip
无法连接到 docker hub,需要修改成国内:
{
"registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com"]
}
docker的4种网络类型
docker container inspect registry 查看容器的详细信息
None:不为容器配置任何网络功能,--network=none ,docker内没有网络服务
Container:与另一个运行中的容器共享Network Namespace,--network container:containerID(K8S),两个宿主机共同Ip,共用端口,谁先占用端口,谁先得到端口。
Host:与宿主机共享Network Namespace,--network=host 性能最高,共用网络,docker主机的host文件也是共享的,Ip和端口都市宿主机的。
Bridge:Docker设计的NAT网络模型,比较常用的。
Docker跨主机容器之间的通信macvlan
默认一个物理网卡,只有一个物理mac地址,虚拟多个mac地址(类似于桥接,跟宿主机接在同一个交换机内)
1.创建macvlan网络
docker network create --driver macvlan --subnet 172.16.1.0/24 --gateway 172.16.1.254 -oparent=eth0 macvlan_1
2.设置eth0的网卡为混杂模式(这个步骤在ubunt系统里面要做,centos不用做)
ip link set eth1 promisc on
3.创建使用macvlan网络的容器
docker run -it --network macvlan_1 --ip=172.16.1.200 busybox
docker run -it --network macvlan_1 --ip=172.16.1.201 busybox
作业1:docker跨主机容器间的通信flannel
唯一的不好就是要手动指定Ip,可能会存在Ip冲突
Dcoker跨主机容器通信之overlay
overlay用数据库集中管理IP,就不会出现Ip冲突
1.docker03作为主模式,运行consul服务
docker03上面执行:
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
设置容器的主机名(主机名不能相同)
consul:kv类型的存储数据库(key:value)
docker01、02上的配置信息:
1.修改docker配置文件
vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://registry.docker-cn.com"],
"hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"], #增加内容,监听本机端口,生成sock
"cluster-store": "consul://172.16.1.23:8500", #增加内容,集全的地址
"cluster-advertise": "172.16.1.22:2376" #增加内容,客户端的ip,使用本机IP
}
2.修改systemd启动文件
vim /usr/lib/systemd/system/docker.service
删除 -H fd://
3.重新加载damon文件
systemctl daemon-reload
4.重新启动docker
systemctl restart docker.service
2)创建overlay网络
docker network create -d overlay --subnet 172.16.1.0/24 --gateway 172.16.1.254 ol1 (这里创建的是全局的overlay网络)
3)启动容器测试
docker run -it --network ol1 --name oldboy01 busybox /bin/sh (名称不能相同,相同报错,Ip由docker03的consul服务分配的)
每个容器有两块网卡,eth0实现容器间的通讯,eth1实现容器访问外网 (作用,实现两块网卡功能,内网相互通信,外网卡访问外网服务)
docker network ls 查看docker的网络情况
http://172.16.1.23:8500 可以在网页打开这个地址,
harbor安装
1、阿里云DOCKER镜像地址
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com"]
}
2、下载compose
yum install -y docker-compose
下载harbor,在线模式安装,harbor在github上的地址https://github.com/goharbor/harbor/releases
wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-online-installer-v2.4.1.tgz
tar xf harbor-online-installer-v2.4.1.tgz
cd harbor/
mv harbor.yml.tmpl harbor.yml
sed -i 's#reg.mydomain.com#172.16.1.23#g' harbor.yml #更改主机名称,没有域名就直接填写IP
sed -i 's#Harbor12345#Keepgoing#g' harbor.yml #更改密码
3、安装可能会报错,注释harbor内的https配置文件。
4、sh install.sh
5、浏览器打开172.16.1.23 账号admin密码Keepgoing
登录docker,输入账号密码
docker login 172.16.1.23
如果登录不成功报错:Error response from daemon: Get "https://172.16.1.23/v2/": dial tcp 172.16.1.23:443: connect: connection refused
修改docker配置文件增加一行配置:
"insecure-registries": ["172.16.1.23"]
实例:
{ "registry-mirrors": ["https://registry.docker-cn.com"],
"hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
"cluster-store": "consul://172.16.1.23:8500",
"cluster-advertise": "172.16.1.22:2376",
"insecure-registries": ["172.16.1.23"]
}
重新docker服务,然后重新登录login
systemctl restart docker.service
上传镜像前,先给镜像打个标签
docker tag centos6.9_ssh:latest 172.16.1.23/library/centos6.9_ssh
打完标签了,然后上传
docker push 172.16.1.23/library/centos6.9_ssh