下載: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 爲密碼提示密碼錯誤
緣由分析: