新手Docker入門

what's the Docker

  Docker 是一個開源的應用容器引擎,基於 Go 語言 並聽從Apache2.0協議開源。html

  Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。linux

  容器是徹底使用沙箱機制,相互之間不會有任何接口(相似 iPhone 的 app),更重要的是容器性能開銷極低。redis

 

Docker的應用場景docker

  • Web 應用的自動化打包和發佈。數據庫

  • 自動化測試和持續集成、發佈。ubuntu

  • 在服務型環境中部署和調整數據庫或其餘的後臺應用。windows

  • 從頭編譯或者擴展示有的OpenShift或Cloud Foundry平臺來搭建本身的PaaS環境。

 

Docker 安裝及使用

安裝 Dockercentos

  • Ubuntu 安裝 Docker
    sudo apt-get install docker.io # 安裝docker
  • CentOS 安裝 Docker
    # 安裝以前,建議先yum -y upgrade更新軟件包
    # 安裝須要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
    # 設置yum源
    yum-config-manager --add-repo 
    '''
    https://download.docker.com/linux/centos/docker-ce.repo
    已加載插件:fastestmirror, langpacks
    adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
    grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
    repo saved to /etc/yum.repos.d/docker-ce.repo
    '''
    
    # 查看全部倉庫中全部docker版本,並選擇特定版本安裝
    yum list docker-ce --showduplicates | sort -r
    
    # 安裝Docker
    yum install docker-ce-版本號
  • Windows 安裝 Docker:參考官方文檔 https://docs.docker.com/toolbox/toolbox_install_windows/
    • 注:在Windows10上安裝 Docker 是一件很坑的事,win10 企業版和專業版能夠直接安裝 Docker for Windows,可是 win10 家庭版須要安裝 Docker Toolbox,Docker Toolbox 的原理是建立一臺安裝有 Docker 環境的 Linux 虛擬機,指定機器名稱爲 default。安裝完成後會在桌面獲得3個客戶端,分別是 Oracle VM VirtualBox、Kitematic (Alpha) 和 Docker Quickstart Terminal,Oracle VM VirtualBox 用於查看虛擬機,Docker Quickstart Terminal 是一個終端工具用於啓動 Docker。若是一切順利的話,安裝完成後雙擊 Docker Quickstart Terminal,你的 Docker 服務就起來了,可是!!!雙擊後你大機率會遇到卡在 waiting for an IP... 的位置,而後報錯,處理方式自行GOOGLE吧,祝你好運。
  • MacOS 安裝 Docker
    brew cask install docker

 

重啓 Dockerbash

service docker restart  
'''
若是不重啓,docker pull時會有以下錯誤:
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?)...
'''

 

拉取 Ubuntu 或 CentOS鏡像app

sudo docker pull daocloud.io/ubuntu # 拉取一個ubuntu鏡像到本地
sudo docker pull centos:7.2.1511    # 拉取一個CentOS 7.2鏡像到本地

 

列出鏡像

sudo docker images

 

記住上面兩個鏡像各自的 IMAGE ID,進入 Docker 時須要用到(刪除鏡像時一樣也須要用到)

刪除鏡像

docker rmi 

 

裝載鏡像到容器並運行進入容器系統

sudo docker run -it -p 2221:22 -p 8880:80 7698f282e524 /bin/bash # 運行ubuntu容器系統
exit # 退出Ubuntu容器
sudo docker run -it -p 2221:22 -p 8880:80 9aec5c5fe4ba /bin/bash # 運行centos容器系統
exit # 退出CenOS容器
--name 指定容器名,"--name my_Ubuntu"指定容器名爲"my_Ubuntu";
-p     映射端口,"-p 80:80"表示映射容器80端口到主機80端口,
       參數格式ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort
-P 映射端口,將容器暴露的全部端口,都隨機映射到宿主機上(不推薦使用)
--net=host 映射端口的另外一種方式,容器的全部端口都映射到宿主機相應端口上
-d     在後臺運行,並打印container id
-e LANG=en_US.UTF-8  指定支持中文
啓動 docker 時的幾個經常使用參數

 

 

列出所有裝載的容器,包括已中止的和正在運行的

sudo docker ps -a # -a 參數會列出中止的容器,不加-a只顯示正在運行的容器

 

記住上面兩個鏡像各自的 CONTAINER ID,後臺啓動 Docker 時須要用

後臺啓動 / 關閉 Docker

sudo docker start 6d00698360eb # 後臺啓動容器
# sudo docker stop 6d00698360eb # 關閉後臺啓動的容器
sudo docker ps # 列出當前正在運行的容器

# 進入當前容器
sudo docker attach 6d00698360eb # 此命令進入容器後,輸入exit退出容器時會關閉容器
sudo docker exec -it 6d00698360eb  env LANG=C.UTF-8 /bin/bash #此命令進入容器後,輸入exit退出容器時不會關閉容器,容器依舊會在後臺運行

# 進入 MySQL 容器命令
sudo docker exec -it 容器ID  env LANG=C.UTF-8 bash

# 進入 Redis 容器命令
sudo docker exec -it 容器ID  env LANG=C.UTF-8 redis-cli

 

Docker 支持中文

  若是在容器啓動時沒有指定語言的話,docker 默認是不支持中文的。使用 locale 命令能夠看到默認都是"POSIX"

解決方法

# 編輯文件
nano /etc/profile

# 將下面變量加到最後一行,保存並推出
LANG=zh.CN.utf8

# 從新加載文件
source /etc/profile
export LANG=C.UTF-8 LC_ALL=C.UTF-8
針對docker環境運行Python腳本報錯'ascii' codec can't decode byte 0xe6 in position 854: ordinal not

 

 

將一個容器打包成鏡像並在其餘電腦中加載這個鏡像

  如今我有這麼一個需求:我在另外一臺已經裝了 Docker 的電腦B上開發了一個項目,項目在 Docker 的 Centos 容器裏,我要把這個容器拎出來放到如今這臺電腦A上,這樣我就不用安裝一大堆依賴,直接 run 就能運行項目了

  首先我在電腦B容器中 docker ps -a 看一下,有3個容器,開發的項目在第一個容器裏,要將它打包成鏡像放到電腦A中使用

打包命令

sudo docker export vigorous_hypatia >   /home/zmh/下載/centos7_sipenv.tar
# vigorous_hypatia 是要打包的容器的 NAMES,>後面跟的是打包後的文件存放的路徑

 

而後咱們就會獲得一個centos7_sipenv.tar文件,把這個文件手動拷貝或者發送到電腦A,而後在電腦A中運行加載命令

cat '/home/aitester/centos7_sipenv.tar'  | docker import  - centos7_sipenv
# cat 後面跟的是tar文件的路徑,import後面跟的是原來的 NAME

 

以後咱們用 docker images 就能看到這個鏡像已經被加載了

 

 

Docker手冊其餘連接

  Docker 命令大全 

  Docker CentOS容器開啓 SSH 服務

  Docker 安裝 MySQL 並實現遠程鏈接

 

 

 

 

 

 參考:http://www.javashuo.com/article/p-cnaiboib-bt.html

相關文章
相關標籤/搜索