| 特性 | 容器 | 虚拟机 |
| - | - | - |
| 启动 | 秒级 | 分钟级 |
| 硬盘使用 | 一般为 `MB` | 一般为 `GB` |
| 性能 | 接近原生 | 弱于原生 |
| 系统支持量 | 单机支持上千个容器 | 一般几十个 |
docker images
REPOSITORY
:镜像名称TAG
:镜像标签IMAGE ID
:镜像IDCREATED
:镜像的创建日期(不是获取该镜像的日期)SIZE
:镜像大小这些镜像都是存储在Docker宿主机的var/lib/docker
目录下docker search [名称]
NAME
:镜像名称# 不加版本默认为最新版本
docker pull [名称:版本]DESCRIPTION
:镜像的简单描述STARS
:星数,类似于GitHubOFFICIAL
:镜像是否为官方AUTOMATED
:镜像是否由dockerhub自动构建流程创建
# 一般后面跟镜像id,因为id唯一
docker rmi [镜像id/名称]
# 删除所有镜像
docker rmi `docker images -q`
```shell
docker run
```
- `-i`:表示运行容器
- `-t`:表示容器启动后会进入其命令行。加入这个两个参数后,容器创建就能登录进去。即分配一个伪终端
- `--name`:为创建的容器命名(名称唯一,重复会报错)
- `-v`:表示目录映射关系(目录挂载)(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个`-v`做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上
- `-d`:在`run`后面加上`-d`参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加`-i` `-t`l两个参数,创建后就会自动进去容器)
- `-p`:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个`-p`做多个端口映射交互式方式创建容器
-
-v
参数,后边为宿主机目录:容器目录 ```shell
docker run -id -v 宿主机目录:容器目录 --name=容器名称 镜像名称:标签
```
不能删除正在运行的容器,要先停止运行再删除
docker rm 容器名称/id
mycentos3
容器 ```shell
docker rm mycentos3
```
192.168.10.129
,我们远程访问MySQL,可以看到访问成功```shell
mysql -uroot -proot -h192.168.10.129 -P3306
```
<font color="red">注意:</font>这里访问的是宿主机的IP和端口,宿主机映射的端口是哪个就访问哪个端口,比如容器的3306端口在宿主机的映射是33306,那么访问容器的MySQL就是宿主机IP:33306
192.168.10.129:80
cp
命令将容器中nginx的配置目录拷贝到宿主机,然后再将宿主机我们之前创建的mydata
目录挂载到容器 ```shell
docker cp nginx:/etc/nginx /usr/local/mydata/nginx/
```
rabbitmq
容器,并安装ui插件 ```shell
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
```在Linux上安装7.0版本后,有许多注意的地方,比如
不能用root用户启动
jdk必须是11版本
虚拟内存大小等相应的限制
docker commit 容器名称/id 新镜像名称
redis
保存为一个新的镜像 ```shell
docker commit redis myredis
```
myredis
```shell
docker run -id --name=myredis myredis
```
docker save -o 镜像文件 镜像名称
myredis
镜像备份成一个文件 ```shell
docker save -o myredis.tar myredis
```
myredis
镜像删除
# -i:输入的文件
docker load -i 镜像文件
myredis.tar
进行恢复 ```shell
docker load -i myredis.tar
```
myredis
容器 ```shell
docker run -id --name=myredis myredis
```命令 | 作用 |
---|---|
FROM image_name:tag | 定义了使用哪个基础镜像启动构建流程(基础镜像要存在,若不存在,会优先pull基础镜像) |
MAINTAINER user_name | 声明镜像的创建者(非必须) |
ENV key value | 设置环境变量(可以写多条) |
RUN command | 是 Dockerfile 的核心部分(可以写多条) |
Add source_dir / file dest_dir / file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
COPY source_dir / file dest_dir / file | 和 ADD 相似,但是如果有压缩文件不进行解压 |
WORKDIR path_dir | 设置工作目录 |
JDK1.8下载路径:http://ruochen.net.cn:8080/JDK/jdk1.8
Dockerfile
文件 ```shell
vim Dockerfile
```
```
FROM centos:7
MAINTAINER ruochen
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u202-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_202
ENV PATH $JAVA_HOME/bin:$PATH
```
Dockerfile
构建镜像```shell
# .是指当前目录(Dockerfile所在目录)
# docker build -t='镜像名称' .
docker build -t='jdk1.8' .
```
http://192.168.10.129:5000/v2/_catalog
看到{"repositories":[]}
表示私有仓库搭建成功并且内容为空
daemon.json
```shell
vim /etc/docker/daemon.json
```
```
{"insecure-registries":["192.168.10.129:5000"]}
```
>此步骤用于让 docker 信任私有仓库地址
registry
容器 ```shell
docker start registry
```
jdk1.8
镜像上传到私有仓库jdk1.8
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。