一、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
使用[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
3、其他环境配置
4、提交镜像
docker commit
docker commit centoslatest centosimage:last.20170208
5、保存镜像
sudo docker save > <路径>
sudo docker save centosimage:last.20170208 > /opt/centosimage:last.20170208.tar
6、恢复镜像
docker load < <路径>
docker load < /opt/centosimage:last.20170208.tar
四、其他常用命令
# 查看所有的容器
sudo docker ps -a
# 删除容器
sudo docker rm
# 查看所有的镜像
sudo docker images
# 删除镜像
sudo docker rmi
#一次性删除所有的容器
docker rm $(docker ps -q -a)
#一次性删除所有的镜像
docker rmi $(docker images -q)
# 显示镜像的所有层(layer)
sudo docker images --tree
#导出容器
sudo docker export [CONTAINER ID] > [路径]
比保存镜像小一些
#导入容器
cat <路径> | sudo docker import -
#查看容器进程
docker inspect -f "{{.State.Pid}}"
#查看容器IP
docker inspect -f '{{.NetworkSettings.IPAddress}}'