MAC book M1上安装docker,然后安装centos

背景:按照往常逻辑下载了virtualbox 但是在macbook M1 上安装时候发现报错,这个时候才恍然M1是arm CPU,目前virtual box不支持。于是想了另个办法,我在mac上安装docker然后再在通过docker拉取centos镜像包,然后通过docker启动centos容器当成对应的虚拟机,不一样能达到在一台mac上启动多个虚拟机的目的吗?于是在macbook上先安装docker.

1、下载和安装docker

docker下载链接如下:Docker Desktop for Apple silicon | Docker Documentation 

安装docker

安装成功后在桌面上看到如下图样式,此时说明docker后台进程已经启动了也就是launch了。

 此时通过命令行得到docker版本:docker --version

由于docker拉取镜像大多从国外拉取因此受限于网络问题需要修改成国内镜像地址。此时修改桌面docker图标重的preferences sheet。选择docker engine选项,然后添加如下信息

  "registry-mirror": [
    "https://xx4bwyg2.mirror.aliyuncs.com",
    "http://f1361db2.m.daocloud.io",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],

 

 此时已经有了docker进程,需要拉取一个镜像来驱动一个容器(当成虚拟机用),拉取一个centos镜像:docker pull centos:7 表示拉取的镜像叫centos,tag是7.

 使用centos:7这个镜像来启动一个容器,也就是启动一个虚拟机,但是启动后因为多数镜像都是一些基础的镜像可能很多工具都没有需要进入容器中通过yum进行安装。

启动容器:docker run -d -p 5002:22 --name centos7-test --privileged=true centos:7 /usr/sbin/init

-d 后台启动,--name centos7-test 容器名字,centos:7用哪个镜像启动。-p 5002:22指的将容器内部的22端口映射到宿主机的5002端口上,也就是后续宿主机就可以通过5002端口去链接容器,比如ssh登录到容器中。

 查看容器运行情况:

 此时因为容器内部没有运行sshd服务,所以需要通过docker提供的命令方式去登陆容器:

docker exec -it centos7-test /bin/bash

此时登录到容器中也就是一个centos环境中了,可以当成虚拟机来用。此时可以通过yum进行工具安装,其他软件部署等操作,因为这个centos:7这个镜像只是一个基础镜像,好多东西没有安装,因此需要手动进行安装。比如这里需要安装网络ifconfig工具,git,ssh,gcc等包。

yum install net-tools openssh-server vim lrzsz wget gcc-c++ pcre pcre-devel zlib zlib-devel ruby openssl openssl-devel patch bash-completion zlib.i686 libstdc++.i686 lsof unzip zip openssh-server -y

安装完相关软件后,比如这里安装了ssh服务,此时需要在虚拟机内部启动sshd服务方便后面通过宿主机来访问该虚拟机:systemctl start sshd

为这台虚拟机创建一个root用户密码:passwd root

此时可以通过宿主机ssh来访问这台虚拟机:ssh root@localhost -p 5002 这里-p就是指定的5002端口去ssh容器中的ss端口。此时做到了ssh到这台容器虚拟机里面。

 此时我们也遇到一个问题:基础镜像往往都是么有过多进场用到的软件安装,需要在基础镜像之上在安装对应的软件。因此如果我们已经安装了一些软件则可以将这个安装的工具的镜像在打包成一个镜像,后续就可以使用这个“基础镜像”来拉起容器,这个时候这个容器里面就可以有个有这些工具了。因此可以用docker命令对这个容器进行镜像制作。使用到的命令:

docker commit -m="提交的描述信息" -a="镜像作者" container_id image_name:TAG

docker commit -m="test make dockerimage" -a="zhangyi" 41ca9d52c1a5 centos7:v1

后面就可以以这个镜像来启动新的虚拟机了。 

docker run -d -p 5003:22 --name centos7v1-container --privileged=true centos7:v1 /usr/sbin/init

 此时可以直接ssh到这个新的container上去:ssh root@localhost -p 5003

此时我可以在基于开始的那个镜像把SSH服务打成另一个镜像,然后在通过这个新的镜像起一个虚拟机。

1、docker commit -m="test make dockerimage" -a="zhangyi" 2c0f16d1a7e5(代表源容器ID) centos:copy   通过源同期镜像制作一个新的镜像

2、docker run -d -p 5001:22 --name centos-copy --privileged=true centos:copy /usr/sbin/init

通过这个新的镜像在启动一个新的容器实例,但是端口需要改变一下,因为5002这个本级端口被上一个虚拟机占用。

3、ssh root@localhost -p 5001 登陆虚拟机

4、此时可以查看到两个虚拟机有自己的IP,而且两台虚拟机IP是互通的

