Docker 入门及实践

Docker 入门及实践

请添加图片描述

前置学习

相关资源

相关命令

  • docker ps查看但钱运行中的容器

  • docker images查看镜像列表

  • docker rm container-id删除指定id的容器

  • docker stop/start container-id停止/启动指定id的容器

  • docker rimi image-id删除指定id的镜像

  • docker volume ls查看volume列表

  • docker network ls查看网络列表

  • docker pull imageName:tag 拉取配置镜像

  • docker rmi -f imageId...根据镜像id强制删除

  • docker ps查看正在使用的镜像

  • docker logs image-id查看日志

  • docker inspect 容器ID查看容器中的详细信息

  • docker exec -it 容器id进入正在运行的容器 (跟后面的docker run 类似)

    docker attach的区别

    attachexec
    直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器停止exec是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止
  • docker cp 容器ID:容器内路径 目的主机路径将容器中的文件拷贝到宿主机中,如果是Windows系统的话起始目录为/c/....

  • docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的镜像名:[Tag] 基于已有的容器使之成为一个新的镜像

docker run 的常用命令及参数

参数说明
–name=“容器名字”为容器指定一个名字,否则自动取名
-d后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
-i以交模式运行容器,通常与-t同时使用
-t为容器重新分配一个伪输入终端,通常与-i同时使用
-P随机映射端口,大写P
-p指定端口映射,小写p,端口映射 -p 8080(宿主机上):80(容器内)
``–privileged=true -v`/宿主机/绝对路径目录:/容器内目录,可以将数据存放在宿主机的指定目录:权限 (比较重要 -v可指定多个参数,可以实现容器和本地机器的数据关联实现数据的持久化)

docker ps

参数说明
-a | -all展示所有正在运行的镜像
-n展示前n个正在运行的镜像
-l | --latest展示最后创建的镜像
-q | --quiet只展示容器id
-s | --size展示文件的大小

docker 本地镜像发布

image-20221027145605168

容器与主机的数据交互

  1. docker cp 容器ID:容器内路径 目的主机路径
  2. docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名将数据卷同步保存到宿主机

命令实操

下载使用ubuntu镜像

依次输入以下命令

docker images // 查看存在的镜像
docker pull ubuntu:18.04
docker run -it ubuntu:18.04 bash //启动交互式ubuntu并使用bash
// 输入 exit 退出

image-20221027110929600

实际案例

1. 快速安装wordpress

首先创建一个 docker-compose.yml,内容如下:

version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress:/var/www/html

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql

volumes:
  wordpress:
  db:

进入到同级目录,启动命令:

docker-compose up -d

我用的是Windows桌面版的,所以可以直接查看可视化界面:

image-20221027084554700

然后我们可以打开浏览器访问:localhost:8080

image-20221027084633496

2. 制作自己的镜像

这里直接参照 简明教程 中的操作

给Web项目构建镜像

示例项目代码:https://github.com/gzyunke/test-docker

先去clone一下项目代码。

编写 Dockerfile

FROM node

# 复制代码,将宿主机中 "." 目录下的文件到容器中 "/app" 目录下
ADD . /app

# 设置容器启动后的默认运行目录
WORKDIR /app

# 运行命令,安装依赖
# RUN 命令可以有多个,但是可以用 && 连接多个命令来减少层级。
# 例如 RUN npm install && cd /app && mkdir logs
RUN npm install --registry=https://registry.npm.taobao.org

# CMD 指令只能一个,是容器启动后执行的命令,算是程序的入口。
# 如果还需要运行其他命令可以用 && 连接,也可以写成一个shell脚本去执行。
# 例如 CMD cd /app && ./start.sh
CMD node app.js

为镜像(安装包)和运行

在代码文件夹下编译 docker build -t test:v1

-t 设置镜像名称和对应的版本号

这里可能会出现下载配置node出错

image-20221027105343973

可以按照下图,打开设置,修改其中配置中的"buildkit": false

image-20221027105402526

运行docker run -p 9950:8080 --name test-test test:v1

  • -p 映射容器内端口到宿主机
  • --name 容器名字
  • -d 后台运行

打开浏览器进行访问

image-20221027105721681

扩展知识

UnionFS(联合文件系统)

Union 文件系统(Union)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统时Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值