《Docker 学习笔记》


技术基础

  • 具备一定的 Linux 基础(cd 切换目录、mkdir 创建文件夹)
  • 集群开发(企业开发)Dev(开发)Ops(运维)
  • docker官网

在这里插入图片描述


Docker简介

  • 运行容器;开辟端口;
  • 基于网络
  • 通过 Docker 可以快速进行项目的运行,不用考虑环境部署问题
  • 集装箱 — 单独封装起来 — 隔离的思想
  • Docker 极大的利用内存资源
  • 内核级别的虚拟化技术
  • 轻量级,一种容器的虚拟化技术,容器化技术、虚拟化技术
  • 基于 go 语言开发

Docker 2010年 出现
2013 年 Docker 开源
以前的虚拟机(虚拟化技术)都是去虚拟一套硬件,是一个完整的操作系统;而容器化技术是简易的操作系统
镜像加速配置


Docker安装

在这里插入图片描述

在这里插入图片描述


先卸载旧版本 docker

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

在这里插入图片描述


安装 Docker 依赖包

  • yum install -y yum-utils
    在这里插入图片描述
  • 由图可知,系统已经安装了该依赖包的最新版

设置镜像仓库

  • 国外镜像太慢,我这里用的是国内 阿里云的镜像
  • 阿里云镜像:速度快…
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述

docker-ce 社区版的docker (ce —> community 社区)
docker-ee 企业版的docker (ee —> enterprise 企业)

更新 yum

  • yum makecache fast
    在这里插入图片描述

安装 Docker 引擎 和 容器

  • yum install docker-ce docker-ce-cli containerd.io
  • 安装完成
    在这里插入图片描述
    在这里插入图片描述

启动 docker

  • systemctl start docker
    在这里插入图片描述

  • 查看 docker 是否安装成功 docker version
    在这里插入图片描述

  • docker run hello-world
    在这里插入图片描述

阿里云镜像加速

  • 登录 阿里云
    在这里插入图片描述
  • 找到容器服务
    在这里插入图片描述
  • 找到 镜像加速器
    在这里插入图片描述
    在这里插入图片描述
  • 选择 CentOS 版本 进行加速, 或选择其他系统
    在这里插入图片描述
CentOS 配置镜像加速器

在这里插入图片描述

  • mkdir -p /etc/docker 新建一个目录 docker
  • tee /etc/docker/daemon.json <<-'EOF' 新建一个 daemon.json 文件, 添加内容
  • daemon重启
  • docker 重启
    在这里插入图片描述

卸载 Docker 引擎 和 容器

  • systemctl stop docker
  • yum remove docker-ce docker-ce-cli containerd.io

  • 删除 Docker 引擎 和 容器 的目录

rm -rf /var/lib/docker
rm -rf /var/lib/containerd

Docker 基本组成

  • 由 镜像(image)、容器( container )和仓库 (repository) 组成
  • 默认工作路径:/var/lib/docker

Docker 常用命令

在这里插入图片描述

  • Docker 常用命令:镜像命令、容器命令、操作命令…

在这里插入图片描述

  • / 代表 根目录,/home 代表普通用户的家 /root 代表管理员用户的家 ~ 代表家(可能是/home、/root)

possibilities

Docker 是 C/S 结构
docker --version/-v # 查看 docker 版本
docker info # 查看docker 详细信息
docker command --help # 帮助命令

docker 帮助文档

在这里插入图片描述
在这里插入图片描述

镜像命令

查看镜像:docker images

在这里插入图片描述

docker images -q 只显示镜像id

在这里插入图片描述

docker images -a 列出所有镜像

在这里插入图片描述

docker search mysql 搜索镜像mysql

在这里插入图片描述

docker rmi -f 镜像id/镜像名称 # 删除镜像, 删除多个镜像,使用空格隔开

在这里插入图片描述

docker search mysql --filter=STARS=3000 搜索出 stars > 3000 的镜像 镜像过滤

在这里插入图片描述

