镜像相关命令
- 镜像名称一般分两部分组成:[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 | docker run \ |
案例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 | docker run \ |
挂载/tmp/myql/data到mysql容器内数据存储目录
挂载/tmp/myql/conf/hmy.cnf到mysql容器配置文件
- 设置MySQL密码