Docker
Docker 安装应用
-
安装 odoo 10 :
docker pull postgres:9.6 &&docker pull odoo:10 && docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo --name db postgres:9.6 && docker run -p 8899:8069 --name odoo --link db:db -t odoo:10.http://127.0.0.1:8899
如果是在登陆界面的话,是因为有一个默认帐户。如果不知道邮箱帐号,登陆按钮下有一个管理数据库。点击进去删除odoo后会自动跳转注册页;注册完成即可使用了; 不明白,再沟通; - 安装 erpnext :
docker pull lukptr/erpnext7 && docker run -d --name erpnext -p 8900:80 lukptr/erpnext7
http://127.0.0.1:8900 - 安装 magento2 :
git clone https://github.com/alexcheng1982/docker-magento2.git && cd docker-magento2 && docker-compose up -d && docker exec -it docker-magento2_web_1 install-magento && docker exec -it docker-magento2_web_1 install-sampledata
http://local.magento
注意添加主机 Hosts : 127.0.0.1 local.magento - -
command:
- docker info | grep 'registry' -A3 ; 查看当前镜像源
- vim /etc/docker/daemon.json l; 创建或编辑该文件,可以添加镜像源;
- -
问题1:Service 'mysql' failed to build: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout
解决:添加配置 http://f1361db2.m.daocloud.io 》》 重启;
问题2:SQLSTATE[HY000] [2002] Connection refused;
解决:使用容器名称连接数据库;
array( ‘host' => 'mysql', 'dbname' => 'database', 'username' => 'dev', 'password' => 'dev', 'active' => '1', ),
问题3:Mac Get https://registry-1.docker.io/v2/: x509: certificate is valid for drivefca.com, www.drivefca.com, not registry-1.docker.io
解决:在 Docker Engine 修改如下:
{ "debug": true, "experimental": false, "registry-mirrors": ["http://hub-mirror.c.163.com"], "insecure-registries":["registry-1.docker.io"] }
或者:https://wj5tcd3l.mirror.aliyuncs.com 为别人的源连接,也可以通过阿里云生成自己连接。(https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)
{ "debug": true, "experimental": false, "registry-mirrors": [ "https://wj5tcd3l.mirror.aliyuncs.com" ], "insecure-registries": [ "registry-1.docker.io" ] }
问题4:ENV 设置代理网络无法连接本地宿主机,无论是127.0.0.1还是固定的本地IP都无法代理成功;
解决: 在docker 客户端 -》Prefrences -》Resouces -》Proxy 设置本地代理:
问题5:当docker 下载镜像特别慢的时候;
解决:创建或编辑 /etc/docker/daemon.json 文件,可以添加镜像源;
{ "registry-mirrors" : [ "http://ovfftd6p.mirror.aliyuncs.com", "http://registry.docker-cn.com", "http://docker.mirrors.ustc.edu.cn", "http://hub-mirror.c.163.com" ], "insecure-registries" : [ "registry.docker-cn.com", "docker.mirrors.ustc.edu.cn" ], "debug" : true, "experimental" : true }
重启:systemctl restart docker
---
#实例
- 实例: 持久化Odoo 11 安装程序 install.sh:
# ================= # bin/bash # author Xu # ++++++++++++++++++++++ # ----------- createFile # arg 1 is Filename # arg 2 is Contents # return 1 function createFile () { if [ -f "./"$1 ];then echo "The File "$1" already exists!" echo " Whether to delete ?"$1" (0) NO (1) YES " read -p 1 input case $input in 0) exit;; 1) rm $1 exit;; esac else echo " Create add file "$1". OK" cat>>$1 <<EDF $2 EDF fi return 1 } # Create add file .env env=".env" createFile $env 'POSTGRES_PASSWORD=odoo POSTGRES_USER=odoo' # Create add file docker-compose.yaml docker_compose_yaml="docker-compose.yaml" createFile $docker_compose_yaml "version: '2' services: web: image: odoo:11.0 depends_on: - db ports: - "8069:8069" volumes: - odoo-web-data:/var/lib/odoo - ./config:/etc/odoo - ./addons:/mnt/extra-addons db: image: postgres:10 environment: - POSTGRES_PASSWORD - POSTGRES_USER - PGDATA=/var/lib/postgresql/data/pgdata volumes: - odoo-db-data:/var/lib/postgresql/data/pgdata volumes: odoo-web-data: odoo-db-data:" # Create add odoo.conf odoo_conf="odoo.conf" createFile $odoo_conf "[options] addons_path = /mnt/extra-addons data_dir = /var/lib/odoo ; admin_passwd = admin ; csv_internal_sep = , ; db_maxconn = 64 ; db_name = False ; db_template = template1 ; dbfilter = .* ; debug_mode = False ; email_from = False ; limit_memory_hard = 2684354560 ; limit_memory_soft = 2147483648 ; limit_request = 8192 ; limit_time_cpu = 60 ; limit_time_real = 120 ; list_db = True ; log_db = False ; log_handler = [':INFO'] ; log_level = info ; logfile = None ; longpolling_port = 8072 ; max_cron_threads = 2 ; osv_memory_age_limit = 1.0 ; osv_memory_count_limit = False ; smtp_password = False ; smtp_port = 25 ; smtp_server = localhost ; smtp_ssl = False ; smtp_user = False ; workers = 0 ; xmlrpc = True ; xmlrpc_interface = ; xmlrpc_port = 8069 ; xmlrpcs = True ; xmlrpcs_interface = ; xmlrpcs_port = 8071 " echo "install images;" docker-compose up -d #================================
---
可能遇到的问题:
我们有些朋友不愿意使用数据卷的形式持久化数据。想使用绝对的路径的使用。但本实例更改为绝对路径的话,会导致无法重启成功容器;那些下面附使用卷管理的基本命令:
a), 进入镜像:docker exec -it 《容器id》 /bin/bash 或者 docker exec -it 《容器id》sh
b),查看容器的虚拟卷挂载位置:docker inspect 《容器id》 | grep /var/lib/docker/volumes
c),使用MAC OS 系统时,docker volume ls 查看卷列表,然后进入Volumes虚拟卷:screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
d),Volumes 虚拟卷退出:先按 "Ctrl-a" 再按 "d". - 更新Dockerfile文件后,最低成本的更新镜像的方法。docker-compose up -d --build -有时候就是一个参数可以解决的事
- Docker 数据库的访问 是使用 Container Name (容器名称) 做为 host 名称 使用。
- Centos Curl 下载导致无法安装Docker-compose 时:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
- -----------