下载镜像:docker pull 镜像名称(默认下载最新的镜像 Using default tag: latest)

在这里插入图片描述

docker pull mysql:5.7 # 指定镜像版本下载

在这里插入图片描述

  • 镜像采用 分层下载模式
    在这里插入图片描述
  • 删除所有镜像:docker rmi -f $(docker images -aq)
  • 提交镜像到仓库 docker commit -m message

在这里插入图片描述

查看镜像
  • docker images
    在这里插入图片描述

容器命令

  • 容器是通过镜像来创建,先从仓库找到镜像,根据镜像创建容器
  • 容器的操作:启动、停止、删除
  • 查看容器元数据 docker inspect NAME|ID
  • 运行并进入容器

在这里插入图片描述

  • 停止当前容器并退出 exit
    在这里插入图片描述
    在这里插入图片描述

  • 当遇到上图中的情况,需要退出容器,但是不停止容器:Ctrl + P + Q 执行后出现如下界面:

在这里插入图片描述

在这里插入图片描述

  • 查看当前正在运行的容器:docker ps
  • 列出当前正在运行的容器 + 历史运行过的容器:docker ps -a
  • 只显示当前所有容器的容器ID:docker ps -aq
  • 删除容器:docker rm 容器id/容器name
  • 删除所有容器: docker rm -f $(docker ps -aq)
  • docker ps -a -q|xargs docker rm 删除所有容器

在这里插入图片描述

使用 xargs 命令,可以通过管道 | 接受字符串,并将接收到的字符串通过某个字符进行分割成许多参数(默认情况下是通过空格分割) 然后将参数传递给其后面的命令,作为后面命令的命令行参数执行

  • docker start 容器id # 启动容器

  • docker restart 容器id # 重启容器

  • docker stop 容器id # 停止容器: docker stop [OPTIONS] CONTAINER [CONTAINER...]
    在这里插入图片描述

  • 杀死容器:docker kill 容器id

  • 后台启动容器, 并为容器命名:docker run -d --name 自定义容器名称 镜像id

在这里插入图片描述

  • 查看某个容器的日志:docker logs 容器name/容器id

在这里插入图片描述

  • 进入当前正在运行的容器:docker exec -it 容器id/容器名称name /bin/bash
    在这里插入图片描述

进入正在运行的容器的两种方式:exec 、attach

在这里插入图片描述

attach 在当前正在运行的终端打开容器,而 exec 是在新的终端中打开容器

在这里插入图片描述

-p 宿主机端口: 容器端口 — > 用来进行端口的映射

在这里插入图片描述

  • 执行docker run 命令中 -e 参数讲解

在这里插入图片描述

  • docker run 部分参数讲解 : -it

在这里插入图片描述

  • docker run 部分参数讲解:–volumes-from

在这里插入图片描述

在这里插入图片描述

  • docker run 部分参数讲解:–link name 连通网络

在这里插入图片描述

在这里插入图片描述

  • docker run

在这里插入图片描述

操作命令

  • docker loaddocker save

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 镜像引用

在这里插入图片描述

在这里插入图片描述

mkdir /test 在根目录下创建 test 目录, 此为绝对路径

touch test 创建文件 test

在这里插入图片描述

拷贝容器内的文件到容器外:docker cp 容器ID:filePath 容器外的路径

docker cp 容器id:容器中文件的路径 复制到主机的目标路径

在这里插入图片描述

查看服务器指定端口是否可用: telnet 49.32.587.164 8093

shutdown -h now --立即关机
shutdown -h 10:53 --到10:53关机,如果该时间小于当前时间,则到隔天
shutdown -h +10 --10分钟后自动关机
shutdown -r now --立即重启
shutdown -r +30 ‘The System Will Reboot in 30 Mins’ --30分钟后重启并并发送通知给其它在线用户

echo test 输出 test

在这里插入图片描述

在这里插入图片描述

查看容器的进程信息 pstop

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

docker top 容器ID 查看容器进程信息

