docker的部署安装(Linux kernel至少3.8以上):
yum install docker
docker1.8安装:(下面 是两个命令)
# cat >/etc/yum.repos.d/docker.repo<<-EOF
[dockerrepo]
name=DockerRepository
baseurl=https://yum.dockerproject.org/repo/main/centos/7
enabled=1gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF (添加yum仓库)
# yum install docker-engine (安装)
设置开机启动DockerDaemon进程
systemctl start docker.service (启动docker进程)
systemctl enable docker.service (设置开机启动)
systemctl grep docker查看docker进程的状态
防火墙设置
systemctl disable firewald (centos7中是这个防火墙)
yum - yinstall iptables-services(安装原来的iptables)
systemctl enavle iptables
systemctl start iptables
这么做的原意是因为只有iptables防火墙才能让docker有正常的端口映射
docker1.8对centos6是不支持的
docker version
docker安装完成 client versino和server version基本是一样的
docker安装完成之后的docker0网桥
ifconfig本机的docker0网桥是本地的网桥,只能本地访问
docker的配置文件
/etc/sysconfig/docker (centos6)
中加入镜像地址的配置–registry-mirrot=http://xxxx可以加速访问,通过去相应的网址注册获取网址
重要参数:
OPTIONS用来控制DockerDaemon进程参数
-H 表示DockerDaemon绑定的地址,-H=unix:///var/run/docker.sock -H=tcp://0.0.0.0:2375–registry-mirror表示DockerRegistry的镜像地址
–registry-mirror=http://4bc5abeb.m.daocloud.io
–insecure-registry表示(本地)私有DockerRegistry的地址,
–insecure-registry ${pivateRegistyHost}:5000
–selinux-enabled是否开启SELinux,默认开启
–selinux-enabled=true–bip表示网桥docker0使用指定CIDR网络地址,
–bip=172.17.42.1-b表示采用已经创建好的网桥,
-b=xxx重要参数解释:
OPTIONS=-H=unix:///var/run/docker.sock -H=tcp://0.0.0.0:2375 --registry-mirror=http://4bc5abeb.m.daocloud.io --selinux-enabled=true下面是代理的设置http_proxy=xxxxx:8080https_proxy=xxxxxx:8080
vi /usr/lib/systemd/system/docker.service(centos7)
建议运行docker的时候打开日志查看
/var/log/message
如果命令行的错误不能准确的判断,就去看日志。
比如,不能上网是因为没有设置代理
www.docker.com
可以查看docker,能知道是怎么做的镜像
docker基本命令
docker search java
查看镜像
docker pull 是分层下载的,所以下次pull的时候,只会下载没有的部分,已经存在的部分是不下载的
docker images
查看所有的镜像
docker run
docker run 里面的命令结束了,container就结束了
docker run -it(交互模式) java(镜像)java --version(执行的命令)
docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG…]
决定容器的运行方式,前台执行还是后台执行
docker run后面追加-d=true或者-d,那么容器将会运行在后台模式。
docker exec来进入到到该容器中,或者attach重新连接容器的会话 进行交互式操作(例如Shell脚本),那我们必须使用-i -t参数同容器进行数据交互
docker run时没有指定–name,那么deamon会自动生成一个随机字符串UUID
Docker时有自动化的需求,你可以将containerID输出到指定的文件中(PIDfile): --cidfile=""
Docker的容器是没有特权的,例如不能在容器中再启动一个容器。这是因为默认情况下容器是不能访问任何其它设备的。但是通过"privileged",容器就拥有了访问任何其它设备的权限。
docker run java ip addr
可以看到给container分配的ip地址,每个容器都会分配一个ip地址,本地可以访问
attach和exec都是进入后台的容器
但是attach是将容器当前的输出拿过来,attach退出之后不注意的话,会把原来的docker进程停掉,建议exec
符合docker生命周期的命令
create 仅仅生成一个容器但是不启动他
start 开启
stop 停止
pause 暂停
unpase 恢复
docker ps
查看正在运行的容器
docker ps -a
所有的容器
run -rm
运行完就删掉的容器
mysql镜像举例:docker start java java-version之后 docker ps 发现并没有docker容器
因为是前台运行的,执行完了之后自动停止了
但是如果是mysql的话,是服务性质的容器,docker ps是存在的。
-d 可以解决
netstat -tlp
看到docker-proxy,mysql在运行了。远程连接mysql -uroot -p23423 -h10.0.1.225
docker exec -it mysql /bin/bash(进入mysql容器的bash模式)
docker exec mysql env 可以查看密码,密码是存在环境变量中的
docker start -e mysql_root_password=234345(将密码放到了环境变量中,容器中不建议更改配置文件,这样就不能多出运行了,环境变量做的很好,也可以zk–配置文件放在集中的地方)
cat /vat/log/mysql/error.log看mysql’的日志