Docker 是一個開源的應用容器引擎,基於 Go 語言 並聽從Apache2.0協議開源。html
Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。linux
容器是徹底使用沙箱機制,相互之間不會有任何接口(相似 iPhone 的 app),更重要的是容器性能開銷極低。redis
Docker的應用場景docker
Web 應用的自動化打包和發佈。數據庫
自動化測試和持續集成、發佈。ubuntu
在服務型環境中部署和調整數據庫或其餘的後臺應用。windows
安裝 Dockercentos
sudo apt-get install docker.io # 安裝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-版本號
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 指定支持中文
列出所有裝載的容器,包括已中止的和正在運行的
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 的電腦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 就能看到這個鏡像已經被加載了