sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce
以docker 17.12.0版本为例说明。
下载下面的10个安装文件,并按照下面的目录结构上传好。
package下面的8个文件为依赖包,最上面的2个文件为主安装文件。
cd package
rpm -Uvh *.rpm --nodeps –force
cd ../
rpm -Uvh container-selinux-2.99-1.el7_6.noarch.rpm
rpm -Uvh docker-ce-17.12.0.ce-1.el7.centos.x86_64.rpm
sudo systemctl enable docker
sudo systemctl start docker
docker –v
验证是否安装成功
上面docker安装好后,只能通过手工输入命令,并在命令行中指定配置运行dokcer应用。效率低下且无法同时管理多个容器应用。
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。但是docker-compose需要独立安装。
curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose -v
验证是否安装成功
docker run -p 80:80 --name nginx -d nginx:1.17.0
-d选项:表示后台运行
–name选项:指定运行后容器的名字为nginx,之后可以通过名字来操作容器
-p选项:指定端口映射,格式为:hostPort:containerPort
docker ps
docker ps -a
# $ContainerName及$ContainerId可以用docker ps命令查询出来
docker stop $ContainerName(或者$ContainerId)
比如:
docker stop nginx
#或者
docker stop c5f5d5125587
docker kill $ContainerName(或者$ContainerId)
docker start $ContainerName(或者$ContainerId)
删除指定容器
docker rm $ContainerName(或者$ContainerId)
强制删除所有容器
docker rm -f $(docker ps -a -q)
docker logs $ContainerName(或者$ContainerId)
docker stats $ContainerName(或者$ContainerId)
docker stats -a
docker exec -it $ContainerName /bin/bash
如果为springboot工程,按普通mvn方式打包成jar
如果为nodejs前端工程,按正常npm命令打包。
Dockerfile 是一个用来构建镜像的文本文件, 简单来说就是通过此文件定义了打包镜像的过程。
Docker-compose.yml文件是docker应用的单机编排文件,他将前面需要通过命令行指定配置参数启动容器应用的繁琐操作中解脱出来。将配置和命令写入到文件中,通过简单的命令一键加载配置并启动容器,同时还支持指定打包镜像。
下面以一个完整的例子进行说明:
本例实现了在docker中启动3个tomcat实例,tomcat01、tomcat02、tomcat03和1个nginx实例,并将通过nginx做负载,在nginx 80端口提供服务。
运行方式,cd到docker-compose文件目录下,执行以下命令启动或关闭
docker-compose up -d
docker-compose down
简而言之,docker-compose适用于开发和测试。Docker Stack 则适用于大规模场景和生产环境。Docker Stack 和 Docker Compose 的一个区别是 Stack 不支持构建。这意味着在部署 Stack 之前,所有镜像必须提前构建完成。
docker swarm init
docker stack deploy -c docker-stack.yml stack
配置文件docker-stack.yml内容如下
重点是deploy节点,这边定义了服务的副本(replicas)数量为 2, 对于当前服务,升级时Docker 每次会更新2个副本(parallelism)。
系统运行2个服务,其中stack_tomcat 副本为3,也就是3个容器实例作为一个集群提供服务。
命令用于从 Swarm 集群中移除服务stack。移除操作执行前并不会进行二次确认。
docker stack rm stack
查看日志信息
docker stack ps --no-trunc stack
管理器节点离开Docker Swarm模式
docker swarm leave –force
普通节点离开Docker Swarm模式
docker swarm leave
好记性不如烂笔头,共勉!