这里大家其实还是发现一个问题:ssh 的时候是用的localhost,不是用的IP地址,如果我们要使用不同的IP地址来区分不同的container(虚拟机)怎么办呢?搞了半天搞不定,因此还是只能使用不同的端口来作为不同的虚拟机。可以在.bash_profile中增加一个别名来登陆虚拟机

vim ~.bash_profile

alias test="docker exec -it my_docker /bin/bash"

----------

下面host方式好像也不行。 

这里就需要在创建容器时候需要制定网络类型:--network=host,使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。

----------

如果要把宿主机的目录挂在到容器的某个目录下,可以docker run启动参数的时候就可以指定,如下命令:

docker run -d -t -i -p 5002:22 --hostname mycontainer2 --name mycontainer2 -v /Users/zhangyi/git_space:/test --privileged=true zhangyi0833/centos-8.0:cgdb /usr/sbin/init

其中:-v /Users/zhangyi/git_space:/test 就是将宿主机目录/Users/zhangyi/git_space挂载到容器的/test目录下。如下容器内部看到的宿主机/Users/zhangyi/git_space下的内容

这样就相当于将宿主机和容器把目录共享了,此时不论在宿主机还是容器内部对这个目录操作比如创建文件 两边都可以看见。如容器内部创建了一个文件,此时在宿主机目录下也可以看到 

 

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 要在Mac M1安装DockerCentOS,您需要遵循以下步骤: 1. 首先,您需要下载并安装Docker Desktop for Mac M1。您可以从Docker官方网站上下载最新版本的Docker Desktop。 2. 安装完成后,您需要启动Docker Desktop并登录到Docker Hub。 3. 接下来,您需要在终端中运行以下命令来下载并安装CentOS镜像: ``` docker pull centos ``` 4. 安装完成后,您可以使用以下命令启动CentOS容器: ``` docker run -it centos /bin/bash ``` 这将启动一个交互式的终端会话,您可以在其中运行CentOS命令。 5. 如果您需要在容器中安装其他软件包或配置,请使用yum命令进行安装。 ``` yum install <package-name> ``` 您可以根据需要安装所需的软件包。 希望这些步骤对您有所帮助! ### 回答2: 首先,Mac M1采用的是ARM架构,而CentOS镜像是为x86架构设计的,因此在M1安装CentOS时会遇到一些问题。在这种情况下,我们可以使用Docker安装CentOS。 步骤如下: 第一步,安装Docker Desktop for Mac M1 由于M1使用的是ARM架构,因此您需要下载适用于Apple Silicon M1Docker Desktop。可以从Docker官网下载适用于M1的版本,安装即可。 第二步,下载CentOS镜像 可以使用以下命令从Docker Hub下载CentOS最新版。 ``` docker pull centos ``` 第三步,运行Docker容器 使用以下命令在Docker中运行CentOS。 ``` docker run -it centos ``` 此命令会在Docker上运行CentOS,并打开终端。现在您可以在Docker容器中使用CentOS了。 当然,你也可以将上述步骤通过Dockerfile封装成为Docker镜像。 最后,需要注意的是,在M1上运行的Docker容器需要使用特殊的标志和配置,以保证其在ARM架构下正常工作。同时,M1芯片中还有一些x86指令并未兼容,因此某些应用程序可能无法在ARM架构下正常工作。但是,大多数应用程序都能够正常运行。 ### 回答3: mac m1是基于Apple silicon芯片的电脑,与传统的基于Intel芯片的电脑有所不同。由于这种芯片的体系结构不同,因此在mac m1安装某些软件可能会遇到一些问题。下面是如何在mac m1安装DockerCentOS的步骤。 步骤一:安装Docker 1. 首先,您需要下载适用于mac m1Docker。 2. 打开终端并在其上运行以下命令: ``` % xcode-select --install % sudo softwareupdate --install-rosetta ``` 这些命令将帮助您在mac m1上运行x86_64架构的二进制文件。 3. 下载并安装Docker for Mac安装完成后,您可以在“应用程序”中找到Docker。 4. 打开Docker应用程序,然后登录您的Docker帐户。如果您没有帐户,请注册一个新的帐户。 步骤二:获取CentOS 1. 在终端中运行以下命令,以获取最新的CentOS映像: ``` % docker pull centos ``` 2. 您可以通过运行“docker images”命令来查看已安装的映像。 3. 启动一个新的容器并在其中运行CentOS: ``` % docker run -it centos /bin/bash ``` 此命令将启动一个名为“centos”的新容器,并将其设置为交互式终端,以便您可以在其中运行命令。请注意,“/bin/bash”是在容器中运行的命令。 4. 现在您已经成功地在mac m1安装DockerCentOS。您可以通过在容器中运行命令来开始使用CentOS。 总结: 在mac m1安装DockerCentOS与在其他计算机上安装它们基本相同。重要的是要注意mac m1的特殊体系结构,并根据需要采取额外的步骤。此外,请确保您的主机计算机上已安装了必要的软件和库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值