docker 学习笔记

1. 安装docker

# 命令 (请自行脑补其它版本linux系统命令)
 sudo apt-get install docker-ce=<version> docker-ce-cli=<version> containerd.io

# 验证
sudo docker run hello-world

2. docker镜像

2.1 安装镜像

# 命令
docker pull <image_name>:<image_tag>
# 举例
docker pull mysql:5.7
镜像名称:镜像标签

2.2 运行镜像

# 命令
docker run --name <container_name> <image_name>:<image_tag>

# 举例
docker run --name mysql_db mysql:5.7

# 拓展
docker run --help 待整理

3. 使用docker-compose

3.1 docker-compose书写

# 版本号
version: '3' 
# docker-compose包含的服务
services:
	
    mysql_db:
    	# 镜像名称(得标注出docker pull时的tag)
        image: mysql:5.7
        # 镜像名称
        container_name: mysql_db
        # 挂载一个目录或已存在的文件
        volumes:
            - ./volumes/mysql_data:/var/lib/mysql
        # 设置环境变量:如数据库密码等
        environment:
            - MYSQL_ROOT_PASSWORD=123456
        # 设置映射的端口号:主机端口号:docker端口号
        ports:
            - "3307:3306"
        # 网络模式:bridge、host、none
        network_mode: bridge

3.2 docker-compose命令

# 运行
docker-compose -f <compose_name> up

# 后台运行
docker-compose -f <compose_name> up -d

# 关闭 也会将容器删除
docker-compose -f <compose_name> down

# 停止 不删除容器
docker-compose -f <compose_name> stop

# 开始
docker-compose -f <compose_name> start

# 重启
docker-compose -f <compose_name> restart

4. docker内与主机文件互传

4.1 docker内向主机复制文件

# 命令
docker cp <container_name>:<docker_path> <host_path>

# 举例
docker cp mysql_db:/usr/local/etc /data/config
# 将mysql_db容器内的usr/local/etc文件夹复制到主机的/data/config文件夹内

4.2 从主机向docker内复制文件

# 命令
docker cp <host_path> <container_name>:<docker_path>

# 举例
docker cp /data/config mysql_db:/usr/local/etc

5. docker部署odoo

5.1 镜像下载

# 下载odoo、pg、nginx镜像
docker pull odoo:13.0
docker pull nginx
docker pull postgresql:10.0

5.2 书写.yaml文件

version: '3'
services:
    saas_db:
        image: postgres:10
        container_name: saas_odoo_db
        volumes:
            - ./data/pg:/var/lib/postgresql/data
        environment:
            - POSTGRES_USER=odoo
            - POSTGRES_PASSWORD=odoo
            - POSTGRES_DB=postgres
        ports:
            - "5432:5432"
        restart: always

    odoo:
        image: odoo:13.0
        container_name: saas_odoo
        volumes:
            - ./config:/etc/odoo
            - ./odoo_log:/var/log/odoo
        ports:
            - "8069:8069"
        depends_on:
            - saas_db
        links:
            - saas_db:db
    odoo_nginx:
        image: nginx
        container_name: odoo_nginx
        volumes:
            - ./data/nginx/html:/usr/share/nginx/html
            - ./data/nginx/config/nginx.conf:/etc/nginx/nginx.conf
            - ./data/nginx/config/vhosts:/etc/nginx/vhosts
            - ./data/nginx/logs:/var/log/nginx
            - ./data/nginx/ssl:/tmp
        ports:
            - "80:80"

5.3 nginx的vhost文件

server {
	listen    80;
	server_name  test.roar.work;             

	location ~* \.txt$ {
			root /usr/share/nginx/html/;
	}

	location /longpolling/ {
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_pass http://172.17.0.1:8072/longpolling/;
	}

	location / {
			index  index.html index.htm;

			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme; 
			# 这里是指向odoo服务地址
			proxy_pass http://172.17.0.1:8069; 
	}

	#重定向错误页面到 /50x.html
	error_page   500 502 503 504  /50x.html;
	location = /50x.html {
		root   /usr/share/nginx/html;
	}
}

5.4 odoo.conf文件

[options]
addons_path =
data_dir = /var/lib/odoo
admin_passwd = demoshop_saas
db_maxconn = 200
# 以二级域名来筛选数据库
# 测试域名为test.roar.work, 数据库名为test
dbfilter = ^%d$
limit_time_cpu = 100
limit_time_real = 1000
max_cron_threads = 2
osv_memory_age_limit = 1.0
osv_memory_count_limit = False
logfile = /var/log/odoo/odoo.log
log_path = /var/log/odoo
proxy_mode = True

db_host = saas_db
db_user = odoo
db_password = odoo
db_port = 5432

5.6 运行docker

# 后台运行docker
docker-compose -f pg.odoo.nginx.yaml up -d

5.7 docker exec命令

docker exec [opptions] [image] [command]

# opptions说明
-d 在后台运行,不会出现交互界面
-e 设置为环境变量
-i
-t 分配伪TTY
-u 用户名,-u root 以管理权限进入

# 示例
docker exec -it mysql_db /bin/bash

# 示例
docker exec -d rabbitmq_server rabbitmq-plugins enable rabbitmq_management
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值