docker笔记

Docker教程

  • docker命令
  • docker存储
  • docker网络
  • docker compose
  • dockerfile

一、Docker架构:

在这里插入图片描述

  • Docker Host(Docker主机):拥有docker环境的机器
  • Docker Daemon:docker进程
  • Client(docker-cli):提供命令行工具
    • docker pull mysql:从应用市场下载镜像
    • docker run mysql:运行镜像
    • docker build xxx:打包一个自己的镜像
    • docker push xxx:将打包好的镜像发布到仓库
  • Registry(应用市场)
  • Images(镜像):市场里面的软件被称为镜像
  • Containers(容器):用镜像启动的应用
    • 容器特点:
      1. 容器类似轻量级vm
      2. 容器共享操作系统内核
      3. 容器拥有自己的文件系统、cpu、内存、进程空间
      4. 容器相互隔离

二、Docker安装

  1. Centos安装:https://docs.docker.com/engine/install/centos/
  2. 配置docker yum源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装docker引擎(Install Docker Engine)
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 启动docker
sudo systemctl start docker

开机启动:

systemctl enable docker
  1. 配置docker加速

可去阿里云获取

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://tqxirmbb.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

三、docker命令

1. 镜像操作

  1. 检索:搜索镜像

或者:docker hub:https://hub.docker.com/

docker search mysql
  1. 下载
# docker pull 镜像名
# 镜像名:标签/版本号
docker pull mysql
docker pull mysql:latest # latest是最新版
  1. 列表
docker images
# 完整写法
docker image ls
  1. 删除
docker rmi mysql:latest
# 批量删除
# docker ps -aq 查看所有容器id
# -f 强制删除
docker rm -f $(docker ps -aq)

2. 容器操作

2.1 基本操作

  1. 运行
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:latest # 详细查看文档
  1. 查看
# 查看当前运行的容器
docker ps
# 查看所有容器
docker ps -a
  1. 停止
docker stop
  1. 启动
docker start mysql:latest
# mysql:latest 容器名称要对
# 也可以使用容器id启动(id前几位也行)
  1. 重启
docker restart mysql:latest
  1. 状态
docker stats mysql:latest
  1. 日志
docker logs mysql:latest
  1. 进入
docker exec mysql:latest
# -it 交互式访问 可使用ls等命令操作文件
# /bin/bash可以简写成bash
docker exec -it mysql:latest /bin/bash

使用exit退出容器界面

root@9584a253fb38: exit
  1. 删除
# 使用删除前,需要将容器停掉
docker rm mysql:latest
# 强制删除
docker rm -f mysql:latest

2.2 docker run扩展

docker run [options] 容器名

options

  • -d, --detach:后台启动
  • –name:给容器一个名称,不然会随机起名
  • -p [外部端口]:[内部端口]:端口映射(外部端口不能重复,内部端口不同容器可以重复)
  • -e:配置环境变量(多个变量需要分开写)
docker run -d --name mynginx -p 80:80 nginx
# 配置环境变量
docker run -d --name mynginx -p 80:80 -e xxx=xxx -e xxx2=xxx2 nginx
# --restart always 总是开机启动
docker run -d --restart always --name mynginx -p 80:80 nginx

3. 保存镜像

  1. 提交
# docker commit -m '提交信息' -a '作者' 容器名/id 镜像名:标签名/版本号
docker commit -m '提交信息' -a '作者' mynginx mynginx:v1.0
  1. 保存
# -o 输出文件
docker save -o mynginx.tar mynginx:v1.0
  1. 加载

加载镜像

docker load -i mynginx.tar

4. 分享镜像

  1. 登陆
docker login
  1. 命名

需要改名

# docker tag 原镜像名 新镜像名
# 新镜像名:docker hub用户名/镜像名
docker tag mynginx:v1.0 xiaotian/mynginx:v1.0
  1. 推送
docker push xiaotian/mynginx:v1.0

四、docker存储

掌握目录挂载、数据卷,让容器数据不再丢失

1. 目录挂载

挂载后外部、内部主机目录内容会同步

-v 外部主机目录:内部容器目录

例如:

docker run -d -p 80:80 -v /app/nghtml:/usr/share/nginx/html --name app01 nginx:latest

2. 卷映射

启动前,外部目录以内部目录为准;启动后,两者同步。

-v 卷名:内部容器目录

例如:

