下载:linux
https://docs.docker.com/installation/windowsnginx
而后安装git
我下载了Install Docker Desktop for Windows,可是因为个人OS是windows10home版的,不支持,听说只支持windows pro和windows server。web
因而,只能下载DockerToolbox,下载之后安装。docker
安装成功之后能够经过如下方式登录:ubuntu
1. 打开gitbash,cd到docker目录,执行start.shvim
2. 执行Docker Quickstart Terminalwindows
3. 能够在secureCRT中配置ssh2链接,用户名密码是:docker/tcuserbash
执行Docker Quickstart Terminal网络
报错:
找不到bash.sh,
分析:
这个是因为个人git安装目录和默认安装路径不同所致,
解决:
只要修改快捷键“Docker Quickstart Termina”的启动属性中的目标,把bash.sh的路径按照我本身的安装路径写正确便可。修改之后为:"H:\Program Files\Git\bin\bash.exe" --login -i "H:\Program Files\Docker Toolbox\start.sh"
报错:
处理步骤:
关闭电脑,再重启,进入BIOS,找到CPU Configuration> Intel Virtualization Technology,设置为Enabled。
这个时候,会显示虚拟化启动成功:
再次执行Docker Quickstart Terminal,就能够成功了,中间须要等待一段时间。
下次打开docker,能够在gitbash中进入到docker.exe,再执行docker.exe
H:\Program Files\Docker Toolbox\docker.exe
若是出现报错,能够执行:gitbash中进入到start.sh,再执行start.sh:
$cd /h/’Program Files’/’Docker Toolbox’
$start.sh
镜像:相似于虚拟机镜像,能够理解为一个面向docker引擎的只读模板,包含了文件系统。
容器:是从镜像建立的应用运行实例,能够将其启动、开始、中止、删除,这些容器都是相互隔离、互不可见的。
仓库:是docker集中存放镜像文件的场所。
1.镜像
国内镜像地址:网易镜像中心:https://c.163.com/hub#/m/home/
daocloud镜像市场:https://hub.daocloud.io/
从网易获取镜像过程:登录网址https://c.163.com/hub#/m/home/,用户名密码:282660642@qq.com/ypb0228,搜索相应镜像,而后复制下载地址,到docker中执行即可,好比:docker pull hub.c.163.com/library/registry:latest
获取镜像:docker pull ubuntu:14.4
^ ^
镜像名称 tag
带仓库地址的命令:docker pull dl.dockerpool.com:5000/ubuntu
查看镜像信息:docker images
为本地镜像添加新标签:docker tag dl.dockerpool.com:5000/ubuntu:latest ubuntu:latest
查看镜像详细信息:docker inspect yourImageID
搜索镜像:docker search yourImageName
删除镜像:docker rmi yourImageIDOrTag
2.容器
建立容器:docker create -it ubuntu:latest
建立具名容器:docker create -it --name myName ubuntu
(相关容器操做中除了可使用容器id,就还可使用方便记忆的容器名称了)
查看已建立容器:docker -a
查看已建立未启动容器:docker -a -q
运行一个容器,然后自动中止:docker run ubuntu /bin/echo ‘Hello’
运行一个容器,保持伪终端打开:docker run -t -i ubuntu /bin/bash
守护态启动容器:docker run -d ubuntu /bin/sh -c ‘while true;do echo ‘1’;sleep 1;done;’
启动一个容器:docker start yourDockerID
中止一个容器:docker stop yourDockerID
重启一个容器:docker restart yourDockerID
进入容器:docker attach yourDockerID
导出容器:docker export yourDockerId >yourFileName.tar
导入容器:docker import yourFileName.tar demo:v1.0
(导入进去的容器,就能够用docker images看到了,能够用来建立新的容器)
3.仓库
docker本地新建仓库:
$docker run --name docker-registry -d -p 5001:5001 registry
^ ^
宿主机port 容器port
仓库建好之后的测试:docker@default:/$ curl -X GET http://127.0.0.1:5001/
curl: (52) Empty reply from server
4.数据卷操做
建立一个数据主机,利用本机的空间:
docekr create -ti --name dataServer -v /h/tmpData:/datatmp ubuntu
^ ^
本地空间 主机挂载点
建立一个共享dataServer中/datatmp下面的数据卷到/data下面
docker create -ti --name datangix mynginx --volumes-from dataServer /data:/datatmp
建立成功了,可是仍是启动不了,启动的时候报错:
docker@default:/$ docker start datangix2
Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"--volumes-from\": executable file not found in $PATH": unknown
Error: failed to start containers: datangix2
解决方法:
docker create -ti --name datangix mynginx /bin/bash --volumes-from dataServer /data:/datatmp
5.网络操做
docker create -ti --name mynginx -p 192.168.99.100:8089:80 mynginx /bin/bash
#-p 说明,192.168.99.100是docker的ip,8089:80,是把mynginx中的端口80映射到8089
6.踩过的坑:
问题:
$ docker attach b16cc744c3ed
the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
解决:将winpty放到最前面
$ winpty docker attach b16cc744c3ed
问题:
导出的ubuntu镜像重命名之后再次导入,create container的时候报错:
$ docker create -it somename:v1.0
Error response from daemon: No command specified
解决:
再最后加参数:
docker create -it --name mydemo somename:v1.0 /bin/bash
问题:
启动docker容器之后,就是没法attach到
$ winpty docker attach mydemo2
You cannot attach to a stopped container, start it first
解决:
建立的时候少了 -ti参数致使。
建立的时候加上 -ti参数便可:
docker create -ti --name mydemo2 mydemo:v1.0
问题:
建立一个共享dataServer中/datatmp下面的数据卷到/data下面
docker create -ti --name datangix mynginx --volumes-from dataServer /data:/datatmp
建立成功了,可是仍是启动不了,启动的时候报错:
docker@default:/$ docker start datangix2
Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"--volumes-from\": executable file not found in $PATH": unknown
Error: failed to start containers: datangix2
解决方法:
docker create -ti --name datangix mynginx /bin/bash --volumes-from dataServer /data:/datatmp
在docker中新建一个nginx容器,而后在宿主机进行访问
先从网易docker镜像库下载nginx
在本地执行docker pull命令,若是网络有问题,可是ping 8.8.8.8没有问题,就重启一下虚拟机docker再试试。
下好之后,打个tag方便使用:
$docker tag hub.c.163.com/library/nginx mynginx
再建立nginx容器,并启动:
$docker run --detach --publish 8009:80 --name webserver mynginx:latest
在docker中可使用curl进行测试:
在docker中ifconfig找到相应ip:
在docker中使用curl进行测试,测试结果:
在宿主机进行测试,宿主机测试结果以下:
若是想建容器之后,在容器内部启动nginx
先建立容器:
docker run --detach --publish 8089:80 -ti --name mynginx3 mynginx /bin/bash
进入容器
docker attach mynginx3
$cd sbin;nginx
而后进入到docker中,用curl进行测试,ok,是通的。
因为官方镜像多无vim,操做起来很不方便,须要安装vim,而国外镜像下载速度慢多以失败了结,所以须要先修改到国内镜像地址。
$cd etc/apt
先mv sources.list sources.list_bak
而后用>>往sources.list 中添加内容:
echo 'deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse'>>sources.list
echo 'deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse'>>sources.list
echo 'deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse'>>sources.list
echo 'deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse'>>sources.list
echo 'deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse'>>sources.list
echo 'deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse'>>sources.list
echo 'deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse'>>sources.list
echo 'deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse'>>sources.list
echo 'deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse'>>sources.list
echo 'deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse'>>sources.list
然后,再使用apt-get update
apt-get install vim进行安装
安装ssh
$apt-get install openssh-server
$mkdir /var/run/sshd
启动ssh服务:
$/usr/sbin/sshd -D &
使用netstat查看一下,发现netstat未安装,$apt-get install net-tools
而后使用netstat确实能够看到已经在22端口进行监听。
而后,使用docker commit 保存镜像,
再次按照保存好的镜像建立一个容器,启动sshd服务,把docker的10022端口映射到容器的22端口中。
问题:
可是使用ssh从docker中登录的时候,提示密码错误。不晓得如何解决。
在docker中$ssh 192.168.99.100 #tcuser为密码能够登录,可是$ssh 192.168.99.100 -p 10022 #tcuser 为密码提示密码错误
缘由分析: