前言

先装置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 /rootcp /etc/skel/.bash_profile /root

参考链接

菜鸟教程 - Docker命令大全