# 两个-v
# -v /app/nghtml:/usr/share/nginx/html 目录挂载
# -v nginx_config:/etc/nginx 卷映射
docker run -d -p 88:80 -v /app/nghtml:/usr/share/nginx/html -v nginx_config:/etc/nginx --name app02 nginx:latest

容器映射到外部的卷,docker统一保存到/var/lib/docker/volumes/卷名这个目录下(linux中)

  • 查看创建的所有卷
docker volume ls
  • 创建卷
docker volume create 卷名
  • 查看卷配置
docker volume inspect ngcong

五、docker网络

1. 使用ip访问

docker在启动时,会为每一个容器分配唯一ip,使用容器ip+容器端口(内部端口)可以互相访问。

查看容器细节

可以查看容器ip

docker container inspect 容器名
# 简写
docker inspect 容器名

容器1访问容器2

# app1访问app2
docker exec -it app1 bash
curl http://app2ip地址+容器内部端口/资源目录

ip由于各种原因可能会变化,docker0默认不支持主机域名,可以创建自定义网络,让容器名就是稳定的域名,就可以使用域名进行访问了。

2. 自定义网络,使用域名访问

  1. 创建自定义网络
docker network create mynet
  1. 列举网络
docker network ls
  1. 运行容器

需要加入自定义网络

--network 自定义网络名

docker run -d -p 88:80 --name app1 --network mynet nginx:latest

docker run -d -p 99:80 --name app2 --network mynet nginx:latest
  1. 访问其他容器

http://需要访问的容器名:内部域名

# app1访问app2
docker exec -it app1 bash
curl http://app2:80

六、docker compose

1. 介绍

docker compose:docker批量管理容器的工具

使用docker compose需要准备一个yaml文件,可以在文件中配置启动的容器

  • 上线:docker compose up -d(第一次)

  • 下线:docker compose down

  • 启动:docker compose start xxx1 xxx2 xxx3(指定启动某些容器)

  • 停止:docker compose xxx1 xxx2

  • 扩容:docker compose scale xxx2=3(复制3个相同的镜像)

2. 语法

文档:https://docs.docker.com/reference/compose-file/services/

compose.yaml文件:

顶级元素:

  • name:名字
  • services:服务
  • networks:网络
  • volumes:卷

例如:

name: myblog
services:
  mysql: #自定义名称
    container_name: mysql # 自定义容器名称
    image: mysql:latest
    ports:
      - "3306:3306"
    # 数组写法(带短横线)
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=wordpress
    volumes:
      - mysql-data:/var/lib/mysql # 卷映射(使用卷映射需要在顶级元素volumes中将卷名声明一下)
      - /app/mysql/myconf:/etc/mysql/conf.d # 目录挂载
    restart: always # 总是开机重启
    networks:
      - blog # 在顶级元素也需要对网络进行声明
  
  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    # key,value写法
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: 123456
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress-data:/var/www/html
    restart: always
    networks:
      - blog
    depends_on: # 启动顺序(wordpress启动前必须先启动mysql)
      - mysql

volumes:
  mysql-data: # 将卷名声明一下
  wordpress-data:

networks:
  blog:

启动编写的yaml文件

# -f compose.yaml可以省略,默认启动compose.yaml
docker compose up -d
# -f 后面加具体的yaml名
docker compose -f compose.yaml up -d

3. 其他

  • 下线
docker compose -f compose.yaml down

执行上面下线命令,卷数据没有被删除,如果想下线的时候,并删除镜像和卷可以执行下面代码:

# --rmi all/--rmi local 删除哪些镜像
# -v 删除卷
docker compose -f compose.yaml down --rmi all -v

七、docker dockerfile

dockerfile:用于构建自定义镜像

1. 制作镜像

常见指令:

  • FROM:指定镜像基础环境
  • RUN:运行自定义命令
  • CMD:容器启动命令或参数
  • LABEL:自定义标签
  • EXPOSE:指定暴露端口(绑定端口)
  • ENV:环境变量
  • ADD:添加文件到镜像
  • COPY:复制文件到镜像
  • ENTRYPOINT:容器固定启动命令
  • VOLUME:数据卷
  • USER:指定用户和用户组
  • WORKDIR:指定默认工作目录
  • ARG:指定构建参数

例如:

  1. 配置Dockerfile文件
FROM node:latest

LABEL author=xiaotian

# 指定暴露端口
EXPOSE 3000

# COPY 将本地文件拷贝到容器中
# ./dist/index.js本地文件 /main.js容器的根目录中
COPY ./dist/index.js /main.js

