首页 > 其他分享 >docker学习

docker学习

时间:2024-05-10 16:11:25浏览次数:22  
标签:-- 学习 etc ssh 172.16 harbor docker

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

标签:--,学习,etc,ssh,172.16,harbor,docker
From: https://www.cnblogs.com/uutow/p/18184556

相关文章

  • docker的一些命令 以及dockerFile语法
    文件夹重新命名mvnode-v14.18.1-linux-x64node-v14.18.1dokcer命令 将linux的文件复制到docker容器里面       dockercp/usr/local/node-v14.18.1/8ec26052dfad:/usr/local/node-v14.18.1将docker容器里面的文件复制到linux       dockerc......
  • C#中的System.Security.SecureString学习
    有一次在公司review代码时,有一个password的字段,原来用的是String类型,有同事提到应该用SecureString比较好于是我花了点时间了解了一下什么是SecureString,以及它与String类型的区别正常的String类型值,在脱离开作用域后,它的值在内存中并不会立即被销毁.这个时候,如果有人恶意扫......
  • 自动驾驶:从模拟学习到逆强化学习的思考
    引言自动驾驶技术正在迅速发展,但要实现真正的自主驾驶,模型必须能够复杂且准确地模拟人类司机的行为。通过我的最近实验,我探索了基本的模拟学习,然后进一步探索逆强化学习等方法,目的是让自动驾驶模型不仅能模仿,更能深入理解驾驶的决策过程。模拟学习的初步尝试在进行VLM端到......
  • CSS-Grid网格布局学习心得
    CSS-grid属性:value(可选值):<'grid-template'>|<'grid-template-rows'>/[auto-flow&&dense?]<'grid-auto-columns'>?|[auto-flow&&dense?]<'grid-auto-rows'>/<'g......
  • Git学习——迁移单一仓库至其他代码托管平台
    目录简介流程总结简介因需迁移单一代码仓库至其他代码托管平台,要迁移的包括仓库内容以及所有历史记录和推送日志。本文中的方法同样适用于在同一代码托管平台中克隆仓库。流程1.创建新仓库:在目的平台的指定位置创建一个新的仓库(目的仓库),用于接收克隆的数据。2.克隆旧仓库......
  • Docker 桥接模式下端口映射会绕过防火墙
    问题描述使用Docker桥接模式启动了一个MySQL容器查看防火墙发现并未开启3306端口,但该宿主机3306端口仍能被第三方机器访问telnet152.51.32.113306 问题本质Docker在进行端口映射时,已经自动使用iptables命令修改了防火墙规则;并且这个规则不会被ufw显示、管理;甚至插入的......
  • 水泽信息收集docker安装
    具体参考水泽Docker安装点击跳转镜像源1.vim/etc/docker/daemon.json//对镜像源进行配置2.对包进行更新如果没有进行sudosu的话就得sudoaptupdate3.安装dockeraptinstalldocker.io#常见命令sudosystemctlstartdockersudosystemctlenabledoc......
  • docker安装海量数据库VastbaseG100
    安装海量数据库VastbaseG100过程较为繁琐,中途容易遇到许多报错,这里提供一个2.2build15版本的docker镜像,可方便安装。默认的license只有3个月有效期,仅供开发学习使用。1.拉取镜像dockerpullthankwhite/vastbase_g100:2.2.152.创建容器dockerrun-d--namevastbase\-p5......
  • docker-compose spark集群搭建
    需求满足产品数据团队计算相关需求,搭建spark集群,本集群为一主两从(两台设备)部署环境服务器资源docker-compose安装curl-Lhttps://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname-s`-`uname-m`-o/usr/local/bin/docker-compose......
  • Dos基本命令学习
    Dos基本命令学习打开CMD的方式开始+系统+命令提示符win键+R输入cmd打开控制台(推荐使用)在任意文件夹下面,按住shift键+鼠标右键,在此处打开命令行窗口资源管理器的地址栏加上cmd路径常用的Dos命令盘符切换输入对应盘符号加上英文冒号然后回车。例:E:查看当前目录下的......