在这里插入图片描述

查看容器元数据 docker inspect NAME|ID

在这里插入图片描述

#$ #:管理员登陆显示 $:非管理员登陆显示

在这里插入图片描述

测试服务:curl 服务地址 eg: curl localhost:8080

1628394855157

在这里插入图片描述

仓库

  • 仓库:用来存放镜像
  • Docker 仓库
  • 提交 容器 docker commit 容器ID 生成一个镜像

在这里插入图片描述

  • 查看提交生成的镜像信息

在这里插入图片描述

Docker镜像

  • Docker镜像

部署 tomcat

  • 查看 tomcat 服务器的信息
    在这里插入图片描述
  • 下载 tomcat 镜像并部署
  • 下载 tomcat9.0 : docker pull tomcat:9.0
    在这里插入图片描述
  • 启动 tomcat
    在这里插入图片描述
  • 后台启动 tomcat
    在这里插入图片描述
  • 用完即删:docker run -it --rm tomcat:9.0

-it 以交互方式运行

在这里插入图片描述

Ctrl + C 退出程序

  • 阉割版 tomcat 操作
    在这里插入图片描述
  • 上图中 复制文件 报错了,修改如下:
    在这里插入图片描述
  • 用户客户端浏览器查看效果
    在这里插入图片描述

防火墙操作

  • 查看已开启的端口 :firewall-cmd --list-ports
    在这里插入图片描述

  • 开启防火墙 : systemctl start firewalld

  • 查看防火墙状态: firewall-cmd --state
    在这里插入图片描述

  • 开启端口8080 : firewall-cmd --zone=public --add-port=8080/tcp --permanent
    在这里插入图片描述

  • 重启防火墙: firewall-cmd --reload
    在这里插入图片描述

部署 mysql

  • 查看 mysql 信息
    在这里插入图片描述
  • 下载 mysql 镜像

在这里插入图片描述

  • 实例化一个 mysql镜像的容器mysql_test01,并进入容器中

在这里插入图片描述

  • 实例化一个 容器,配置环境变量,即为 mysqlroot 用户设置密码

在这里插入图片描述

  • 进入容器中,查看该镜像mysql在容器中的具体路径

在这里插入图片描述

  • 在本机使用 SQLyog 工具测试

在这里插入图片描述

在这里插入图片描述

  • 停止 mysql 容器

在这里插入图片描述

部署 Nginx

  • 下载 Nginx 镜像

在这里插入图片描述

  • 启动 nginx

在这里插入图片描述

  • 在谷歌浏览器上测试:

在这里插入图片描述

在这里插入图片描述

  • 查看配置文件的位置 whereis

在这里插入图片描述

在这里插入图片描述

容器数据卷

  • 实现容器的持久化和同步操作!容器间实现数据共享(即多个容器可以共享一个地方的数据)
  • 它存在于一个或多个容器中的特定文件或文件夹,这个目录以独立于联合文件系统的形式在宿主机中也存在
  • 后期我们只需要去修改自己服务器主机上的目录,它自动就会和我们的容器进行同步,避免我们频繁的切换到容器中进行相关的配置和修改操作

数据卷的使用 volume

  • -v 方式挂载

在这里插入图片描述

  • 使用效果:

在这里插入图片描述

  • 再来查看一下该容器的元数据信息

在这里插入图片描述

在这里插入图片描述

挂载: Docker 小白 应该选择 --mount 参数,大佬的 Docker 使用者对 -v 或者 --volume已经很熟悉了,但是推荐使用 --mount 参数

