0%

Docker基本操作

镜像相关命令

  • 镜像名称一般分两部分组成:[repository]:[tag],例如:mysql:5.7。
  • 创建镜像
    • 从本地:从Dockerfile文件,利用docker build命令构建镜像
    • 从镜像服务器:docker pull命令
  • 查看镜像:docker images命令
  • 删除镜像:docker rmi命令
  • 推送镜像
    • docker push命令,推送到服务
    • docker save命令,保存为一个压缩包,可以用docker load命令加载

案例1

  • 前往doker hub
  • 查找Nginx镜像pull命令
  • 使用docker images查看镜像

案例2

  • 利用docker xx —help命令查看docker save和docker load语法
  • 使用docker tag 创建新镜像mynginx1.0
  • 使用docker save导出镜像到磁盘
  • 导出:docker save -o nginx.tar nginx:latest,使用ll命令查看
  • 删除当前镜像:docker rmi nginx:latest
  • 导入: docker load -i nginx.tar

容器相关命令

  • 查看所有运行的容器及状态:docker ps
  • 查看容器运行日志:docker logs
  • 进入容器执行命令:docker exec
  • 状态切换
    • 运行 → 暂停:docker pause
    • 暂停 → 运行: docker unpause
    • 运行 → 停止:docker stop
    • 停止 → 运行: docker start
  • 删除指定容器:docker rm

案例1:运行一个Nginx容器

  • 在docker hub查看Nginx的容器运行命令
1
docker run --name containerName -p 80:80 -d nginx
  • 命令解读:
    • docker run:创建并运行一个容器
    • —name:给容器起一个名字,必须唯一
    • -p:将宿主机端口与容器端口映射,左边是宿主机端口,右边是容器端口
    • -d:后台运行容器
    • nginx:镜像名称
  • 查看日志:docker logs mn

案例2:进入Nginx容器,修改HTML文件内容(不推荐使用)

  • 进入容器
1
docker exec -it mn /bin/bash
  • 命令解读
    • docker exec:进入容器内部,执行一个命令
    • -it:给当前进入的容器创建一个标准输入输出终端,允许交互
    • mn:容器名称
    • /bin/bash:进入后执行的命令,bash是一个linux终端交互命令
  • 进入指定路径:cd /usr/share/nginx/html
  • 替换内容
1
sed -i 's#Welcome to nginx#Hello world!#g' index.html

数据卷操作

容器与数据耦合的问题

  • 不便于修改
  • 数据不可复用

数据卷(volume)

是一个虚拟目录,指向宿主机文件系统中的某个目录。

操作数据卷

  • 数据卷操作的基本语法如下:
1
docker volume [COMMAND]
  • docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步操作:
    • create:创建一个volume
    • inspect:显示一个或多个volume信息
    • ls:列出所有volume
    • prune:删除未使用的volume
    • rm:删除一个或多个volume

挂载数据卷

我们在创建容器时,可以通过-v参数来挂载一个数据卷到某个容器目录

1
2
3
4
5
docker run \
--name mn \
-v hrml:/root/html \ 把html数据卷挂载到容器内部的/root/html目录中
-p 8080:80
nginx \

案例1:创建一个nginx容器,修改容器内的html目录内index.html内容

  • 需求说明:把目录挂载到html数据卷上,方便操作其中内容

  • 步骤:

    • 创建容器并挂载数据卷到容器内的HTML目录
    1
    docker run --name mn -p 81:80 -v html:/usr/share/nginx/html -d nginx
    • 进入html数据卷所在位置,并修改HTML内容
  • 若数据卷不存在,docker会自动创建

案例2:创建并运行一个MySQL容器,将宿主机目录直接挂载到容器

  • 目录挂载语法
    • -v[宿主机目录]:[容器内目录]
    • -v[宿主机文件]:[容器内文件]
  • 上传压缩包,加载MySQL镜像
1
docker load -i /mysql.tar
  • 创建目录/tmp/myql/data
  • 创建目录/tmp/myql/conf,将配置文件上传
1
2
3
4
5
6
7
8
docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-v /tmp/mysql/conf/hmy.conf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d \
mysql:5.7.25
  • 挂载/tmp/myql/data到mysql容器内数据存储目录

  • 挂载/tmp/myql/conf/hmy.cnf到mysql容器配置文件

  • 设置MySQL密码
------ THEEND ------

欢迎关注我的其它发布渠道