虚拟化
第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]

docker自动导入镜像

[不指定 2023/06/03 11:40 | by 刘新修 ]

vi /sh/scp-docker.sh

#### 同步远程的docker镜像自动装载

C#代码
  1. cd /data/backup &&  
  2. scp root@172.16.207.22:/data/backup/* ./ &&  
  3. docker stop nginx-nodejs-redis:v2b &&  
  4. docker rm nginx-nodejs-redis:v2b &&  
  5. docker stop jenkins-rsync:v2b &&  
  6. docker rm jenkins-rsync:v2b &&  
  7. docker rmi nginx-nodejs-redis:v2b &&  
  8. docker rmi jenkins-rsync:v2b &&  
  9. docker image load -i jenkins-rsync-v2b.tgz &&  
  10. docker image load -i nginx-nodejs-redis-v2b.tgz &&  
  11. rm -rf /data/apps &&  
  12. mkdir -p /data/apps/nginx/htdocs &&  
  13. mkdir -p /data/apps/redis/htdocs &&  
  14. mkdir -p /data/apps/rsync/www &&  
  15. mkdir -p /data/apps/nodejs/htdocs/nest/KTM/dist &&  
  16. mkdir -p /data/apps/nodejs/htdocs/nest/KTM/public &&  
  17. mkdir -p /data/apps/nodejs/htdocs/nest/do_nest/public/www &&  
  18. mkdir -p /data/apps/nodejs/htdocs/nest/other &&  
  19. docker run \  
  20.     -u root \  
  21.     -p 80:80 \  
  22.     -p 8080:80 \  
  23.     -p 3000:3000 \  
  24.     -p 6379:6379 \  
  25.     -v /data/apps/nginx/htdocs:/data/nginx/htdocs \  
  26.     -v /data/apps/redis/htdocs:/data/redis/htdocs \  
  27.     -v /data/apps/rsync:/data/rsync \  
  28.     -v /data/apps/nodejs/htdocs/nest/KTM/dist:/data/nodejs/htdocs/nest/KTM/dist \  
  29.     -v /data/apps/nodejs/htdocs/nest/KTM/public:/data/nodejs/htdocs/nest/KTM/public \  
  30.     -v /data/apps/nodejs/htdocs/nest/do_nest/public/www:/data/nodejs/htdocs/nest/do_nest/public/www \  
  31.     -v /data/apps/nodejs/htdocs/nest/other:/data/nodejs/htdocs/nest/other \  
  32.     --privileged=true \  
  33.     --name=nginx-nodejs-redis-v2b \  
  34.     -d --restart=always nginx-nodejs-redis:v2b &&  
  35. docker run -p 4440:8080 -p 5000:5000 -p 8730:873 \  
  36.     -u root \  
  37.     --name=jenkins-rsync-v2b \  
  38.     --privileged=true \  
  39.     -v /etc/localtime:/etc/localtime \  
  40.     -v /data/apps/jenkins_home:/data/jenkins \  
  41.     -v /data/apps/rsync/www:/data/rsync/www \  
  42.     -d --restart=always jenkins-rsync:v2b  

### 重启定时器服务

chmod 755 /sh/scp-docker.sh

systemctl restart crond

### 编辑和查看定时器配置

crontab -e

crontab -l

### 每天的2:10重启smb

10 2 * * * /sh/scp-docker.sh

查看某个容器的详细信息

docker inspect 657f23bba0c6

进入默认容器的配置文件目录

C#代码
  1. cd /var/lib/docker/containers/657f23bba0c6ddc002c0b2f57c23edd36be742f9777f5ed9b755538085c419b0  

我们将要修改的文件就是config.v2.json和hostconfig.json

修改config.v2.json

调出冒号命令,输入如下(这里注意,shift+:),%!python -m json.tool

====================================

C#代码
  1. "MountPoints": {  
  2.     ...,  
  3.     "/data/rsync": {  
  4.         "Destination""/data/rsync",  
  5.         "Driver""",  
  6.         "Name""",  
  7.         "Propagation""rprivate",  
  8.         "RW"true,  
  9.         "SkipMountpointCreation"false,  
  10.         "Source""/data/apps/rsync",  
  11.         "Spec": {  
  12.             "Source""/data/apps/rsync",  
  13.             "Target""/data/rsync",  
  14.             "Type""bind"  
  15.         },  
  16.         "Type""bind"  
  17.     }  
  18. }  

 

修改hostconfig.json

调出冒号命令,输入如下(这里注意,shift+:),%!python -m json.tool

C#代码
  1. "AutoRemove"false,  
  2. "Binds": [  
  3.     "/data/apps/nginx/htdocs:/data/nginx/htdocs",  
  4.     "/data/apps/redis/htdocs:/data/redis/htdocs",  
  5.     "/data/apps/nodejs/htdocs/nest/other:/data/nodejs/htdocs/nest/other",  
  6.     "/data/apps/nodejs/htdocs/nest/do_nest/public/www:/data/nodejs/htdocs/nest/do_nest/public/www",  
  7.     "/data/apps/nodejs/htdocs/nest/KTM/dist:/data/nodejs/htdocs/nest/KTM/dist",  
  8.     "/data/apps/nodejs/htdocs/nest/KTM/public:/data/nodejs/htdocs/nest/KTM/public",  
  9.     "/data/apps/rsync:/data/rsync"  
  10. ],  

 先关闭docker服务

C#代码
  1. systemctl start docker  
  2. systemctl stop docker  
  3. systemctl stop docker.socket  
  4. systemctl enable docker.service  

 

 

 问题背景,从vmware6.0版本的物理机上导出虚拟机ovf模板后,导入到4.1版本物理机上时报错:“硬件系列vmx-11不受支持”。

1.打开xxx.ovf文件,将<vssd:VirtualSystemType>vmx-11</vssd:VirtualSystemType> 改成物理机支持的版本:<vssd:VirtualSystemType>vmx-7</vssd:VirtualSystemType> 

2.打开xxx.mf文件,将对VOF引用的哪一行删掉,不然 在部署的时候会报文件 xxxx.ovf 的完整性检查失败,可能在传输过程中已损坏。

删掉 SHA1(xxx.ovf)= f801b24cd5f664a9f3f88810b87e0080fb5bf29f

Docker v17.04.0-ce-rc1 发布了,并将于 2017-04-05 发布 17.04.0-ce  版本。本次更新内容如下:

Client

  • Sort docker stack ls by name #31085

  • Flags for specifying bind mount consistency #31047

  • Suppressing image digest in docker ps #30848

  • Hide command options that are related to Windows #30788

  • Fix docker plugin install prompt to accept "enter" for the "N" default #30769

  • Add truncate function for Go templates #30484

  • Support expanded syntax of ports in stack deploy #30476

  • Support expanded syntax of mounts in stack deploy #30597 #31795

  • Add --add-host for docker build #30383

  • Add .CreatedAt placeholder for docker network ls --format #29900

  • Update order of --secret-rm and --secret-add #29802

  • Fix use of **/ in .dockerignore #29043

  • Add --filter enabled=true for docker plugin ls #28627

  • Add --format to docker service ls #28199

  • Add publish and expose filter for docker ps --filter #27557

  • Support multiple service IDs on docker service ps #25234

  • Allow swarm join with --availability=drain #24993

  • Removal of the email from docker login #26868

