官网: http://www.docker.com
仓库: https://hub.docker.com
Docker安装在虚拟机上,可以通过VMWare来安装,但是通过VMWare安装经常会碰到网络ip连接问题,为了减少额外的环境因素影响,Docker的学习我通过VirtualBox结合Vagrant来安装虚拟机。
VirtualBox官网:https://www.virtualbox.org/
Vagrant官网:https://www.vagrantup.com/
Vagrant镜像仓库:https://app.vagrantup.com/boxes/search
我下载的virtualbox版本:7.0.8
我下载的vagrant版本:2.3.6
在cmd命令窗口输入vagrant
命令弹出如下内容表示 vagrant
安装成功
创建一个空的目录,切换到该目录中,然后执行 vagrant init centos/7 会创建Vagrantfile文件
执行 vagrant up
第一次执行的时候会远程下相关的镜像文件,并启动虚拟机。
连接虚拟机通过vagrant ssh
连接,默认的账号是: vagrant (无密码)
修改Vagrantfile
注意网段和现在当前主机给虚拟机分配的网关的网段要相同:
保存这个文件,然后重启虚拟机。
重启可以使用命令vagrant reload
然后尝试ping
ping通,就可以用ssh管理工具来尝试连接了。
参考官方文档安装:https://docs.docker.com/engine/install/centos/
卸载原有的环境:
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装对应的依赖环境和镜像地址
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
上面的第一句命令报错:Cannot find a valid baseurl for repo: base/7/x86_64
通过ping google.com和ping baidu.com发现都是unknown host,所以网络连接的DNS 可能出现了问题。
解决办法:
vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
DNS1=10.0.2.2
DNS2=8.8.8.8
重启网络管理:
systemctl restart NetworkManager
上面的方法没有生效的可以尝试:
vi /etc/resolv.conf
添加下面的:
nameserver 114.114.114.114
nameserver 119.29.29.29
nameserver 10.0.2.2
nameserver 8.8.8.8
直接安装docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io
安装过慢设置aliyun镜像
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
启动docker服务
sudo systemctl start docker
查看docker的版本
sudo docker version
补充:通过官方的镜像地址下载docker会比较慢,
配置阿里云的镜像地址:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum更新下即可:
yum makecache fast
开机启动docker
sudo systemctl enable docker
安装desktop
https://docs.docker.com/desktop/install/mac-install/
(这个肯定比较大,我记得我卸载了又下载,因为每一次都有好几个G)
安装的一些条件:
1.macOS must be version 11 or newer. That is Big Sur (11), Monterey (12), or Ventura (13). We recommend upgrading to the latest version of macOS.
- At least 4 GB of RAM.
- VirtualBox prior to version 4.3.30 must not be installed as it is not compatible with Docker Desktop.
我的virtualbox版本:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZNB169Wv-1687325196225)(https://wechat01.oss-cn-hangzhou.aliyuncs.com/img/image-20230522190011640.png)]
(已经2.05G了)
官方学习文档:
https://docs.docker.com/get-started/overview/
Docker uses a client-server architecture. The Docker client talks to the Docker daemon, which does the heavy lifting of building, running, and distributing your Docker containers. The Docker client and daemon can run on the same system, or you can connect a Docker client to a remote Docker daemon. The Docker client and daemon communicate using a REST API, over UNIX sockets or a network interface. Another Docker client is Docker Compose, that lets you work with applications consisting of a set of containers.
Docker 使用客户端-服务器架构。Docker客户端与 Docker守护进程对话,后者负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护进程可以 在同一系统上运行,或者您可以将 Docker 客户端连接到远程 Docker 守护进程。Docker 客户端和守护进程使用 REST API 通过 UNIX 套接字或网络接口进行通信。另一个 Docker 客户端是 Docker Compose,它允许您处理由一组容器组成的应用程序。
一张形象的图:
按照理解:images是镜像文件,containers是容器,一个image可以创建出多个containers,所以类比面向对象的概念,images就相当于是类,containers相当于是对象。
下面是一些概念,便于理解:
1.容器(Containers)
Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
2.镜像(images)
Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
3.仓库(Repository)
仓库(Repository)是集中存放镜像文件的场所。
仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云 等4.总结:image 文件生成的容器实例,本身也是一个文件,称为镜像文件。
一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器
至于仓储,就是放了一堆镜像的地方,我们可以把镜像发布到仓储中,需要的时候从仓储中拉下来就可以了。5.尝试拉取镜像hello-world:
docker run hello-world
(Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。)
默认访问的仓库是在国外所以访问速度是没法保证的。为了更好的体验,我们可以配置阿里云的镜像加速
阿里云官网:
http://dev.aliyun.com/search.html
进入控制台:
具体操作都在上面了。
[root@localhost ~]# sudo mkdir -p /etc/docker
[root@localhost ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://mjze6mgl.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors": ["https://mjze6mgl.mirror.aliyuncs.com"]
}
[root@localhost ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://mjze6mgl.mirror.aliyuncs.com"]
}
[root@localhost ~]# sudo systemctl daemon-reload
[root@localhost ~]# sudo systemctl restart docker
[root@localhost ~]#
systemctl stop docker
yum -y remov docker-ce
rm -rf /var/lib/docker
# 重启服务
sudo systemctl restart docker