一文读懂Docker

一篇文章,让你读懂什么是Docker?

为什么要Docker

其实在笔者看来,docker主要是为“懒人”提供了方便。如我们在运行某些程序时,需要给其部署相关的环境,如运行HA时,需要解决相关Python环境。运行都web站点时,需要部署php mysql等环境。而通过Dokcer我们无需部署各类复杂的环境,只需一键启动。

20240916012458344

什么是Docker

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

安装Docker

我们以kali为例,简单说说基于debian系统下,docker的安装。只需下面命令进行安装。

apt-get install docker.io
20240916012500459

安装完成后,你可以使用以下命令来启动 Docker 服务:

systemctl start docker
#或者
service docker start

开机自启

systemctl enable docker

在设置成自启动时系统会显示如下内容。

20240916012503499我们执行上面内容即可。

/usr/lib/systemd/systemd-sysv-install enable docker

什么是镜像

说简单点,如我们想在Linux服务器中运行win11系统。我们就需要拉取和系统架构一样的win11镜像。我们常用docker pull 命令来拉取镜像。

需要注意的是,由于某些原因。拉取镜像是非常慢。各种镜像加速源都扑街。下面是笔者找到可用的方法。(随时可能会失效)

cat > /etc/docker/daemon.json <<EOF
{
    "log-driver""json-file",
    "log-opts": {
        "max-size""20m",
        "max-file""3"
    },
    "ipv6"true,
    "fixed-cidr-v6""fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true,
    "registry-mirrors": [
      "https://docker.m.daocloud.io",
      "https://dockerhub.icu",
      "https://docker.anyhub.us.kg",
      "https://docker.1panel.live"
    ]
}
EOF

写入新的配置文件后,需要我们重启docker

如,我们要拉取HomeAssistant的镜像,可以执行下面命令。

docker pull homeassistant/home-assistant:latest

代码中homeassistant/home-assistant就是镜像名称。默认是从 Docker Hub 公共镜像源下载。latest是镜像的版本,默认为最新版。也可指定如2023.1.120240916012505313

创建容器

什么是容器?通俗点讲就是把每个镜像放到箱子中。彼此互不影响。

20240916012508739

如上,我们可以通过下面命令创建容器。

docker run -d --name="hass" -v /root/hassistant:/config -p 8123:8123 homeassistant/home-assistant:latest
20240916012510863

参数说明:

  • --name :容器名称(自定义)
  • -v : 挂载点位置,如果不设置系统会自动设置,但路径不好找。
  • -p : 容器对应的端口,不要和主机的端口冲突。

其他常用命令

#启动容器
docker start hass #hass为容器名称
#重启
docker restart hass
#开机自启
docker update --restart=always hass

 

阅读剩余
THE END