MySQL部署
拉取mysql镜像
docker pull centos/mysql-57-centos7
创建容器
docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登陆密码
远程登录mysql,连接宿主机的IP ,指定端口为33306
注意,不建议把数据库文件放在docker里面,采用目录挂载持久化数据库文件、日志、配置文件
创建my.cnf
mkdir -p /usr/local/mysql/config/
cd /usr/local/mysql/config/
vi my.cnf
[mysqld]
character-set-server=utf8
default_authentication_plugin= mysql_native_password
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
docker network create -d bridge my-net
#最新版安装
docker run \
-p 3306:3306 \
--network my-net \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /usr/local/mysql/data:/var/lib/mysql:rw \
-v /usr/local/mysql/log:/var/log/mysql:rw \
-v /usr/local/mysql/config/my.cnf:/etc/mysql/my.cnf:rw \
-v /etc/localtime:/etc/localtime:ro \
--name mysql \
--restart=always \
-d mysql
#5.7安装
docker run \
-p 33306:3306 \
--network my-net \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /usr/local/mysql/data:/var/lib/mysql:rw \
-v /usr/local/mysql/log:/var/log/mysql:rw \
-v /usr/local/mysql/config/my.cnf:/etc/mysql/my.cnf:rw \
-v /etc/localtime:/etc/localtime:ro \
--name mysql5.7 \
--restart=always \
-d mysql:5.7
-d 后台运行容器
-p 3306:3306 指定端口映射(主机(宿主)端口:容器端口)
--network my-net 加入docker网络互访用
--restart=always 开机启动
--privileged=true 提升容器内权限
--name 为容器指定一个名称
-e 设置环境变量
MYSQL_ROOT_PASSWORD=123456 初始密码
-v /usr/local/mysql/cnf/my.cnf:/etc/my.cnf 映射配置文件
-v /usr/local/mysql/data:/var/lib/mysql 映射数据目录
-v /usr/local/mysql/logs:/logs
mysql 镜像名称
tomcat部署
拉取镜像
docker pull tomcat:7-jre7
创建容器 -p表示地址映射
docker run -di --name=mytomcat -p 9000:8080
-v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
Nginx部署
拉取镜像
docker pull nginx
创建Nginx容器
mkdir -p /usr/docker/nginx/conf
mkdir -p /usr/docker/nginx/conf/conf.d
mkdir -p /usr/docker/nginx/html
mkdir -p /usr/docker/nginx/logs
docker run --name test -d -p 88:80 nginx
docker exec -it test /bin/bash
docker cp test:/etc/nginx/nginx.conf /usr/docker/nginx/conf/
docker cp test:/etc/nginx/conf.d/default.conf /usr/docker/nginx/conf/conf.d
docker cp test:/usr/share/nginx/html/index.html /usr/docker/nginx/html
docker cp test:/usr/share/nginx/html/50x.html /usr/docker/nginx/html
docker rm -f test
#docker rm -f nginx
docker run --name nginx --privileged \
-v /usr/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:rw \
-v /usr/docker/nginx/conf/conf.d:/etc/nginx/conf.d:rw \
-v /usr/docker/nginx/html:/usr/share/nginx/html:rw \
-v /usr/docker/nginx/logs:/var/log/nginx \
--restart=always \
-p 80:80 \
nginx
Redis部署
拉取镜像
docker pull redis
创建容器
docker run -di --name=myredis -p 6379:6379 redis
Nextcloud部署
mkdir -p /usr/docker/nextcloud/html
docker run --name nextcloud -p 8080:80 -v /usr/docker/nextcloud/html:/var/www/html -d --restart=always nextcloud
迁移、备份
容器保存为镜像
我们可以通过以下命令将容器保存为镜像
docker commit mynginx mynginx_i
镜像备份
我们可以通过以下命令将镜像保存为tar 文件
docker save -o mynginx.tar mynginx_i
镜像恢复与迁移
首先我们先删除掉mynginx_img镜像 然后执行此命令进行恢复
docker load -i mynginx.tar
-i 输入的文件
执行后再次查看镜像,可以看到镜像已经恢复