# 启动命令
# 写法一:
# ENTRYPOINT node /main.js
# 写法二:用数组代替空格
ENTRYPOINT ["node", "/main.js"]
  1. 制作镜像
# -t/--tag:制作的镜像名称
# mynode_app:v1.0后面的.:表示构建的目录为当前目录
docker build -f Dockerfile -t mynode_app:v1.0 .
  1. 运行制作镜像的容器
docker run -d -p 3000:8080 mynode_app:v1.0

2. 镜像分层存储机制

docker会共用一部分公共的镜像,例如有两个包含nginx镜像,而底层会共用一份。

### 回答1: 要下载Docker笔记,首先需要了解Docker是什么以及其使用场景。 Docker是一种开源的容器化平台,可以帮助用户打包、部署和运行应用程序。通过使用容器化技术,用户无需担心运行环境的差异,可以将应用程序和其依赖项打包到一个可移植的容器中,随时在不同的环境中运行。 要下载Docker笔记,可以按照以下几个步骤进行操作: 1. 首先,需要在计算机上安装Docker。可以从Docker官方网站(https://www.docker.com/)上下载适合自己操作系统的Docker安装包,并按照安装指南进行安装。 2. 安装完成后,需要启动Docker服务。根据操作系统的不同,可以在启动菜单或终端中找到Docker应用程序,并点击打开。在Docker控制台中,可以查看、管理容器以及进行其他操作。 3. 接下来,需要搜索并下载Docker笔记的镜像。可以使用Docker Hub(https://hub.docker.com/)这个官方的镜像仓库,搜索关键词以找到合适的笔记镜像。在搜索结果中,会显示镜像的名称、描述、标签等信息,选择一个合适的镜像。 4. 找到想要下载的笔记镜像后,可以使用Docker命令行工具或Docker控制台中的图形界面来下载镜像。通过输入命令`docker pull 镜像名称:标签`,即可下载对应的笔记镜像到本地。 5. 下载完成后,可以使用`docker images`命令在本地查看已下载的镜像列表。根据下载的笔记镜像的名称和标签,可以使用`docker run`命令来创建并启动一个容器,从而运行笔记。 通过以上步骤,就可以成功下载Docker笔记并在本地运行。希望这些信息对您有帮助! ### 回答2: 要下载Docker笔记,首先需要知道从哪里获取这些笔记Docker有一个官方文档网站,其中包含了大量关于Docker的技术文档、教程和示例以及各种使用场景的说明。用户可以访问Docker官方网站,在文档部分进行浏览和搜索,找到所需的笔记。 在Docker官方文档网站上,用户可以按照主题、标签或关键字进行检索,以找到相关的笔记。网站还提供了各种文件格式的下载选项,包括PDF、EPUB和HTML版本,用户可以根据自己的使用习惯选择适合的格式进行下载。 此外,还有一些第三方资源库和网站提供了Docker相关的笔记下载。例如GitHub上有很多开源项目,其中包含了Docker的使用笔记和示例代码。用户可以通过在GitHub上搜索关键字"Docker笔记"或"Docker notes"来找到相关的项目,然后根据项目的说明进行下载。 总之,下载Docker笔记可以通过Docker官方文档网站或第三方资源库进行。用户可以根据自己的需求和偏好选择下载适合自己的格式和来源。 ### 回答3: 要下载 Docker 笔记,首先需要确保已经安装了 Docker 客户端工具。然后按照以下步骤进行下载: 1. 打开终端或命令提示符,输入以下命令来下载 Docker 笔记Docker 镜像: ``` docker pull [镜像名称] ``` 这里的 `[镜像名称]` 是 Docker Hub 上提供的 Docker 镜像名称,可以根据需要搜索并选择合适的镜像。 2. 等待镜像下载完成后,使用以下命令来创建和运行一个 Docker 容器,并将笔记下载到本地: ``` docker run -it --name [容器名称] [镜像名称] [下载命令] ``` 这里的 `[容器名称]` 是用于标识容器的名称,`[下载命令]` 是具体的下载命令,可以根据下载方式的不同进行相应的设置。 3. 等待下载完成后,可以使用以下命令来停止并删除容器: ``` docker stop [容器名称] docker rm [容器名称] ``` 这里的 `[容器名称]` 是之前创建容器时指定的名称。 通过以上步骤,你就可以成功下载 Docker 笔记到本地了。记得根据实际需求选择适合的 Docker 镜像和下载命令,同时也可以通过 Docker Hub 上的文档和社区提供的资源,了解更多有关 Docker 的使用方法和技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值