共计 1893 个字符,预计需要花费 5 分钟才能阅读完成。
前言
先装置 Docker,应用文内的脚本能够疾速创立 CentOS 7.8 虚构零碎集群,并通过 SSH(Secure Shell)近程工具连贯。
创立桥接网络,不便容器间通信
指令格局为docker network create < 网络名称 >
。
docker network create test-network
列出 Docker 下所有网络能够看到 test-network。
docker network ls
通过 CentOS 7 镜像创立容器
运行 docker run
应用阿里云镜像仓库拉取打包好的 CentOS 7 中文版镜(在 centos:7.8.2003 镜像根底上增加了 JDK8、vim、lsof、wget、tree、python-devel、c 编译环境、SSH)像创立 CentOS 7 容器,零碎用户名、明码别离为 root 和 666666。
同一个主机下创立多个容器须要定义新的容器名(–name node2)、网络别名(–network-alias node2)、容器 hostname(-h node2)、挂载到容器的目录名(-v /root/docker/node2:/root/share)以及映射的端口(-p 30003:22 -p 30004:80)。
docker run \
--name node1 \
--network test-network \
--network-alias node1 \
--privileged=true \
-h node1 \
-dit \
-m 1500M \
-w ~/ \
-v /root/docker/node1:/root/share \
-p 30001:22 \
-p 30002:80 \
registry.cn-shanghai.aliyuncs.com/exposure/centos:7.8.2003_v1 \
/usr/sbin/init
命令中每个参数解释:
# docker run \
# --name node1 \ 指定容器名为 node1
# --network test-network \ 应用名为 test-network 的网络
# --network-alias node1 \ 指定网络别名为 node1,相当于域名
# --privileged=true \ 指定是特权容器,领有残缺 root 权限
# -h node1 \ 指定 hostname
# -dit \ 相当于后盾运行容器(-d)、以交互模式运行容器(-i)、为容器重新分配一个伪输出终端(-t),- i 和 - t 个别同时应用
# -m 1500M \ 限度容器应用内存下限 1500 兆
# -w ~/ \ 工作目录、进入容器后目录为以后用户目录
# -v /root/docker/node1:/root 将宿主机 /root/docker/node1 目录挂载到容器 /root/share 目录,目录下内容能够相互看到
# -p 30001:22 \ 宿主机 30001 端口映射为容器 22 端口,通过宿主机 30001 端口相当于拜访容器 22 端口
# -p 30002:80 \
# registry.cn-shanghai.aliyuncs.com/exposure/centos:7.8.2003_v1 \ 应用镜像仓库以及标签 / 版本号
# /usr/sbin/init \ 容器启动后执行这个指令来筹备软件执行的环境,包含零碎的主机名、网络设定、语言、文件系统格局及其他服务的启动等
连贯容器
- 宿主机命令行进入容器
# 进入容器
docker exec -it node1 /bin/bash
# 退出容器
exit
- 近程连贯:通过宿主机 IP 和端口(映射容器 22 端口的那个)来拜访 CentOS 7 容器
<img src=”https://fruitbasket.oss-cn-shanghai.aliyuncs.com/blog/image202304051531038.png” alt=”image-20211113151954206″ style=”zoom:50%;” />
容器间相互拜访
同一网络下,容器通过网络别名(–network-alias)来相互拜访。下图中连贯到 node2 容器,在容器内能够 ping 通 node1,网络是通的。
目录挂载问题
如果将宿主机空目录间接挂载到容器 /root
目录,可能会导致一些问题,比方登录容器零碎 hostname 始终显示 -bash-4.2#
,而不是咱们设置的,如node1
。因为/root
目录下短少配置文件,而挂载的宿主机目录又没有。
hostname 不失常显示,能够在登录容器后执行上面语句,拷贝默认配置到 /root
目录,而后从新连贯即可显示失常。
cp /etc/skel/.bashrc /root
cp /etc/skel/.bash_profile /root
参考链接
菜鸟教程 – Docker 命令大全