Networking

  • Check parameter --ip, --ip6 and --link-local-ip in docker network connect #30807

  • Added support for dns-search #30117

  • Added --verbose option for docker network inspect to show task details from all swarm nodes #31710

Runtime

  • Handle paused container when restoring without live-restore set #31704

  • Do not allow sub second in healthcheck options in Dockerfile #31177

  • Support name and id prefix in secret update #30856

  • Use binary frame for websocket attach endpoint #30460

  • Fix linux mount calls not applying propagation type changes #30416

  • Fix ExecIds leak on failed exec -i #30340

  • Prune named but untagged images if danglingOnly=true #30330

  • Add daemon flag to set no_new_priv as default for unprivileged containers #29984

  • Add daemon option --default-shm-size #29692

  • Support registry mirror config reload #29650

  • Ignore the daemon log config when building images #29552

  • Move secret name or ID prefix resolving from client to daemon #29218

  • Implement optional ring buffer for container logs #28762

  • Allow adding rules to cgroup devices.allow on container create/run #22563

Swarm Mode

  • Add Service logs formatting #31672

  • Fix service logs API to be able to specify stream #31313

  • Add --stop-signal for service create and service update #30754

  • Add --read-only for service create and service update #30162

  • Renew the context after communicating with the registry #31586

Windows

  • Wait for OOBE to prevent crashing during host update #31054

  • Block pulling Windows images on non-Windows daemons #29001

