虚拟化技术 -- docker
1.容器是什么?
1.1 docker诞生:
docker是dotcloud公司开源的一款产品,dotcloud是2010年新成立的一家公司,主要基于PAAS(Plafrom as a Service,平台即服务)平台为开发者提供服务。
2.2013年10月dotcloud公司改名为docker股份有限公司。
1.2 docker历程:
1.2.1 Linux container是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。
1.2.2 docker是PAAS提供商dotcloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。
1.2.3 docker设想是交付运行环境如同海运,OS如同一个货运,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。
1.3 docker构成
1.3.1 docker仓库:https://hub.docker.com
1.3.2 docker自身组件
docker Client: docker的客户端。
docker Server:docker daemon的主要组成部件,接收用户通过docker client发出的请求,并按照相应的路由规则实现路由转发。
docker镜像:docker镜像运行之后变成容器(docker run)
▶ 仓库、镜像(封装好的运行环境)、容器为docker三大件,缺一不可。
1.3.3 docker组件间的协同方式
1.3.4 docker化应用存在的方式
1.4 docker安装
1.4.1 script install
yum update
$ curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
docker run hello-world
1.4.2 yum install
yum update
cat >/etc/yum.repos.d/docker.repo << -EOF
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7
enable=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg EOF
yum install docker
1.4.3 rpm install
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
▶打开下载链接,下载相应的rpm包
▶优化linux系统,系统版本最好的centos7及以上。
▶优化linux系统
[root 11:40 @ docker ~] systemctl stop firewalld
[root 11:40 @ docker ~] systemctl disable firewalld
[root 11:40 @ docker ~] getenforce
[root 11:40 @ docker ~] systemctl start iptables(yum -y install iptables-services)
[root 11:40 @ docker ~] systemctl enable iptables
[root 11:40 @ docker ~] iptables -F
[root 11:40 @ docker ~] service iptables save
[root 11:40 @ docker ~] yum update #更新软件包
[root 11:40 @ docker ~] reboot
[root 11:40 @ docker ~] rz docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm
[root 11:40 @ docker ~] rz docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm
[root 11:40 @ docker ~] mkdir /application
[root 11:40 @ docker ~] mv docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm /application/
[root 11:59 @ docker ~] mv docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm /application/
[root 11:59 @ docker ~] cd /application
[root 11:59 @ docker ~] yum install -y *
[root 12:05 @ docker ~] systemctl start docker
[root 12:05 @ docker ~] systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root 12:06 @ docker ~] docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:f9dfddf63636d84ef479d645ab5885156ae030f611a56f3a7ac7f2fdd86d7e4e
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
[root 12:06 @ docker ~] docker version
1.5 docker加速配置
[root 12:06 @ docker ~] cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service
[root 12:06 @ docker ~] chmod 777 /etc/systemd/system/docker.service
[root 12:06 @ docker ~] vim /etc/systemd/system/docker.service
ExecStart=/usr/bin/dockerd-current --registry-mirror=https://kfp63jaj.mirror.aliyuncs.com \
[root 12:06 @ docker ~] systemctl daemon-reload
[root 12:06 @ docker ~] systemctl restart docker
[root 12:06 @ docker ~] ps -ef |grep docker
root 1841 1 0 12:21 ? 00:00:00 /usr/bin/dockerd --registry-mirror=https://kfp63jaj.mirror.aliyuncs.com
阿里云docker官网:https://dev.aliyun.com/search.html
1.6 docker化应用体验
♦ wordpress运行环境需要如下软件的支持:
▶PHP 5.6或更新软件
▶MySQL 5.6 或更新版本
▶Apache 和 mod_rewrite模块
♦ docker run --name db --env MYSQL_ROOT_PASSWORD=example -d mariadb
♦ docker run --name MyWordPress --link db:mysql -p 8080:80 -d wordpress
[root 12:06 @ docker ~] docker pull wordpress
[root 12:06 @ docker ~] docker pull mariadb
[root 13:57 @ docker ~] docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb latest 1fd0e719c495 13 days ago 356 MB
wordpress latest 126aa00ecc0c 2 weeks ago 539 MB
hello-world latest fce289e99eb9 14 months ago 1.84 kB
[root 14:00 @ docker ~] docker run --name MyWordPress -link db:mysql -p 8080:80 -d wordpress
[root 12:06 @ docker ~] docker run --name MyWordPress --link db:mysql -p 8080:80 -d wordpress
[root 14:02 @ docker ~] docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
845918a7ac50 wordpress "docker-entrypoint..." About a minute ago Up About a minute 0.0.0.0:8080->80/tcp MyWordPress
5ffff67360ab mariadb "docker-entrypoint..." 2 minutes ago Up 2 minutes 3306/tcp
[root 12:06 @ docker ~]