一、安装docker
1、卸载旧版本
较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。
$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
2、安装 Docker Engine-Community
使用 Docker 仓库进行安装
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。
设置仓库
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
$ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
3、使用以下命令来设置稳定的仓库
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:
$ sudo yum install docker-ce docker-ce-cli containerd.io
如果提示您接受 GPG 密钥,请选是。
5、列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序
$ yum list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
6、通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符(-)。例如:docker-ce-18.09.1
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
错误信息:
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
按照提示
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io --skip-broken
然后直接执行第8步 docker -v
7、启动 Docker
$ sudo systemctl start docker
8、看看启动是否成功(有版本号显示就成功了)
$ sudo docker -v
二、安装Docker Machine
安装 Docker Machine 之前你需要先安装 Docker。
Docker Mechine 可以在多种平台上安装使用,包括 Linux 、MacOS 以及 windows。
$ base=https://github.com/docker/machine/releases/download/v0.16.2 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && sudo mv /tmp/docker-machine /usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine
下载不了,我这里有一份64位的centos的 链接:https://pan.baidu.com/s/1Odvzw68352b16JB2hEwqAA 密码:kp17
1.2、macOS 安装命令
$ base=https://github.com/docker/machine/releases/download/v0.16.2 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine
2、查看是否安装成功
$ docker-machine version docker-machine version 0.16.0, build 9371605
3、列出可用的机器
可以看到目前只有这里默认的 default 虚拟机。
$ docker-machine ls
4、创建机器
创建一台名为 test 的机器。【ps:通过 virtualbox 来介绍 docker-machine 的使用方法。其他云服务商操作与此基本一致。具体可以参考每家服务商的指导文档。】
$ docker-machine create --driver virtualbox test
注:--driver:指定用来创建机器的驱动类型,这里是 virtualbox。
报错信息(001):
Creating CA: /root/.docker/machine/certs/ca.pem Creating client certificate: /root/.docker/machine/certs/cert.pem Running pre-create checks... Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"
Creating CA: /root/.docker/machine/certs/ca.pem Creating client certificate: /root/.docker/machine/certs/cert.pem Running pre-create checks... Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"
Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"
执行以下命令:
vim /etc/yum.repos.d/virtualbox.repo
内容如下:
[virtualbox] name=Oracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox baseurl=http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc
完事之后【完成在Centos中安装VirtualBox】:
yum install -y VirtualBox-6.0
报错信息(002):
Error with pre-create check: "We support Virtualbox starting with version 5. Your VirtualBox install is "WARNING: The vboxdrv kernel module is not loaded. Either there is no module available for the current kernel (3.10.0-327.el7.x86_64) or it failed to load. Please recompile the kernel module and install it by sudo /sbin/vboxconfig You will not be able to start VMs until this problem is fixed. 6.0.18r136238". Please upgrade at https://www.virtualbox.org"
遇到这个错误之后,按照提示执行
sudo /sbin/vboxconfig
得到的结果如下:
This system is currently not set up to build kernel modules. Please install the gcc make perl packages from your distribution. Please install the Linux kernel "header" files matching the current kernel for adding new hardware support to the system. The distribution packages containing the headers are probably: kernel-devel kernel-devel-3.10.0-327.el7.x86_64
既然提示我们要执行
yum install -y kernel-devel
安装完了,执行创建虚拟主机的命令还是失败的话,那么就要考虑
$ uname -r 3.10.0-693.21.1.el7.x86_64 $ ll /usr/src/kernels/ 3.10.0-957.21.3.el7.x86_64
传送门:https://blog.csdn.net/fly_leopard/article/details/93205412
处理完了之后,继续执行
sudo /sbin/vboxconfig
报错信息:依然和002相同呢?
yum -y install gcc gcc-c++ kernel-devel
执行完了,然后继续
sudo /sbin/vboxconfig
总算成功了
报错信息:
Running pre-create checks... (api) Image cache directory does not exist, creating it at /root/.docker/machine/cache... (api) No default Boot2Docker ISO found locally, downloading the latest release... Error with pre-create check: "Get https://api.github.com/repos/boot2docker/boot2docker/releases/latest: dial tcp 13.250.168.23:443: connect: connection refused"
处理办法:
$wget https://github.com/boot2docker/boot2docker/releases/download/v18.09.1/boot2docker.iso $mv ./boot2docker.iso /root/.docker/machine/cache
/root/.docker/machine/cache
5、基础命令
①、查看机器的 ip
$ docker-machine ip test
②、停止机器
$ docker-machine stop test
③、启动机器
$ docker-machine start test
④、进入机器
$ docker-machine ssh test
⑤、可用的机器列表
$ docker-machine ls
⑥、查看当前激活状态的 Docker 主机
$ docker-machine active
⑦、打印DockerHost
echo $DOCKER_HOST
6、命令解释
config:查看当前激活状态 Docker 主机的连接信息。
creat:创建 Docker 主机
env:显示连接到某个主机需要的环境变量
inspect: 以 json 格式输出指定Docker的详细信息
ip: 获取指定 Docker 主机的地址
kill: 直接杀死指定的 Docker 主机
ls: 列出所有的管理主机
provision: 重新配置指定主机
regenerate-certs: 为某个主机重新生成 TLS 信息
restart: 重启指定的主机
rm: 删除某台 Docker 主机,对应的虚拟机也会被删除
ssh: 通过 SSH 连接到主机上,执行命令
scp: 在 Docker 主机之间以及 Docker 主机和本地主机之间通过 scp 远程复制数据
mount: 使用 SSHFS 从计算机装载或卸载目录
start: 启动一个指定的 Docker 主机,如果对象是个虚拟机,该虚拟机将被启动
status: 获取指定 Docker 主机的状态(包括:Running、Paused、Saved、Stopped、Stopping、Starting、Error)等
stop: 停止一个指定的 Docker 主机
upgrade: 将一个指定主机的 Docker 版本更新为最新
url: 获取指定 Docker 主机的监听 URL
version: 显示 Docker Machine 的版本或者主机 Docker 版本
help: 显示帮助信息
如下图所示,swarm 集群由管理节点(manager)和工作节点(work node)构成。
swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。
work node:即图中的 available node,主要负责运行相应的服务来执行任务(task)
以下示例,均以 Docker Machine 和 virtualbox 进行介绍,确保你的主机已安装 virtualbox。
创建 docker 机器:
$ docker-machine create -d virtualbox swarm-manager
初始化 swarm 集群,进行初始化的这台机器,就是集群的管理节点。
$ docker-machine ssh swarm-manager $ docker swarm init --advertise-addr 192.168.99.101 #这里的 IP 为创建机器时分配的 ip。【docker-machine ps看到的swarm-manager的ip】
以下输出,说明成功了
docker@swarm-manager:~$ docker swarm init --advertise-addr 192.168.99.101 Swarm initialized: current node (2sj6o793xs36pp3wqxwoi2q88) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-4y8nlohxywcozk677lq4yzj820xlswpg5pwrmq7623gbdyhb2e-azbphyet7totw2aiq0vkratl8 192.168.99.101:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
找不到了
docker swarm join-token worker
完整服务(端口,个数,名称,延时,镜像)
docker service create --replicas 1 --name redis --publish published=2379,target=2379 --update-delay 10s redis:3.0.7
完成服务
docker service create --name=viz --publish=8080:8080/tcp --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock visualizer
切换dns的模式
docker service update --endpoint-mode dnsrr viz
添加端口映射
docker service update --publish-add 8080:80 viz
伸缩
docker service scale web=6