本文在centos7 上安装docker,并创建三个容器,一个nginx,两个tomcat容器。客户请求nginx,可以随机分配到任意一个tomcat上。
本文安装的是docker-ce 版本,这个版本是免费的。
1.安装docker
安装需要的包
使用非root用户登录
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
设置稳定的仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装docker CE
sudo yum install docker-ce
启动docker
sudo systemctl start docker
运行hello-world image
sudo docker run hello-world
通常会报下面错误,这是由于国内网络原因,可以多试几次,实在不行就算了,应该安装没问题,这只是个demo而已。
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout.
对于非root用户,如果不想使用sudo, 可以将用户添加到docker组
sudo usermod -aG docker tanzhang
需要退出重新登录,此时就不用加sudo 。
配置镜像加速器
默认docker 没有daemon.json 所以要自己新建,放到/etc/docker/daemon.json 。
可以查看https://yq.aliyun.com/articles/29941使用方法。登录容器Hub服务注册一个,获取为你独立分配的加速地址。
新建一个daemon.json。只需放入以下内容即可。
{
“registry-mirrors”: [“address”]
}
下载centos镜像
docker search centos
docker pull docker.io/centos
查看镜像
docker images
创建docker 容器 -i表示交互模式,-t表示分配一个root用户
docker run -i -t docker.io/centos /bin/bash
此时已经进入容器内部,系统会自动分配一个root用户
当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:
检查本地是否存在指定的镜像,不存在就从公有仓库下载
利用镜像创建并启动一个容器
分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
从地址池配置一个 ip 地址给容器
执行用户指定的应用程序
执行完毕后容器被终止
docker run的参数:
-a=map[]: 附加标准输入、输出或者错误输出
–c=0: 共享CPU格式(相对重要)
–cidfile=“”: 将容器的ID标识写入文件
–d=false: 分离模式,在后台运行容器,并且打印出容器ID
–e=[]:设置环境变量
–h=“”: 容器的主机名称
–i=false: 保持输入流开放即使没有附加输入流
–privileged=false: 给容器扩展的权限
–m=“”: 内存限制 (格式:, unit单位 = b, k, m or g)
–n=true: 允许镜像使用网络
–p=[]: 匹配镜像内的网络端口号 支持格式:ip:hostPort:contai