一、动手前的准备
1、我们的实战环境Centos7,内存建议4G或以上。
2、请自行完成Linux等环境的配置(如虚拟机等)。
3、能顺畅使用百度或百度以外搜索引擎。
4、我们不再赘述Docker是什么,直接进入主题。
5、学习和使用Docker,首先要学会查询官方文档:
https://docs.docker.com/
6、我们选择CE社区版,CE和EE的区别请自行查询。
https://docs.docker.com/engine/installation/linux/docker-ce/centos
安装一些基本依赖软件
进入终端操作,默认是普通用户 ,不要随意使用root。
1、输入下方命令:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2、进一步设置即将安装的是稳定版官方仓库(后面可以使参考阿里云帮助使用阿里云仓库):
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3、这一步是可选的,我们不加(edge月更新仓库, Edge gives you new features every month)
yum-config-manager --enable docker-ce-edge
4、阿里云上的安装帮助文档:
https://yq.aliyun.com/articles/110806?spm=a2c1q.8351553.0.0.11b720beQRyGTx
二、安装
1、安装之前可以查看所有仓库中所有docker版本
yum list docker-ce --showduplicates | sort -r
2、不想选那么默认安装
yum install docker-ce -y
3、启动 (并设置开机启动)
systemctl start docker
systemctl enable docker
docker安装时默认创建了docker用户组,将普通用户加入docker用户组就可以不使用sudo来操作docker
sudo usermod -aG docker usename #这里替换成你自己的用户名
注意:光加入还不行,使用username重新登录
要么执行newgrp - docker 改变当前用户的有效群组
4、这里我们使用第一个命令:
docker images : # 列出本地镜像。
语法:
docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS说明:
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
--digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
--format :指定返回值的模板文件;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。
当然,现在我们什么都看不到,因为我们并没有加载任何镜像。
so,我们需要去安装或则拉区别人的镜像来使用。
5、内置镜像:
https://hub.docker.com/
可以直接在这里去搜,然而由于某种特殊原因,你无法下载。
于是我们要配置国内镜像。我们可以用阿里云的
https://dev.aliyun.com/search.html
(其他镜像源 请大家百度搜索)
(1)、首先你得注册,并登录到阿里云镜像中心
(2)、来到容器镜像服务,并按提示操作,配置镜像加速器
回到操作终端,执行以下命令:
sudo mkdir -p /etc/docker #创建一个文件夹 叫做docker
sudo tee /etc/docker/daemon.json <<-'EOF' #利用tee 命令把下面的配置写入 daemon.json
{
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
#这里要改成你们自己的 地址
}
EOF
然后重载docker
重载所有修改过的配置文件,扫描新的或有变动的单元
sudo systemctl daemon-reload
sudo systemctl restart docker #重启docker
三、 开始下载一个镜像
1、回到https://dev.aliyun.com/search.html
进行搜索 ,譬如输入关键字:PHP PYTHON
2、我们选取一个下载次数还算多的镜像
https://dev.aliyun.com/detail.html?repoId=1666
在操作终端根据提示执行命令:
docker pull registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5
现在需要做的就是等待。。。
OK,我们干了什么?我们把镜像拉取到本地。
然后,我们再次执行 docker images
3、镜像有了,接下来干什么?
docker run -d -p 8080:80 name/id
run:把镜像放入容器中(只在第一次运行)
-d:启动容器后台运行,并返回id
-p:把容器的80端口映射到宿主机的8080
这里关于docker run 命令我们先暂时用这么多。后面在再详细深入的了解该命令。
4、 Docker ps :列出容器
主要有些参数要说一下
(1)、 不加参数,表示查看当前正在运行的容器 .
(2)、-a,查看所有容器包括停止状态的容器 .
(3)、-l,查看最新创建的容器 .
(4)、-n=x,查看最后创建的x个容器 .
(5)、-q :静默模式,只显示容器编号。
(6)、-s :显示总的文件大小。
这里列一下docker ps的结果 :
CONTAINER ID IMAGE COMMAND
CREATED STATUS PORTS NAMES
这些分别代表什么 :
CONTAINER ID:容器ID,唯一标识容器
IMAGE:创建容器时所用的镜像
COMMAND:在容器最后运行的命令
CREATED:容器创建的时间
STATUS:容器的状态(你会看到UPXXX,表示运行状态)
PORTS:对外开放的端口号
NAMES:容器名(也具有唯一性,docker是不允许创建容器名相同的容器的)
4、简单使用启动、关闭、重启容器
docker start name/id:启动一个或多少已经被停止的容器
docker stop name/id:停止一个运行中的容器
docker restart name/id:重启容器
启动容器镜像后,用浏览器直接访问我们这个镜像地址
http://xxx.xxx.xxx.xxx:8080
因为我们这个测试容器是别人集成好PHP+apachede镜像,所以我们已经能访问到
Q&A
如果无法访问,检查防火墙是否放行8080端口:
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
如果出现 IPv4 forwarding is disabled. Networking will not work.
解决办法:
sudo vi /etc/sysctl.conf (Linux内核参数配置文件,可在运行时修改某些内核参数,使之永久生效)
加入net.ipv4.ip_forward=1
保存并退出后,执行systemctl restart network
OK,这一章的内容就到这里,我们下一章将更加详细的学习docker实战。
END