1.报错Installation failed:one pre-requisite is not fullfilled:
由于依赖Windows专业版,所以需要伪装专业版,
用管理员权限开启运行「cmd」命令开启命令行,然后输入如下指令:
REG ADD "HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion" /v EditionId /T REG_EXPAND_SZ /d Professional /F
2.家庭版没有Hyper-V则需要,
新建文件Hyper-V.cmd
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
保存后右键以管理员运行,最后输入Y。
重启电脑,Hyper-V就出来了
3.报错:Containers Windows Feature is not available
新建一个containers.bat
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*containers*.mum >containers.txt
for /f %%i in ('findstr /i . containers.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del containers.txt
Dism /online /enable-feature /featurename:Containers -All /LimitAccess /ALL
pause
在linux系统中:
1.第一步如果系统内有老版本的docker,我们需要先删除之前的docker以及相关依赖。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置阿里云镜像源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 Docker-CE
sudo yum install docker-ce
开机自启
sudo systemctl enable docker
启动docker服务
sudo systemctl start docker
查看服务是否启动成功
sudo systemctl status docker.service
查看版本
sudo docker version
拉取 Docker 镜像时加速
在/etc/docker/daemon.json(Linux)编辑
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
在命令行中
sudo tee /etc/docker/daemon.json <<-'EOF'
#这里使用的是网易云
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
镜像官网拉取:https://hub.docker.com/search?q=&type=image
#这里必须重启服务,不然拉镜像会特别慢
systemctl restart docker.service
拉取前查看有哪些镜像
docker images
然后拉取mongo镜像
docker pull mongo
使用这个镜像。输入命令:
docker run -p 27000:27017 -v $PWD/db:/data/db -d mongo:latest
其中, -p 参数为端口映射,格式为:主机(宿主)端口:容器端口,-v参数为数据卷挂载,将主机的目录$PWD/db 映射到容器的 /data/db,这是为了存储MongoDB操作时的数据,-d参数表示后台运行。
查询正在运行的docker容器:
docker ps
执行MongoDB容器
docker exec -it 容器ID
在虚拟机中输入mongo进入mongo模式
显示数据库:
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
创建新数据库及集合:
> use school
switched to db school
> db.createCollection('teacher')
{ "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
school 0.000GB
往集合中插入新数据:
> db.teacher.insert({id:1,name:'zhangshan',age:38})
WriteResult({ "nInserted" : 1 })
查询数据
> db.teacher.find()
{ "_id" : ObjectId("5c6d12d880b47c18564d99a7"), "id" : 1, "name" : "zhangshan", "age" : 38 }
其他命令
# 删除容器
docker rm <容器名 or ID>
# 查看容器日志
docker logs -f <容器名 or ID>
# 查看正在运行的容器
docker ps
# 查看所有的容器,包括已经停止的。
docker ps -a
# 删除所有容器
docker rm $(docker ps -a -q)
# 停止、启动、杀死指定容器
docker start <容器名 or ID> # 启动容器
docker stop <容器名 or ID> # 启动容器
docker kill <容器名 or ID> # 杀死容器
# 后台运行 docker run -d <Other Parameters>
docker run -d -p 127.0.0.1:33301:22 centos6-ssh
# 暴露端口: 一共有三种形式进行端口映射
docker -p ip:hostPort:containerPort # 映射指定地址的主机端口到容器端口
# 例如:docker -p 127.0.0.1:3306:3306 映射本机3306端口到容器的3306端口
docker -p ip::containerPort # 映射指定地址的任意可用端口到容器端口
# 例如:docker -p 127.0.0.1::3306 映射本机的随机可用端口到容器3306端口
docer -p hostPort:containerPort # 映射本机的指定端口到容器的指定端口
# 例如:docker -p 3306:3306 # 映射本机的3306端口到容器的3306端口
# 映射数据卷
docker -v /home/data:/opt/data # 这里/home/data 指的是宿主机的目录地址,后者则是容器的目录地址