docker入门

81 阅读5分钟

本笔记基于黑马docker教程,结合学习过程编写而出

docker介绍

Docker 是一个开源的应用容器引擎,允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker 的主要优点包括:

  1. 快速,一致的交付应用程序:Docker 可以将复杂的应用程序打包到一个独立的容器中,然后进行复制和分发。这使得应用程序的部署变得更加简单、快捷。
  2. 响应式部署和扩展:Docker 的轻量级和快速性能使得它非常适合持续集成和持续交付(CI/CD)工作流程。这使得应用程序可以快速地从开发阶段转移到测试阶段,并最终在生产环境中部署。
  3. 在同一硬件上运行更多的工作负载:Docker 是轻量级的,并且没有额外的开销,这意味着你可以在同样的硬件上运行更多的负载。
  4. 更好的使用资源:Docker 通过允许多个应用程序共享同一操作系统,可以更有效地使用系统资源。
  5. 简化软件版本管理和分发:Docker 的镜像版本管理和分发机制可以大大简化软件的版本控制和分发。
  6. 隔离应用程序依赖性:每个 Docker 容器都运行在自己的环境中,这意味着它们可以有自己的依赖库,不会与其他容器冲突。

Docker 的主要组件包括:

  • Docker 镜像(Images) :Docker 镜像是一个轻量级的、可执行的独立软件包,包含运行某个软件所需要的所有内容,包括代码、运行时环境、库、环境变量和配置文件。
  • Docker 容器(Containers) :Docker 容器是 Docker 镜像的运行实例。它可以被启动、开始、停止、移动和删除。每个容器都是隔离的、安全的,并且可以作为一个独立的平台运行应用程序。
  • Docker 仓库(Repositories) :Docker 仓库用于保存和分发 Docker 镜像。它可以是公开的也可以是私有的。 Docker Hub 和 Docker Cloud 是任何人都可以访问的公开注册中心,用户可以在这里找到、下载和共享镜像。
  • Docker 引擎(Engine) :Docker 引擎是一个 C/S 结构的应用,它包括一个服务器(长期运行的守护进程)、一个 REST API 规定接口(用于指定程序调用的接口)和一个命令行界面用户客户端。
  • Dockerfile:Dockerfile 是一个文本文件,开发者在其中定义一个应用的环境,然后 Docker 可以读取这个文件中的指令自动构建一个镜像。这简化了从头开始创建和编辑镜像的过程。
  • Docker Compose:Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,你可以使用 YAML 文件来配置应用程序的服务,然后使用一个命令就可以创建并启动所有服务。
  • Docker Swarm:Docker Swarm 是 Docker 的原生集群管理工具,用于创建和管理一个 Docker 节点集群。Swarm 能够自动实现负载均衡,容器之间可以进行协调和相互通信。

总的来说,Docker 提供了一种标准化的方式来分发和运行应用,这使得开发者可以更快速地开发和部署应用,同时也使得运维人员可以更高效地管理应用的生命周期。

如何使用docker

  1. 准备虚拟机,安装centos7操作系统,前文有介绍如何进行安装
  2. 在centos系统中安装docker
---先卸载
yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine
    
---安装yum工具
yum install -y yum-utils

---配置docker源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

--安装docker(-y 默认回答为yes)
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

---检验
docker --version

--启动Docker
systemctl start docker
 
---停止Docker
systemctl stop docker
 
---重启
systemctl restart docker
 
---设置开机自启
systemctl enable docker
 
---查看docker 在线容器有哪些
docker ps

  1. 配置阿里云镜像
# 创建目录
mkdir -p /etc/docker
 
# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
 
# 重新加载配置
systemctl daemon-reload
 
# 重启Docker
systemctl restart docker

image.png

镜像基本操作

  1. docker run 运行镜像,如果没有mysql镜像,那么会自动进行拉取(如果拉取失败,多拉取几次,可能防火墙原因)
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql

镜像和容器的关系:

image.png 2. docker pull 拉取镜像

--拉取nginx镜像
docker pull nginx
  1. docker images -a 查看所有镜像
docker images -a

image.png 4. docker rmi -f 强制删除镜像,如果这个镜像被docker run一次,就是存在了对应的容器,那么需要进行强制删除,强制删除会把镜像对应的容器一起删除

image.png

容器基本操作

  1. docker ps -a查看所有容器

image.png 2. docker rm -f强制删除容器

image.png 3. docker inspect nginx查看容器详情

image.png 4. docker exec -it mysql bash以bash的交互式方式进入mysql容器

---进入容器
docker exec -it mysql bash

---进入容器之后这是一个小型的系统,具备mysql环境,所以可以使用mysql命令
mysql -u root -p

--输入密码之后进入mysql

---查看数据库
show databases;

--退出
exit

image.png 5.docker logs mysql -f,查看容器运行日志,不间断,去掉-f则只能看到有限的内容

image.png 6. 别名

--编辑该文件
vi /root/.bashrc

--加上下面命令

alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'

--关闭文件退出
按esc,再按shift+q,输入wq,点击enter

--直接使用dps命令