docker基础


image-20230522172058665

官网: 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 安装成功

image-20230522175000304

通过Vagrant安装虚拟机

创建一个空的目录,切换到该目录中,然后执行 vagrant init centos/7 会创建Vagrantfile文件

image-20230522175057512

执行 vagrant up 第一次执行的时候会远程下相关的镜像文件,并启动虚拟机。

image-20230522175205837

连接虚拟机通过vagrant ssh连接,默认的账号是: vagrant (无密码)

image-20230522175950236

修改虚拟机网络配置

修改Vagrantfile

image-20230522180107450

注意网段和现在当前主机给虚拟机分配的网关的网段要相同:

保存这个文件,然后重启虚拟机。

重启可以使用命令vagrant reload

然后尝试ping

image-20230522181625399

ping通,就可以用ssh管理工具来尝试连接了。

docker CE安装(在linux上)

参考官方文档安装: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

image-20230522183742253

重启网络管理:

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

image-20230522185127881

直接安装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

image-20230522185341287

补充:通过官方的镜像地址下载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

image-20230522185423770

docker desktop安装(在MacOS上)

安装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版本:

image-20230522185928956

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZNB169Wv-1687325196225)(https://wechat01.oss-cn-hangzhou.aliyuncs.com/img/image-20230522190011640.png)]

image-20230522190018201

(已经2.05G了😭)

Docker架构

官方学习文档:

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,它允许您处理由一组容器组成的应用程序。

一张形象的图:

image-20230522191249644

按照理解: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 会从镜像仓库下载该镜像。)

image-20230522191708026

关于-阿里云镜像加速服务配置

默认访问的仓库是在国外所以访问速度是没法保证的。为了更好的体验,我们可以配置阿里云的镜像加速

阿里云官网:

http://dev.aliyun.com/search.html

进入控制台:

image-20230522212601851

image-20230522212633497

具体操作都在上面了。

[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 ~]#

centos卸载docker

systemctl stop docker
yum -y remov docker-ce
rm -rf /var/lib/docker
# 重启服务
sudo systemctl restart docker
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值