部署Mysql

1. 查找mysql镜像

docker search mysql

2. 拉取mysql镜像

非arm64版CentOS的拉取命令:

docker pull mysql:5.6

但是我的arm64版会报错no matching manifest for linux/arm64/v8 in the manifest list entries,因为这个版本的mysql不适用于arm64。

可以到docker的镜像中心:https://hub.docker.com 查找images,搜索mysql,点进去看版本,找到支持arm64架构的版本,使用旁边的docker命令拉取myql镜像。

我这里选的是mysql:oracle

docker pull mysql:oracle

3. 创建容器,设置端口映射、目录映射
# 在/root目录下创建mysql-docker目录用于存储mysql数据信息
mkdir ~/mysql-docker
cd ~/mysql-docker

创建守护式mysql容器(退出容器后,容器不会关闭)

docker run -id \
-p  3307:3306 \  # 宿主机端口:容器端口 将容器的3306端口映射到宿主机的3307端口,如果主机的3306端口没有被占用一般都映射到相同的端口。
--name=c_mysql \ 
-v $PWD/conf:/etc/mysql/conf.d \  # 将主机当前目录下的conf目录挂载到容器的/etc/mysql目录
-v $PWD/logs:/logs \ 	# 将主机当前目录下的logs目录挂载到容器的/logs目录
-v $PWD/data:/var/lib/mysql \  # 将主机当前目录下的data目录挂载到容器的/var/lib/mysql目录
-e MYSQL_ROOT_PASSWORD=123456 \  # 初始化mysql的root用户密码
mysql:oracle
4. 查看容器状态
docker ps -a

status一栏是Up则表示正常运行

5. 进入容器,操作mysql
docker exec -it c_mysql /bin/bash
mysql -uroot -p123456
show databases;
create database db1;

docker-mysql
修改root用户密码

  1. 进入mysql数据库

    use mysql;

  2. 修改root用户密码

    set password for root@localhost = password(‘newpassword’);

  3. 退出数据库后使用新密码登录

6. 外部机器连接容器中的mysql

设置容器中的mysql允许远程连接:

  1. 进入mysql数据库

    use mysql;

  2. 查看用户和权利

    select user,host from user;

  3. 可以看到root用户的host为localhost表示只允许本地访问

    docker-mysql

  4. 修改root的访问权限

    update user set host=“%” where user=“root”;

  5. 使本次修改立即生效

    flush privileges;

  6. 远程连接成功:注意——远程连接的ip地址要使用虚拟机的ip地址,可以在虚拟机上使用ip address查看

    docker-mysql-remote

部署Tomcat

1. 查找tomcat镜像
docker search tomcat
2. 拉取适合arm64/v8的镜像
docker pull arm64v8/tomcat
3. 创建容器,设置端口映射、目录映射
# 在/root目录下创建tomcat-docker目录用于存储tomcate数据信息
mkdir ~/tomcat-docker
cd ~/tomcat-docker
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
arm64v8/tomcat
4. 使用外部机器访问容器中的tomcat

创建一个测试页面

cd ~/tomcat-docker
mkdir test
vim test/index.html

写入:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试容器中的tomcat</title>
</head>
<body>
    Tomcat in docker is running!!!
</body>
</html>

外部机器访问tomcat:虚拟机ip:8080/test/index.html

docker-tomcat-html

部署Nginx

1. 查询nginx镜像
docker search nginx
2. 拉取nginx镜像
docker pull nginx
3. 创建容器,设置端口映射、目录映射
mkdir ~/nginx-docker
cd ~/nginx-docker
mkdir conf
# 在~/nginx-docker/conf/目录下创建nginx.conf文件
vim conf/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 '$remote_addr - $remote_user [$time_local] "$request" ' 
									'$status $body_bytes_sent "$http_referer" ' 
									'"$http_user_agent" "$http_x_forwarded_for"'; 
	
	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
4. 使用外部机器访问容器中的nginx

在html目录下创建index.html用于测试nginx

cd ~/nginx-docker
vim html/index.html

输入以下内容:

<h1>nginx in docker is running</h1>

在浏览器地址栏输入:虚拟机ip地址 即可看到输出

docker-tomcat-html

部署Redis

1. 查找redis镜像
docker search redis
2. 拉取redis镜像
docker pull redis
3. 创建容器,设置端口映射
docker run -id --name=c_redis -p 6378:6379 redis # 我的虚拟机安装了一个redis所以不能将主机的6379端口跟redis容器的6379端口映射,改成了6378
4. 使用外部机器(Mac)连接redis

使用了redis连接工具:redis-pro 在appstore可以免费下载

测试连接成功:

docker-redis-remote

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