目录
[1. 概述](#1. 概述)
[2. 基本操作](#2. 基本操作)
[2.1. 镜像操作](#2.1. 镜像操作)
[2.2. 容器操作](#2.2. 容器操作)
[2.3. 运行操作](#2.3. 运行操作)
[2.4. 镜像保存](#2.4. 镜像保存)
[2.5. 镜像分享](#2.5. 镜像分享)
[3. 高级操作](#3. 高级操作)
[4. 挂载](#4. 挂载)
[4.1. 目录挂载](#4.1. 目录挂载)
[4.2. 卷映射](#4.2. 卷映射)
1. 概述
Docker 镜像有镜像名称和TAG

2. 基本操作
2.1. 镜像操作
-
查看镜像
docker images
docker image ls -
删除镜像
docker rmi imagesID
docker rmi 名称:TAG -
下载镜像
docker pull nginx:1.26.0
-
搜索镜像
docker search nginx
2.2. 容器操作
容器是运行起来的镜像
-
运行容器
docker run
-
查看运行的容器
docker ps
-
停止/启动/重启
docker stop/start/restart CONTAINER_ID
docker stop/start/restart NAMES -
进入镜像
docker exec -it xxxxxNAMES /bin/bash
-
查看日志
动态获取
docker logs -f
静态查看
docker logs
-
删除
docker rm ID
强制删除
docker rm -f ID
2.3. 运行操作
-
容器的端口可以重复,但是外部机器的端口不能重复
docker run -p <主机端口>:<容器端口> <镜像名>
docker run -d --name mynginx -p 88:80 ngxin:TAG
-d: 后台运行
--name:容器名称
-p 端口映射: 80:88 内部80 外部访问88 -
进入容器进行操作
docker exec -it <容器名称> 交换脚本
docker exec -it mynginx /bin/bash
2.4. 镜像保存
-
通过docker run 运行后,进行自定义安装或者修改一些配置
-
然后提交修改内容:这里的mynginx是一个运行的容器
docker commit -m 'update index.thml' mynginx mynginx:V1.0
[root@sda ~]# docker commit -m 'update index.html' mynginx mynginx:V1.0
sha256:6d11a54e6725515d5559bf96fa6aeeda4b1daf79887eb78e6c3befeaadad27a0 -
提交后,通过docker images 可以看到有镜像 myginx V1.0

-
然后在对镜像进行保存成tar便于转移到其他机器上
docker save -o mynginx.tar mynginx:V1.0
-
加载镜像
docker load -i mynginx.tar -q
-i 加载tar的文件
-q 表示加载过程中不展示加载信息 -
运行
docker run --name mynginx --rm -d -p 89:80 mynginx:V1.0
-
查看容器的占用
docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
9b54842016a0 mynginx 0.00% 10.33MiB / 31.26GiB 0.03% 2.73kB / 2.05kB 0B / 0B 17
e2b4c27dbe59 work_nginx-server_1 0.00% 78.02MiB / 31.26GiB 0.24% 32.7GB / 32.5GB 7MB / 0B 17
2.5. 镜像分享
# 改名
docker tag 旧名字 新名字 # 这个会复制一个新的,而不是直接改,可以把之前的删除就行了
docker tag mynginx:V1.0 mynginx:V2.0
[root@sda ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynginx V1.0 6d11a54e6725 15 hours ago 192MB
mynginx V2.0 6d11a54e6725 15 hours ago 192MB
3. 高级操作
-
查询所有的容器的ID
docker ps -aq
-a : 所有的镜像
-q : 只打印容器ID[root@sda ~]# docker ps -aq
9b54842016a0
e2b4c27dbe59
694eeba1ae38
975bb0ad0124
0c0f3ddc3b79 -
删除所有的容器
docker rm -f $(docker ps -aq)
-f:强制删除 -
开机启动
docker --restart always
4. 挂载
4.1. 目录挂载
容器一旦重启或者重新创建,那么文件数据都是丢失,所以这个时候需要通过挂载目录,实现数据持久化
使用参数
-v /aa/aaa:/aaaa/bbb
-v 主机目录:容器内目录
如果一开始没有/aa/aaa 那么他会自动创建。docker会以外部的数据为准,所以外部没有数据
那么内部也是没有数据的
4.2. 卷映射
当我们通过目录挂载时,会发现因为-v是以外部为主,所以当我们使用目录挂载,比如挂载容器的内部的默认配置文件时,会出现如果外部没有这些配置文件,那么就会导致出现内部也没有,那么容器就可能会启动失败,所以这个时候就需要用到卷映射
卷映射
-v 卷名:/etc/nginx
卷名不以./ 为名称就是卷名,否是就是目录挂载
docker run -d -p 89:80 --name mynginx -v /tmp/nginx/html:/usr/share/nginx/html -v ngconfig:/etc/nginx mynginx:V2.0
卷的数据都在哪里呢:默认都在/var/lib/docker/volumes/卷名/_data下
[root@sda html]# cd /var/lib/docker/volumes/ngconfig/
[root@sda ngconfig]# ls
_data
[root@sda ngconfig]# cd _data/
[root@sda ngconfig]# ls
conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
[root@sda _data]# pwd
/var/lib/docker/volumes/ngconfig/_data
-
卷操作
- 查看卷
docker volume ls - 创建卷
docker volume create test - 查看某个卷的详情
docker volume inpspect test
- 查看卷