作业九
一、通过 RPM 安装 docker 17.03.0 版本并且配置 docker 阿里加速
#下载docker 17.03.0 版本的rpm包
[[email protected] ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm
#使用rpm安装docker 17.03.0包
[[email protected] ~]# rpm --force --nodeps -ivh docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm
#配置阿里加速
[[email protected] ~]# tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://aabbccdd.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors": ["https://aabbccdd.mirror.aliyuncs.com"]
}
[[email protected] ~]# ll /etc/docker/daemon.json
-rw-r--r-- 1 root root 67 Nov 16 18:26 /etc/docker/daemon.json
#启动docker
[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# systemctl start docker
[[email protected] ~]# 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
二、通过 docker 安装一个 LAPM 架构
#从hub上拉取centos:8.2.2004的镜像
[[email protected] ~]# docker pull centos:8.2.2004
#启动centos:8.2.2004的容器,命名lamp
[[email protected] ~]# docker run -itd --name lamp -p 80:80 --privileged centos:8.2.2004 /usr/sbin/init
#注意:在启动容器时要加--privileged,并运行/usr/sbin/init否则在启动服务时会有如下提示:
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
#进入lamp容器
[[email protected] ~]# docker exec -it lamp /bin/bash
#清空repo源
[[email protected] /]# rm -f /etc/yum.repos.d/*.repo
#手动拷贝国内repo源到容器
[[email protected] ~]# docker cp base.repo lamp:/etc/yum.repos.d/
[[email protected] /]# ls /etc/yum.repos.d/
base.repo
#安装lamp相关包
[[email protected] /]# yum -y install vim httpd php php-mysqlnd mariadb-server
#修改为prefork模式支持httpd 模块方式
[[email protected] /]# vim /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#制作lamp.php文件
[[email protected] /]# vim /var/www/html/lamp.php
<?php
try {
$user='root';
$pass='';
$dbh = new PDO('mysql:host=localhost;dbname=mysql', $user, $pass);
foreach($dbh->query('SELECT user,host from user') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
phpinfo();
?>
#启动httpd和mariadb服务
[[email protected] /]# systemctl start httpd mariadb
#检查容器80端口已启动
[[email protected] /]# ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 80 *:3306 *:*
#检查宿主机80端口已启动
[[email protected] ~]# ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 127.0.0.1:6012 0.0.0.0:*
LISTEN 0 128 127.0.0.1:6013 0.0.0.0:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 128 [::1]:6012 [::]:*
LISTEN 0 128 [::1]:6013 [::]:*
#浏览器访问http://宿主机IP/lamp.php可以看到如下页面,LAMP 搭建成功!
三、写出 docker run 命令的延申指令,如怎么在停止一个 docker 容器的时候自动删除该容器
#在启动容器时添加--rm参数
[[email protected] ~]# docker run -it --name test --rm alpine
/ # exit
[[email protected] ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
四、写出 docker run 命令在自动启动 docker 服务时通过什么参数能够启动 docker 中的容器,从而实现容器随着 docker 服务的启动而自动启动
#在启动容器时添加--restart=always参数
[[email protected] ~]# docker run -it --name test --restart=always alpine
/ # exit
[[email protected] ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b7fc543fcb2 alpine "/bin/sh" 7 seconds ago Up 1 second test