下载

3月2日,Docker 官方发布了一篇 blog ,宣布企业版到来。版本也从1.13.x一跃到17.03。

之后,Docker 会每月发布一个 edge 版本(17.03, 17.04, 17.05...),每三个月发布一个 stable 版本(17.03, 17.06, 17.09...),企业版(EE) 和 stable 版本号保持一致,但每个版本提供一年维护。

Docker 的 Linux 发行版的软件仓库也从以前的https://apt.dockerproject.org / https://yum.dockerproject.org 变更为目前的 https://download.docker.com/。软件包名变更为 docker-ce(社区版) 和 docker-ee(企业版)。

旧的仓库和包名(docker-engine)依旧可以使用,但不确定什么时候会被废弃,docker-engine 的版本号也变成了17.03.0~ce-0这种的版本号。

Docker v17.03.0-ce 版本更新内容和下载地址请查看发行日志

Docker的网络模式和跨主机通信(Docker的四种网络模式Bridge模式)

当Docker进程启动时,会在主机上创建一个名为docker0...

Docker的四种网络模式

1. Bridge模式

当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。

从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。可以通过brctl show命令查看。

bridge模式是docker的默认网络模式,不写--net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。

 

bridge模式如下图所示:

演示:

C#代码
  1. #docker run -tid --net=bridge --name docker_bri1 ubuntu-base:v3  
  2. #docker run -tid --net=bridge --name docker_bri2 ubuntu-base:v3  
  3.  
  4. #brctl show  
  5. #docker exec -ti docker_bri1 /bin/bash  
  6. #docker exec -ti docker_bri1 /bin/bash  
  7.  
  8. #ifconfig –a  
  9. #route –n  

2. Host模式

如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

Host模式如下图所示:

演示:

C#代码
  1. #docker run -tid --net=host --name docker_host1 ubuntu-base:v3  
  2. #docker run -tid --net=host --name docker_host2 ubuntu-base:v3  
  3.  
  4. #docker exec -ti docker_host1 /bin/bash  
  5. #docker exec -ti docker_host1 /bin/bash  
  6.  
  7. #ifconfig –a  
  8. #route –n  

3. Container模式

这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。

Container模式示意图:

演示:

C#代码
  1. #docker run -tid --net=container:docker_bri1 --name docker_con1 ubuntu-base:v3  
  2.  
  3. #docker exec -ti docker_con1 /bin/bash  
  4. #docker exec -ti docker_bri1 /bin/bash  
  5.  
  6. #ifconfig –a  
  7. #route -n  

4. None模式

使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

Node模式示意图:

演示:

C#代码
  1. #docker run -tid --net=none --name docker_non1 ubuntu-base:v3  
  2. #docker exec -ti docker_non1 /bin/bash  
  3.  
  4. #ifconfig –a  
  5. #route -n  

跨主机通信

Docker默认的网络环境下,单台主机上的Docker容器可以通过docker0网桥直接通信,而不同主机上的Docker容器之间只能通过在主机上做端口映射进行通信。这种端口映射方式对很多集群应用来说极不方便。如果能让Docker容器之间直接使用自己的IP地址进行通信,会解决很多问题。按实现原理可分别直接路由方式、桥接方式(如pipework)、Overlay隧道方式(如flannel、ovs+gre)等。

直接路由

通过在Docker主机上添加静态路由实现跨宿主机通信:

Pipework

Pipework是一个简单易用的Docker容器网络配置工具。由200多行shell脚本实现。通过使用ip、brctl、ovs-vsctl等命令来为Docker容器配置自定义的网桥、网卡、路由等。

使用新建的bri0网桥代替缺省的docker0网桥

bri0网桥与缺省的docker0网桥的区别:bri0和主机eth0之间是veth pair

第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]