1. 程式人生 > >Centos7安裝docker與docker-compose

Centos7安裝docker與docker-compose

itl 服務 centos7 tools res name 驗證 -c 工具

Docker是一個開源的容器虛擬化平臺 , Docker Compose是一個用來定義和運行復雜應用的Docker工具。使用Compose,你可以在一個文件中定義一個多容器應用,然後使用一條命令來啟動你的應用,完成一切準備工作。;

- CentOS 7.0下Docker的安裝

1.查看內核版本(Docker需要64位版本,同時內核版本在3.10以上,如果版本低於3.10,需要升級內核):

1
uname -r

2.更新yum包:

1
yum update

3.添加yum倉庫:

1
2
3
4
5
6
7
8
sudo tee /etc/yum.repos.d/docker.repo <<-‘EOF‘
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

4.安裝Docker

1
yum install docker-engine

5.啟動Docker

1
systemctl start docker.service 或者 service docker start

6.使用Docker國內鏡像(為Docker鏡像下載提速,非必須)

1
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://fe8a7d6e.m.daocloud.io

- docker-compose 簡介

一個使用Docker容器的應用,通常由多個容器組成。使用Docker Compose,不再需要使用shell腳本來啟動容器。在配置文件中,所有的容器通過services

來定義,然後使用 docker-compose 腳本來啟動,停止和重啟應用,和應用中的服務以及所有依賴服務的容器。完整的命令列表如下:

build 構建或重建服務
help 命令幫助
kill 殺掉容器
logs 顯示容器的輸出內容
port 打印綁定的開放端口
ps 顯示容器
pull 拉取服務鏡像
restart 重啟服務
rm 刪除停止的容器
run 運行一個一次性命令
scale 設置服務的容器數目
start 開啟服務
stop 停止服務
up 創建並啟動容器

參考 https://docs.docker.com/compose/install/ 。你能運行Compose在OSX和64位Linux。當前不支持Windows操作系統。

- 安裝Docker Compose

curl方式

1
2
3
4
5
curl -L https://github.com/docker/compose/releases/download/1.7.0/docker-compose-`uname -s `-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose -v

python-pip 方式

1
2
3
4
5
6
7
8
9
yum -y install -y epel-release	#安裝pip需要先安裝epel-release包

yum install -y python-pip #安裝pip

pip install --upgrade pip #升級pip

pip install docker-compose #安裝docker-compose

docker-compose -v #查看docker-compose的版本

如果docker-compose報錯

1
2
3
4
5
6
7
8
Traceback (most recent call last):  
File "/usr/bin/docker-compose", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 3011, in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 626, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: backports.ssl-match-hostname>=3.5

輸入:

1
pip install --upgrade backports.ssl_match_hostname

配置文件

Compose的配置文件是docker-compose.yml。讓我們看看下面這個文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
mysqldb:
image: [classroom.example.com:5000/]mysql
environment:
MYSQL_DATABASE: sample
MYSQL_USER: mysql
MYSQL_PASSWORD: mysql
MYSQL_ROOT_PASSWORD: supersecret
mywildfly:
image: [classroom.example.com:5000|arungupta]/wildfly-mysql-javaee7
links:
- mysqldb:db
ports:
- 8080

a. 定義了兩個服務分別叫做mysqldbmywildfy

b. 使用image定義每個服務的鏡像名

c. MySQL容器的環境變量定義在environment

d. MySQL容器使用linksWildFly容器鏈接

e. 使用ports實現端口轉發

啟動服務

1.如果你從互聯網運行,將docker-compose-internet.yml保存為docker-compose.yml

2.如果你使用教師給的鏡像,將docker-compose-instructor.yml保存為docker-compose.yml

3.使用下面的命令,所有的服務將使用後臺模式被啟動

1
docker-compose up -d

顯示的輸出如下:
Creating attendees_mysqldb_1... Creating attendees_mywildfly_1...

使用-f指定代替的compose文件。

使用-p指定代替compose文件所在的目錄。

這裏提供了一個整合的列表顯示所有啟動的服務和容器。

同時,通常使用docker ps命令來驗證應用的容器,和在Docker主機上運行的其他容器。

1
2
3
CONTAINER ID        IMAGE                                    COMMAND                CREATED             STATUS              PORTS                              NAMES
3598e545bd2f arungupta/wildfly-mysql-javaee7:latest "/opt/jboss/wildfly/ 59 seconds ago Up 58 seconds 0.0.0.0:32773->8080/tcp attendees_mywildfly_1
b8cf6a3d518b mysql:latest "/entrypoint.sh mysq 2 minutes ago U

Centos7安裝docker與docker-compose