数据卷的挂载方式

  • 具名挂载(常用

在这里插入图片描述

  • 匿名挂载

在这里插入图片描述

卷的管理

  • docker volume COMMAND

在这里插入图片描述

  • 查看 卷的详细信息 docker volume inspect VOLUME

在这里插入图片描述

在这里插入图片描述

DockerFile

  • 把项目构建成镜像(镜像的定制)
  • 定制每一层所添加的配置、文件,如果我们可以把每一层修改、安装、构建、操作的命令都写入这个文件
  • Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建
# 指定基础镜像
FROM 镜像ID

# 拷贝文件
COPY 源文件路径 目标文件路径

# 挂载卷  匿名挂载
VOLUME ["volume_test01"]

CMD echo 'publish dockerfile'
CMD /bin/bash

  • 生成镜像 docker build 默认 Dockerfile 文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 运行镜像,实例化容器

发布镜像到仓库(阿里云镜像仓库、DockerHub)

注册 dockerhub 账号

在这里插入图片描述

命令登录
  • docker login

在这里插入图片描述

在这里插入图片描述

上传到远程仓库 push
  • docker push

在这里插入图片描述

docker push helloworldyk/mynode02:1.0

在这里插入图片描述

  • 登录 dockerhub 仓库查看

在这里插入图片描述

阿里云镜像仓库

登录阿里云
创建个人实例

在这里插入图片描述


创建命名空间

在这里插入图片描述

创建镜像仓库

在这里插入图片描述

在这里插入图片描述


测试连接

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


demo1

FROM centos
MAINTAINER yk-ddm<1715858747@qq.com>

ENV MYPATH /usr/local/centos
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 3344

CMD echo $MYPATH
CMD echo "=====end======"
CMD /bin/bash

在这里插入图片描述

  • -f 指定 dockerfile 文件的路径

在这里插入图片描述

  • docker history ...

在这里插入图片描述

在这里插入图片描述


demo2

FROM centos
MAINTAINER yk-ddm<1715858747@qq.com>

# ADD file targetPath  如果 file 是压缩包,会自动解压
CMD ["ls", "-l"]

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


ENTRYPOINT 和 CMD 区别

  • 在执行 docker run 命令 时 COMMAND 参数是否可以追加,前者可以,后者不可以

在这里插入图片描述

在这里插入图片描述


Docker 网络原理

何为 Docker0

  • 桥接模式(bridge)搭建的网卡

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


虚拟设备间的通信

  • 通过 evth-pair 技术 实现,桥梁;接口;实现容器间的通信
  • Docker0

network

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 创建自定义网络 docker network create -d bridge --gateway 192.168.0.1 --subnet 192.168.0.0/16 net_test

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


网络连通
  • docker network connect

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


VSCode 整合Docker


Docker Compose

  • 服务管理, 一次性管理, 集群的编排管理
  • 大量的容器管理:容器定义、运行、停止…
  • 定义一个或多个容器的工具
  • YAML file : docker-compose.yml

安装

  • download the current stable release of Docker Compose: 下载当前发布的稳定版本Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 国内下载方式:
curl -L "https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

在这里插入图片描述

在这里插入图片描述


授权

  • Apply executable permissions to the binary: 为 该二进制文件应用可执行权限
sudo chmod +x /usr/local/bin/docker-compose

在这里插入图片描述


查看版本

  • docker-compose version

在这里插入图片描述


Get started with Docker Compose

  • Create a directory for the project: 为项目创建一个文件夹
mkdir composetest
cd composetest

在这里插入图片描述

  • Create a file called app.py in your project directory

在这里插入图片描述

  • 文件内容如下:

在这里插入图片描述

  • Create another file called requirements.txt in your project directory : 创建一个 requirements.txt 文件

在这里插入图片描述

  • Create a Dockerfile : 创建一个 Dockerfile
FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

在这里插入图片描述

  • Define services in a Compose file : 在 compose 文件 中定义服务

在这里插入图片描述

  • Build and run your app with Compose : From your project directory, start up your application by running docker-compose up.

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 测试

在这里插入图片描述

  • 浏览器测试效果

在这里插入图片描述

  • 停止 composedocker-compose stop | docker-compose down | Ctrl + C 停止多个容器

在这里插入图片描述


Docker Swarm

  • 集群管理

搭建集群

  • docker swarm --help
    在这里插入图片描述

初始化节点

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值