docker笔记

孤人 提交于 2020-08-10 09:46:52

一、windows 7下安装docker
1、下载Docker Toolbox,下载地址:https://www.docker.com/products/docker-toolbox
2、默认安装Docker Toolbox即可
3、安装好后,启动Docker Toolbox terminal,等待配置结束,显示虚拟机IP地址,出现命令符$
注:1)出现Error with pre-create check: "This Computer doesn't have VT-x/AMD-v enabled. Enabling it in the BIOS is mandatory",则需要去BIOS开启VT
2)如果boot2docker.iso下载失败,可以手工下载https://github.com/boot2docker/boot2docker/releases/download/v1.12.6/boot2docker.iso,然后放到C:\Users\Administrator\.docker\machine\cache\目录
4、执行命令确认
#查看版本
docker version
#查看信息
docker info
5、进入虚拟机
1)命令行下进入虚拟机,默认docker账号
docker-machine ssh default
#切换root权限
sudo -i
2)SecureCRT连接虚拟机192.168.99.100, 账号docker密码tcuser
6、镜像加速
docker-machine ssh default
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile 
exit
docker-machine restart default
7、下载镜像
docker pull centos:latest
8、启动镜像
docker run --restart always --privileged -dit --name centoslatest  docker.io/centos:latest /bin/bash
9、本地进入虚拟机
docker-machine ssh default
sudo -i
#增加新IP,eth1为192.168.99.101的网卡
ifconfig eth1:0 192.168.99.101 netmask 255.255.255.0 up
echo "ifconfig eth1:0 192.168.99.101 netmask 255.255.255.0 up" >> /opt/bootlocal.sh
#查看容器IP
docker inspect -f '``.`NetworkSettings`.`IPAddress`' centoslatest

#增加转发,192.168.99.101为新增地址,172.17.0.2为容器IP

iptables -t nat -A PREROUTING -d 192.168.99.101 -j DNAT --to-destination 172.17.0.2
iptables -t nat -A POSTROUTING -d 172.17.0.2 -j SNAT --to 172.17.0.1

#开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward  
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
#防火墙开启转发
iptables -F
至此访问192.168.99.101即访问容器


二、Redhat 7.X安装docker

1、确认内核版本uname -r,版本3.10以上
2、修改yum源
3、yum install -y docker

4、镜像加速

sudo cp /lib/systemd/system/docker.service /lib/systemd/system/docker.service.bak

sudo sed -i "s|\(ExecStart=/usr/bin/docker[^ ]*\)|\1 --registry-mirror="加速地址"|g" /lib/systemd/system/docker.service

5、重加载配置
sudo systemctl daemon-reload
6、启动docker服务
sudo service docker start

7、下载镜像
docker pull centos:latest

8、启动容器
docker run --restart always --privileged -dit --name centoslatest  docker.io/centos:latest /bin/bash

9、进入容器
docker attach <NAME 或 CONTAINER ID>

使用[ctrl + D],这样会结束docker当前线程,容器结束,可以使用[ctrl + P][ctrl + Q]退出而不终止容器运行
切换root权限
sudo -i


10、增加独立IP

sudo -i
#增加新IP,eth1为192.168.1.10的网卡

ifconfig eth1:0 192.168.1.10 netmask 255.255.255.0 up

#永久增加虚拟网卡
echo -e "DEVICE=eth0:0\nBOOTPROTO=static\nIPADDR=192.168.1.10\nNETMASK=255.255.255.0\nONBOOT=yes" > /etc/sysconfig/network-scripts/ifcfg-eth0:0
sudo /etc/init.d/networking restart

#查看容器IP
docker inspect -f '``.`NetworkSettings`.`IPAddress`' centoslatest

#增加转发,192.168.1.10为新增地址,172.17.0.2为容器IP

iptables -t nat -A PREROUTING -d 192.168.1.10 -j DNAT --to-destination 172.17.0.2
iptables -t nat -A POSTROUTING -d 172.17.0.2 -j SNAT --to 172.17.0.1

#开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward  
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
#防火墙开启转发
iptables -F
至此访问192.168.1.10即访问容器


三、容器配置

1、ssh安装
yum install -y openssh-server
ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key  -N ''
sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config
sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config
#/usr/sbin/sshd -D
service sshd start


2、基本软件
yum install -y vim wget curl sudo passwd openssl
#ifconfig
yum install -y net-tools.x86_64
#lsb_release
yum install -y redhat-lsb
#crontab
yum -y install vixie-cron


3、其他环境配置


4、提交镜像
docker commit <CONTAINER ID或NAME>
docker commit centoslatest centosp_w_picpath:last.20170208


5、保存镜像
sudo docker save <IMAGE ID> > <路径>
sudo docker save centosp_w_picpath:last.20170208 > /opt/centosp_w_picpath:last.20170208.tar


6、恢复镜像
docker load < <路径>
docker load < /opt/centosp_w_picpath:last.20170208.tar


四、其他常用命令
# 查看所有的容器
sudo docker ps -a


# 删除容器
sudo docker rm <CONTAINER ID>


# 查看所有的镜像
sudo docker p_w_picpaths


# 删除镜像
sudo docker rmi <IMAGE ID>


#一次性删除所有的容器
docker rm $(docker ps -q -a)
#一次性删除所有的镜像
docker rmi $(docker p_w_picpaths -q)


# 显示镜像的所有层(layer)
sudo docker p_w_picpaths --tree


#导出容器
sudo docker export [CONTAINER ID] > [路径]
比保存镜像小一些


#导入容器
cat <路径> | sudo docker import - <CONTAINER ID>


#查看容器进程
docker inspect -f "``.`State`.`Pid`" <CONTAINER ID>


#查看容器IP
docker inspect -f '``.`NetworkSettings`.`IPAddress`' <CONTAINER ID>  



#!/bin/bash


#1、yum 安装软件
yum install -y net-tools
yum install -y bridge-utils
yum -y install docker-io


#禁用selinux


#安装pipework
wget https://github.com/jpetazzo/pipework/archive/master.zip
unzip master.zip
cp ./pipework-master/pipework  /usr/local/bin/
chmod +x /usr/local/bin/pipework


#关闭网卡
service docker stop
ifconfig docker0 down
brctl delbr docker0


brctl addbr br0
brctl addif br0 eth0
ip addr del 192.168.94.157/24 dev eth0
ifconfig br0 192.168.94.157/24 up
route del default
route add default gw 192.168.94.1


#/lib/systemd/system/docker.service
#镜像加速和默认网桥
sudo cp /lib/systemd/system/docker.service /lib/systemd/system/docker.service.bak
sudo sed -i "s|\(ExecStart=/usr/bin/docker[^ ]*\)|\1 --bridge=br0 --registry-mirror="http://841e28b9.m.daocloud.io"|g" /lib/systemd/system/docker.service


systemctl daemon-reload
systemctl restart docker


ip link del docker0
#启动一个不带网络的容器
docker run -itd --name test --net=none centos /bin/bash


#给已经存在的名称为test的容器配置地址和网关
pipework br0 test 192.168.94.206/24@192.168.94.1


centos镜像配置

#基本软件
yum install -y vim wget curl sudo passwd openssl


#ssh
yum install -y openssh-server
ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key  -N ''
sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config
sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config
#/usr/sbin/sshd -D
service sshd start


#查看IP
ip addr ls eth0


#ifconfig
yum install -y net-tools.x86_64
#lsb_release
yum install -y redhat-lsb











































































































































































































































































易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!