docker:开源容器引擎:GO开发,apache2.0开源协议
打包应用到容器中,共用宿主机资源(轻量级),使用沙箱机制,C/S结构
概念:
docker image:创建容器的模板
docker container:独立的应用,一个或一组
docker register:代码仓库
6.5epel以上含有docker repo
docker安装:
nmcli connection delete ens33
nmcli connection add type ethernet con-name ens33 ifname ens33 autoconnect yes
nmcli connection modify ens33 ipv4.method auto connection.autoconnect yes or:
nmcli connection modify ens33 ipv4.method manual ipv4.addresses IP/24 ipv4.gateway IP ipv4.dns IP connection.autoconnect yes
nmcli connection up ens33
pingwww.baidu.com
rm -f /etc/yum.repos.d/*
curl -OL /etc/yum.repos.d/http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum repolist
yum install -y docker
docker存储配置:
NFS/gluster/LV
vim /etc/sysconfig/docker-storage-setup
: r /usr/^#参考的配置文件
DEVS=/dev/sdb #新挂载的设备
VG=zqydockervg #任意的名字
source docker-storage-setup(脚本可以反复使用)
systemctl enable docker;systemctl start docker
如果先启动了docker,需要:
rm -rf /var/lib/docker/ ; source docker-storage-setup
单机docker可以不做以下部分:
systemctl disable firewalld;systemctl stop firewalld
setenforce 0
image下载
docker version
docker images
docker search debian #official官方镜像
docker pull docker.io/debian:version number #version number没有默认下载最新版本latest
国内镜像加速器:
hub-mirror.c.163.com
vim /etc/sysconfig/docker
vim /etc/docker/daemon.json
{
"registry-mirrors":["http://hub-mirror.c.163.com"]
}
systemctl restart docker
需要的镜像:
for i in nginx:1.12 mysql:5.5 httpd:2.4 debian:8.10 centos:6.9 php:5.5 registry ;do docker pull $i;done
latest会每次检查版本
docker run -it --rm docker.io/debian:8.10 /bin/sh #/bin/sh可以缩写为bash
debian与centos类似命令:rpm=dpkt;apt-get=yum
/etc/apt/sources.list=repofile
apt-get upgrade
apt-get isntall apache2
apt-cache search apache2=yum search httpd
docker run -d -p 80:80 httpd #-p 端口转发:真机:容器
curl 真机IP
docker exec -it containerIP|containerName bash
find / -name idex.html
ls -l /usr/local/apache2/htdocs/index.html
docker ps #正在运行的容器 -a查询所有容器
CTRL+D退出容器
docker rm containerIP #退出的容器IP
docker stop container,docker kill -s KILL containerIP #停不下来强杀容器
docker logs containIP
image导入导出
docker save debian >/tmp/debian.tar
docker rmi debian
docker load < /tmp/debian.tar
image制作
dockerfile:
https://hub.docker.com/_/httpd/
抄一个dockerfile:/tmp/Dockerfile
docker build -t zqy/zqy:v1 /tmp
文件名必须叫Dockerfile
vim /tpm/Dockerfile
FROM centos#基础镜像
MAINTAINER zqy "[email protected]"
RUN /bin/echo 'root:redhat'|chpasswd
EXPOSE 22
ADD
CMD /usr/sbin/sshd -D
docker history
容器构建镜像:
docker run -it --name zqy debian bash#在容器中进行自定义
exit
docker commit -m "zqy v1" -a=zqy ContainerName zqy/zqy:v1 #提交镜像,-m:描述 -a:作者 本地镜像库/镜像名称:版本号
docker run -it --name zqy debian bash#在容器中进行自定义,容器进入exit状态后
docker export -o /tmp/zqy.tar ContainerName
ll -h /tmp/zqy.tar
docker import -m "zqy v2" /tmp/zqy.tar zqy/zqy:v2
docker images
docker logs ContainerName
docker events -f image=zqy/zqy:v2 --since 1467302400
docker history zqy/zqy:v2
##### 常见容器介绍 ######
应用类容器:nginx、httpd -P:随机端口 -p:指定端口 -d:后台容器
docker run -d -P --name zqyhttpd httpd:2.4
curl localhost:port|127.0.0.1:port
docker exec -it containername bash #容器内操作
docker stop containername
--restart=always:docker run中自动启动
docker rm `docker ps -q`
挂载卷:容器的永久性存储
docker run -d -P -v 真机路径(可以没有,会自动建):容器路径 --name http httpd bash
docker cp httpd:filename /tmp #
docker cp /etc/fstab httpd:tmp #
docker run -it -d -v /nginx:/usr/share/ nginx bash
docker run -it -d -P -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_USER=zqy -e MYSQL_PASSWORD=zqy -v /mysql:/var/lib/mysql --name mysql mysql
-e:容器作者设定参数
真机登陆:
mysql -hIP -Pprot -uroot -p123456
docker run -it --name centos --link mysql centos #加入环境变量,容器间建立连接
cat /etc/hosts
docker inspect centos #详细信息
本地镜像仓库:registry
login:master
vim /etc/hosts
ip registry
ip node2
ip node1
ip master
docker pull registry
docker run -it -d -p 5000:5000 --restart=always --name registry registry sh
find / -name registry #/var/lib/registry
docker tag debian:latest registry:5000/zqy/registry:latest #打标
vim /etc/docker/daemon.json
{"registry-mirrors":["http://hub-mirror.c.163.com"],"insecure-registry":["registry:5000"]}
sytemctl restart docker
docker push registry:5000/zqy/registry:latest
login:node2/node1 #下载image
挂存储
yum install docker -y
vim /etc/sysconfig/docker-storage-setup
docker-storage-setup
vgs
lvs
systemctl restart docker;systemctl enable docker
vim /etc/docker/daemon.json
docker pull registry:5000/zqy/registry:latest
本地镜像支持各节点push/pull镜像