2018-12-26 14:37:24 +08:00
|
|
|
|
---
|
2019-02-21 23:34:11 +08:00
|
|
|
|
id: "2018-12-26-13-18"
|
2019-02-23 16:59:40 +08:00
|
|
|
|
date: "2018-12-26-13-18"
|
2019-02-21 23:34:11 +08:00
|
|
|
|
title: "2.docker简单使用教程"
|
|
|
|
|
tags: ["docker","mysql"]
|
|
|
|
|
categories:
|
|
|
|
|
- "linux"
|
|
|
|
|
- "docker教程"
|
2018-12-26 14:37:24 +08:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
### 1、镜像操作
|
|
|
|
|
|
|
|
|
|
#### 1. 列出镜像
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker images;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 2. 删除镜像
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker rmi 镜像id/镜像名:版本
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 3. 搜索镜像
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker search 镜像名
|
|
|
|
|
```
|
|
|
|
|
|
2019-02-23 16:59:40 +08:00
|
|
|
|
<!-- more -->
|
|
|
|
|
|
2018-12-26 14:37:24 +08:00
|
|
|
|
#### 4. 拉取镜像
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
#如不加tag默认拉取latest
|
|
|
|
|
docker pull name:tag
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 5. 镜像导出/导入文件
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 使用name:tag或者id确定要导出的镜像,> 导出的路径
|
|
|
|
|
docker save name:tag/id > /home/image-save.tar
|
|
|
|
|
|
|
|
|
|
# 加载镜像文件到docker中
|
2019-02-01 17:27:09 +08:00
|
|
|
|
docker load -i /home/image-save.tar
|
2018-12-26 14:37:24 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 6. 查看镜像创建历史
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker history [options] image
|
|
|
|
|
# -H:已可读的格式打印镜像大小和日期,默认使用
|
|
|
|
|
# --no-trunc:显示完整的提交记录
|
|
|
|
|
# -q:仅列出提交记录id
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 7. 容器保存为镜像
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker commit -m "提交信息" -a "作者信息" 容器id/容器名 镜像名:镜像tag
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 2.容器操作
|
|
|
|
|
|
|
|
|
|
#### 1.通过镜像创建容器
|
|
|
|
|
|
|
|
|
|
```bash
|
2019-02-01 17:27:09 +08:00
|
|
|
|
docker run -itd -p 3306:3306 -p 9200:9200 -w /home --name oms_env oms_env:0.6
|
2018-12-26 14:37:24 +08:00
|
|
|
|
|
|
|
|
|
# 参数说明
|
2019-02-01 17:27:09 +08:00
|
|
|
|
-i #让容器的标准输入 通常it配合使用
|
|
|
|
|
-t #docker分配一个伪终端并绑定到容器的标准输入上
|
|
|
|
|
-d #容器后台运行
|
|
|
|
|
-p 8080:80 #小写p,hostPort:ContainerPort 绑定容器端口到当前主机端口
|
|
|
|
|
-P #大写P,docker随机映射一个端口到容器内部开放的网络端口
|
|
|
|
|
-w #指定容器工作空间
|
|
|
|
|
--bind 容器名[:容器别名] #容器链接
|
2018-12-26 14:37:24 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 2.保存容器到文件/恢复文件到容器
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 保存容器到文件
|
|
|
|
|
docker export 容器名/容器id > /home/container_export.tar
|
|
|
|
|
|
2019-02-01 17:27:09 +08:00
|
|
|
|
#从文件恢复容器
|
2018-12-26 14:37:24 +08:00
|
|
|
|
docker import < /home/container_export.tar
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 3.删除容器
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker rm 容器id/容器名
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 4.拷贝文件到容器内
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker cp hostPath 容器id:containerPath
|
|
|
|
|
#例如
|
|
|
|
|
docker cp /home/ubuntu ecc:/home
|
|
|
|
|
#将本机的/home/ubuntu目录拷贝到了以ecc开头的容器内的home目录
|
|
|
|
|
```
|
2018-12-26 17:25:19 +08:00
|
|
|
|
|
|
|
|
|
#### 5.从容器拷贝文件到主机
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker cp 容器id:containerPath hostPath
|
|
|
|
|
#例如
|
|
|
|
|
docker cp ecc:/home/ubuntu /home
|
|
|
|
|
#将ecc开头的容器内的ubuntu目录拷贝到了本机的/home目录
|
|
|
|
|
```
|
2019-02-13 10:28:55 +08:00
|
|
|
|
|
|
|
|
|
#### 6.连接到容器
|
|
|
|
|
|
|
|
|
|
  有三种办法
|
|
|
|
|
|
|
|
|
|
1. 通过 attach 直接进入到容器,用法如下:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
docker attach containerName/containerId
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
不推荐此种用法,同时只能有一个终端操作容器,即时有多个终端连入,界面会同步变化
|
|
|
|
|
|
|
|
|
|
2. 通过exec连接容器,用法如下:
|
|
|
|
|
```bash
|
|
|
|
|
docker exec -it containerName/containerId bash
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
以bash连入容器,推荐此种用法,支持多终端连入操作。
|
|
|
|
|
|
|
|
|
|
3.通过给容器安装ssh服务,支持多终端连入,不推荐,太麻烦了。
|