文章

04.Docker 应用

04.Docker 应用

Docker 应用部署

MySQL 部署

搜索 mysql 镜像和拉取镜像

1
2
docker search mysql
docker pull mysql:5.6

创建容器,设置端口映射、目录映射

1
2
3
4
5
6
7
8
9
10
11
12
## 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql

docker run -id \
 -p 3307:3306 \
 --name=c_mysql \
 -v $PWD/conf:/etc/mysql/conf.d \
 -v $PWD/logs:/logs \
 -v $PWD/data:/var/lib/mysql \
 -e MYSQL_ROOT_PASSWORD=123456 \
 mysql:5.6

参数说明:

  • -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
  • -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
  • -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
  • -v $PWD/data:/var/lib/mysql :将主机当前目录下的 data 目录挂载到容器的 /var/lib/mysql 。数据目录
  • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

进入容器,操作 mysql

1
2
3
4
docker exec -it c_mysql /bin/bash
 mysql -uroot -p123456
 show databases;
 create database db1;

使用外部机器连接容器中的 mysql

Tomcat 部署

1
2
3
4
5
6
7
8
9
10
11
12
13
docker search tomcat
docker pull tomcat

 mkdir ~/tomcat
 cd ~/tomcat
 
 docker run -id --name=c_tomcat \
 -p 8080:8080 \
 -v $PWD:/usr/local/tomcat/webapps \
 tomcat 
# 参数说明:
## -p 8080:8080:将容器的8080端口映射到主机的8080端口
## -v $PWD:/usr/local/tomcat/webapps:将主机中当前目录挂载到容器的webapps

Nginx 部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 搜索nginx镜像
docker search nginx

# 拉取nginx镜像
docker pull nginx

# 创建容器,设置端口映射、目录映射

# 在/root目录下创建nginx目录用于存储nginx数据信息
 mkdir ~/nginx
 cd ~/nginx
 mkdir conf
 cd conf

# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
 vim nginx.conf
 
 user  nginx;
 worker_processes  1;
 error_log  /var/log/nginx/error.log warn;
 pid        /var/run/nginx.pid;
 events {
     worker_connections  1024;
 }
  http {
     include       /etc/nginx/mime.types;
     default_type  application/octet-stream;
     log_format main 'remoteaddr−remote_user [timelocal]" 'statusbody_bytes_sent " '"
     access_log  /var/log/nginx/access.log  main;
     sendfile        on;
     #tcp_nopush     on;
     keepalive_timeout  65;
     #gzip  on;
 
 
     include /etc/nginx/conf.d/*.conf;
 }


 docker run -id --name=c_nginx \
 -p 80:80 \
 -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
 -v $PWD/logs:/var/log/nginx \
 -v $PWD/html:/usr/share/nginx/html \
 nginx

参数说明:

  • -p 80:80:将容器的 80 端口映射到宿主机的 80 端口。
  • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf 挂载到容

器的 :/etc/nginx/nginx.conf。配置目录

  • -v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录

使用外部机器访问 nginx

Docker 安装 Redis

1
docker run -d -p 6379:6379 --name redis redis:latest

安装 Wordpress

  • Docker-compose. Yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress:/var/www/html

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql

volumes:
  wordpress:
  db:

安装 ELK

1
docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk sebp/elk

Docker 常用 image

ubuntu

Android

GitHub - budtmo/docker-android: Android in docker solution with noVNC supported and video recording

检查和开启 Virtualization

  • Ubuntu OS 不用操作
  • Mac 查看:sysctl kern.hv_support

如果为 1 说明就是同时支持 VT-x 和 VT-d。在 mac 下,如果 cpu 支持的话,各项虚拟化技术是默认打开的,因此不存在像 windows 一样要在 BIOS 中手动打开的情况。

Windows

Clash

本文由作者按照 CC BY 4.0 进行授权