Docker 镜像下载、创建实例及启动

文章介绍了如何在Docker环境下下载和配置MySQL、Redis以及Nginx。对于MySQL,涉及端口映射、数据和日志文件夹挂载、root用户远程访问的设置。Redis的安装包括启动命令、数据持久化和配置文件挂载。Nginx的安装则讲解了配置文件的处理、数据目录挂载以及端口映射的动态调整。此外,还提到了容器内服务的端口映射方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、docker下载MySQL

docker pull mysql:5.7

2、创建实例并启动

docker run -p 3306:3306 --name mysql /

-v /mydata/mysql/log:/var/log/mysql /

-v /mydata/mysql/data:/var/lib/mysql /

-v /mydata/mysql/conf:/etc/mysql /

-e MYSQL_ROOT_PASSWORD=root

-d mysql:5.7

参数说明
-p 3306:3306 :将容器的 3306 端口映射到主机的 3306 端口
-v /mydata/mysql/conf:/etc/mysql :将配置文件夹挂载到主机
-v /mydata/mysql/log:/var/log/mysql :将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql/ :将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root :初始化 root 用户的密码
MySQL 配置
vi /mydata/mysql/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
注意:解决 MySQL 连接慢的问题
在配置文件中加入如下,并重启 mysql
[mysqld]
skip-name-resolve
解释:
skip-name-resolve :跳过域名解析
3、通过容器的MySQL命令行工具连接
docker exec -it mysql mysql -uroot -proot
4、设置root远程访问
方法一:update改表方式
use mysql;
select host,user from user; # 查询当前状态
update user set host = '%' where user = 'root'; # 修改访问限制为%
flush privileges; # 重新载入授权表,刷新权限缓存
方法二:grant授权方式
grant all privileges on *.* to 'root'@'%' ; # all privileges代表所有权限。*.*代表“库.表”
flush privileges; # 重新载入授权表,刷新权限缓存
 
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
GRANT:赋权命令
ALL PRIVILEGES:当前用户的所有权限
ON:介词
*.*:当前用户对所有数据库和表的相应操作权限
TO:介词
‘root’@’%’:权限赋给root用户,所有ip都能连接
IDENTIFIED BY ‘123456’:连接时输入密码,密码为123456
WITH GRANT OPTION:允许级联赋权
 #! mysql8.0及以上版本需要使用以下语句:
create user root@'%' identified by '123456';
grant all privileges on *.* to root@'%' with grant option;
5、进入容器文件系统
docker exec -it mysql /bin/bash
*注:后面在启动命令指定密码,这样不利于维护,不建议采取(注意后面标红处)后续可在配置文件中自行添加修改
6、docker 安装redis 
拉取镜像
docker pull redis
7、创建实例并启动
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
  • docker run 是启动命令,没有镜像则会先下载;
  • --name redis 容器取名,不加该参数自动生成随机字符串;
  • -p 6379:6379 端口映射,注意docker里面冒号前面都是外部的,如端口,挂载;
  • -v xxx:xxx 文件挂载,这里配置了2个挂载,一个是配置文件,一个是数据文件夹。这样即使容器销毁也会保留配置和数据,重启即可恢复,数据文件需要开启持久化才有;
  • -d 表示后台启动,反之为前台启动,退出控制台将结束程序;
  • redis 紧跟的redis表示镜像名称,一般启动会使用redis:6.2.7类似方式,带上版本号,不带表示用lastest,即最新的;
  • redis-server /etc/redis/redis.conf 这句是启动命令,启动镜像后执行的命令;
8、使用redis镜像执行redis-cli 命令连接
docker exec -it redis redis-cli
#!另附创建实例及启动命令
docker run -d --privileged=true --restart=always -p 6334:6379
-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf
-v /docker/redis/data:/data
--name myredis redis redis-server /etc/redis/redis.conf --appendonly yes
–privileged=true:容器内的Root拥有真正Root权限,否则容器内Root只是外部普通用户权限
-restart=always:容器Docker的时候,自动重启Redis容器
-p 6334:6379:端口映射,第一个端口是宿主机向外部暴露的端口,第二是容器开放的端口
-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf:映射配置文件
-v /docker/redis/data:/data:映射数据目录
–name redis:容器的名字
redis-server /etc/redis/redis.conf:以指定配置文件的方式启动redis-serer进程
–appendonly yes:开启数据持久化

 

docker run -p 6379:6379 --name redis --restart=always \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /mydata/redis/data:/data \
-d redis redis-server /etc/redis/redis.conf \
--requirepass "123" --appendonly yes

(* 注!--requirepass "123" --appendonly yes 必须跟在-d redis redis-server /etc/redis/redis.conf \ 之后)

3、docker安装nginx

拉取镜像
docker pull nginx

随便启动一个 nginx 实例,只是为了复制出配置
docker run -p 80:80 --name nginx -d nginx:1.10
将容器内的配置文件拷贝到当前目录:
docker container cp nginx:/etc/nginx .
别忘了后面的点
修改文件名称: mv nginx conf 把这个 conf 移动到 /mydata/nginx
执行命令删除原容器
docker rm -f nginx
创建新的 nginx ;执行以下命令
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10
nginx安装后续:
   ---添加映射端口:
首先:
systenctl stop docker 停止运行docker
docker ps 查看nginx容器ID
然后:
进入docker容器目录:/var/lib/docker/containers(一般在这个目录下)
找到nginx容器ID对应的容器目录
修改 hostconfig.json 文件,找到如下配置,可以添加想要开放的端口
"PortBindings":{
    "80/tcp":[
        {
            "HostIp":"",
            "HostPort":"80"
        }
    ],
    "8088/tcp":[
        {
            "HostIp":"",
            "HostPort":"8088"
        }
    ]
}

修改 config.v2.json 文件,找到如下配置,可以添加想要开放的端口

"ExposedPorts":{
            "80/tcp":{

            },
            "8088/tcp":{

            }
        }

注:并不需要修改Ports,只有在你没有stop容器时,Ports才会有值,如果关闭了容器,就是null。当然如果你修改了也无所谓,因为重启容器后,就会被刷新。

最后:

重启docker并且重启nginx

(另附:在启动容器的时候若是已知需要多映射几个端口时,可以多使用 -p 80:80 -p 8090:8090 ... 来增加需要映射的端口,

docker run创建Docker容器时,也可以用 --net 选项指定容器的网络模式 :

host模式:使用 --net=host 指定。
none模式:使用 --net=none 指定。
bridge模式:使用 --net=bridge 指定,默认设置。
container模式:使用 --net=container:NAME_or_ID 指定

Ubuntu18.04手动编译安装nginx-KWA2-ChinaUnix博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值