在docker container中運行docker-compose

爲了保持宿主主機的環境乾淨,因此將docker-compose安裝到一個基於centos7.3的容器之中,因爲tianchao屏蔽了amazonaws,最後選擇了通過pip方式來安裝,這也是官方推薦的一種安裝方式。https://pip.pypa.io/en/stable/installing/

第一步:
安裝CentOS7.3的image創建container並進入container之中,因爲平時linux是選擇centos作爲開發機的。

sudo docker pull centos:7.3.1611
sudo docker run --name devCentos73 -it -v /var/run/docker.sock:/var/run/docker.sock -v /mnt/xvdb1/dockerDisk/centos7.3:/data -d centos:7.3.1611
sudo docker exec -it <containerIDOrName> bash

第二步:
在容器之中安裝pip,因爲CentOS7.3已經自帶了Python 2.7.5,並且安裝docker-compose

curl -L https://bootstrap.pypa.io/get-pip.py > get-pip.py
python get-pip.py
pip install docker-compose

卸載docker-compose可以使用pip uninstall docker-compose

驗證是否安裝成功

[root@132ddea267ef data]# docker-compose --version
docker-compose version 1.11.2, build dfed245

第三步:
新建一個docker-compose.yml測試是否可以連上宿主docker server。

mkdir composeTest
cd composeTest/
vi docker-compose.yml
version: '2'
services:
  redis:
    image: redis:alpine

運行docker-compose up &

[root@132ddea267ef composeTest]# docker-compose up &
[1] 223
[root@132ddea267ef composeTest]# Creating composetest_redis_1
Attaching to composetest_redis_1
redis_1  | 1:C 28 Mar 02:24:51.130 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis_1  |                 _._                                                  
redis_1  |            _.-``__ ''-._                                             
redis_1  |       _.-``    `.  `_.  ''-._           Redis 3.2.8 (00000000/0) 64 bit
redis_1  |   .-`` .-```.  ```\/    _.,_ ''-._                                   
redis_1  |  (    '      ,       .-`  | `,    )     Running in standalone mode
redis_1  |  |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
redis_1  |  |    `-._   `._    /     _.-'    |     PID: 1
redis_1  |   `-._    `-._  `-./  _.-'    _.-'                                   
redis_1  |  |`-._`-._    `-.__.-'    _.-'_.-'|                                  
redis_1  |  |    `-._`-._        _.-'_.-'    |           http://redis.io        
redis_1  |   `-._    `-._`-.__.-'_.-'    _.-'                                   
redis_1  |  |`-._`-._    `-.__.-'    _.-'_.-'|                                  
redis_1  |  |    `-._`-._        _.-'_.-'    |                                  
redis_1  |   `-._    `-._`-.__.-'_.-'    _.-'                                   
redis_1  |       `-._    `-.__.-'    _.-'                                       
redis_1  |           `-._        _.-'                                           
redis_1  |               `-.__.-'                                               
redis_1  | 
redis_1  | 1:M 28 Mar 02:24:51.134 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis_1  | 1:M 28 Mar 02:24:51.134 # Server started, Redis version 3.2.8
redis_1  | 1:M 28 Mar 02:24:51.134 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
redis_1  | 1:M 28 Mar 02:24:51.134 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
redis_1  | 1:M 28 Mar 02:24:51.134 * The server is now ready to accept connections on port 6379

第四步:
驗證是否安裝成功,進入宿主主機執行命令

grj@GrjServer ~/command $ sudo docker ps -a
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                      PORTS                                      NAMES
b4a04bf9cdef        redis:alpine                 "docker-entrypoint.sh"   8 seconds ago       Up 7 seconds                6379/tcp                                   composetest_redis_1

美中不足的是,系統啓動的時候,container不能自動啓動,這個問題我是使用systemd來解決的,只是覺得還是麻煩。

注:沒有把踩的坑給列出來,如遇到解決不了的問題歡迎留言諮詢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章