1、通过 RPM 安装 docker 17.03.0 版本并且配置 docker 阿里加速

1.1官网下载dockers17.03.0rpm包

RPM下载地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

rpm安装docker依赖 docker rpm 安装_centos


rpm安装docker依赖 docker rpm 安装_linux_02

1.2 centos7上通过rpm包安装docker

1.关闭防火墙

[root@centos7 ~]# systemctl stop firewalld 
[root@centos7 ~]# systemctl disable firewalld

2.关闭selinux

[root@centos7 ~]# getenforce 
Disabled

3.安装并启动iptables
因为:docker会利用防火墙策略配置一些功能

#安装防火墙
[root@centos7 ~]# yum install  -y  iptables 
#清空防火墙规则
[root@centos7 ~]# iptables -F 
[root@centos7 ~]# iptables-save > /etc/iptables.rules

4.更新软件包

[root@centos7 ~]# yum update -y

把rpm包上传至服务器

rpm安装docker依赖 docker rpm 安装_docker_03


5.进行安装docker

#创建docker文件夹
[root@centos7 ~]# mkdir /docker 
[root@centos7 ~]# mv /root/d*  /docker 
[root@centos7 ~]# ll /docker/
total 19096
-rw-r--r-- 1 root root 19521288 Nov 15 12:47 docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root    29108 Nov 15 12:47 docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm
#yum对rpm进行安装
[root@centos7 docker]# yum install  -y   *  
#启动docker
[root@centos7 docker]# systemctl  enable --now docker  
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@centos7 docker]# docker version 
Client:
 Version:      17.03.0-ce
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   3a232c8
 Built:        Tue Feb 28 08:10:07 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.03.0-ce
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   3a232c8
 Built:        Tue Feb 28 08:10:07 2017
 OS/Arch:      linux/amd64
 Experimental: false

1.3 docker进行加速配置

因为docker镜像官方源在国外,所以下载镜像比较慢,所以进行加速,利用国内源,此处利用阿里源。

rpm安装docker依赖 docker rpm 安装_centos_04


生成配置文件

[root@centos7 docker]# mkdir /etc/docker

[root@centos7 docker]# tee /etc/docker/daemon.json <<EOF
{
 "registry-mirrors": ["https://123456.mirror.aliyuncs.com"]      #写入上面自己的阿里云加速地址
}
EOF

重新加载配置,重启docker服务

[root@centos7 docker]# systemctl daemon-reload 
[root@centos7 docker]# systemctl restart docker 

#验证加速
[root@centos7 docker]# docker info  
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 17.03.0-ce
Storage Driver: overlay
 Backing Filesystem: xfs
 Supports d_type: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 977c511eda0925a723debdc94d09459af49d082a
runc version: a01dafd48bc1c7cc12bdb01206f9fea7dd6feb70
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-1127.19.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 972.4 MiB
Name: centos7
ID: S6LA:H6UO:2ZUN:TOHH:M5KJ:2PDC:SZ63:73JJ:BZLX:TG6D:YPAO:PIFD
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Registry Mirrors:
 https://123456.mirror.aliyuncs.com  #此处为阿里云的加速地址 
Live Restore Enabled: false

docker 安装成功。

2、通过 docker 安装一个 LAPM 架构

通过docker部署wordpress

2.1 下载wordpress和mariadb镜像包

[root@centos7 ~]# docker pull wordpress 
[root@centos7 ~]# docker pull  mariadb 
[root@centos7 ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mariadb             latest              2ab9d091310d        3 days ago          414 MB
wordpress           latest              6edecd0f5c75        9 days ago          546 MB

2.2 docker运行数据库服务

#运行数据库 
[root@centos7 ~]# docker run --name mydb --env MYSQL_ROOT_PASSWORD=123456  -d mariadb
b3ad5231d2185930b788ed2bf997415e291246186faca77b78627a806a31b262
#docker run :表示从镜像运行为容器。 
#--name mydb:然后给这个容器起起名为mydb。 
#--env 向容器中注入环境变量。环境变量的好处是数据库在做初始化的时候,需要告诉他mysql的初始化密码为多少,而在这里我们可以通过指定环境变量的方式告诉他,我们现在的mysql初始化密码为多少。
#MYSQL_ROOT_PASSWORD=123456 : 这个是数据库的初始化密码。
#-d :放到后台运行,因为mysql是一个前台守护进程。
#mariadb:数据库的服务是mariadb

2.3运行wordpress

[root@centos7 ~]# docker run --name mywordpress  --link mydb:mysql -p 8888:80 -d wordpress 
28535b1048506d0eda21e1083702cb723b7c9aa3733fa170abe35b2c48d0e644

#docker run :表示从镜像运行为容器。
#--name mywordpress:给容器起名为mywordpress
#--link:表示为链接关系
#mydb:mysql:就是上面一条命令的mydb,然后mysql是他起的一个别名,他会向/etc/hosts文件里写一个解析记录,解析的值就是上一条命令中运行的容器地址,这样的话就可以通过别名来进行访问了
#-p 8080:80:表示的是端口映射,因为他是基于我们容器级别的隔离所以他会有自己独立的网络空间,怎么外网才可以访问他呢,做我们的dnat(反向代理将自己的服务端口暴露出去供外网访问) 映射。
#8080:表示本机的端口、80:表示容器的端口,也就是访问宿主机本机的8080端口就可以访问到容器的80端口。
#-d :放到后台运行,因为mysql是一个前台守护进程。
#word press:启动的是一个word press的容器

2.4 查看正在运行的容器

[root@centos7 ~]# docker ps   
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
28535b104850        wordpress           "docker-entrypoint..."   14 seconds ago      Up 13 seconds       0.0.0.0:8888->80/tcp   mywordpress
b3ad5231d218        mariadb             "docker-entrypoint..."   2 minutes ago       Up 2 minutes        3306/tcp               mydb

2.5 进行安装wordpress

浏览器访问 :http://10.0.0.123:8888/

安装wordpress

rpm安装docker依赖 docker rpm 安装_rpm安装docker依赖_05


rpm安装docker依赖 docker rpm 安装_centos_06


rpm安装docker依赖 docker rpm 安装_linux_07


rpm安装docker依赖 docker rpm 安装_docker_08


rpm安装docker依赖 docker rpm 安装_mysql_09


wordpress安装成功。

3、写出 docker run 命令的延申指令,如怎么在停止一个 docker 容器的时候自动删除该容器

docker run  [选项] [参数] [shell命令] [参数]

#选项:
-i  :  以交互式模式运行容器,一般与  -t 一起使用.
-t  :  为容器重新分配一个伪输入终端,通常与 -i一起使用
-d  :  后台运行,默认是前台运行容器
--name : 运行容器时,起一个名字
--h    : 指定主机名
--rm   : 删除已经退出的容器
-P     : 发布端口。把预先设定好的端口,发布出来.让其他机器能够访问。如http的80端口,发布出来,供其他机器访问 
-p     :发布容器的端口到宿主机 ,可以指定映射暴露的端口,如  -p 8888:80 就是把80端口映射成8888,供外界访问
--restart  policy策略
--privileged :提升权限给容器使用  (root)

举例:运行完centos之后,删除容器

docker run  --rm centos  cat /etc/redhat-release  #运行完容器之后,删除容器

4、写出 docker run 命令在自动启动 docker 服务时通过什么参数能够启动 docker 中的容器,从而实现容器随着 docker 服务的启动而自动启动

docker  run  --restart always  httpd  #随着docker的启动,而httpd容器也随之启动