docker安装时默认创建了docker用户组,将普通用户加入 docker 用户组就可以不使用sudo来操作docker
$ sudo usermod -aG docker root
( 这里root成你自己的用户名)
注意:光加入还不行,要么重新登录,要么执行下面命令改变当前用户的有效群组。
$ newgrp - docker
内置镜像
你可以理解为很多贴心的老外或国人帮你制作好的环境。你可以直接使用
然而由于国情,你根本下载不了。于是我们要配置国内镜像,我们可以用阿里云
使用阿里云的容器镜像服务
https://dev.aliyun.com/search.html
使用阿里云的镜像加速器
点击右上角的管理中心。假设你已经注册并登录阿里云的镜像中心。我们就可以使用阿里云的镜像加速器
阿里云的镜像加速器传送门:https://cr.console.aliyun.com/#/accelerator
请注意,每个人的加速器地址都不一样,所以需要根据自己的加速器地址来进行配置。
sudo mkdir -p /etc/docker #创建一个文件夹 叫做docker
sudo tee /etc/docker/daemon.json <<-'EOF' #利用tee 命令把下面的配置写入 daemon.json
{
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"] #这里要改成你们自己的 地址
}
EOF
sudo systemctl daemon-reload # 重载所有修改过的配置文件,扫描新的或有变动的单元
sudo systemctl restart docker # 重启docker
开始下载一个镜像
回到阿里云的镜像仓库:https://dev.aliyun.com/search.html
进行搜索 ,譬如输入关键字:PHP
我们选取一个下载次数还算多的镜像作为学习测试:https://dev.aliyun.com/detail.html?repoId=1666
根据提示执行命令:
$ docker pull registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5
下载完成之后,使用以下命令命令查看镜像
$ docker images
镜像已经有了,接下来怎么办?
想想虚拟机的话,肯定要启动我们的虚拟机嘛~~~
$ docker run -d -p 8080:80 <镜像名称或镜像ID>
run 把我们的镜像放入容器中(只在第一次运行)
- -d 启动容器后台运行,并返回ID。否则会卡死当前会话,所以运行容器这个参数可以说是必备的;
- -p 把容器的80端口映射到宿主机的8080;
$ docker run -d -p 8080:80 e121d5f99e1e
为什么我们知道容器中启动的端口是80?没有为什么,因为作者就是这样设置的。我们可以通过该镜像的文档看出来。
那我映射容器的81端口行不行?当然不行。这需要创建镜像时设置对外暴露的端口,我们后续会学习到。
查看所有运行中容器
$ docker ps
一切准备就绪,开始访问我们的站点服务器。但在这之前需要跨过几个坑先。
1、【IPv4forwarding is disabled.Networkingwill not work.】
解决办法:(Linux内核参数配置文件,可在运行时修改某些内核参数,使之永久生效)
$ sudo vi/etc/sysctl.conf
加入内容 net.ipv4.ip_forward=1
保存并退出后 执行
$ systemctl restart network
2、阿里云的安全组配置
3、防火墙放行宿主机8080端口示例
$ iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
如果是centos7.x的话,是使用firewall防火墙来开放端口的
$ firewall-cmd --permanent --zone=public --add-port=8080/tcp
现在,正常在浏览器上访问我们的 ip + 8080端口,如果可以看到php信息页面,就说明成功了。具体如下