安装Nginx

docker官网地址

https://hub.docker.com/_/nginx

拉取镜像

docker pull nginx:1.19.3-alpine

备份镜像

docker save nginx:1.19.3-alpine -o nginx.1.19.3-alpine.tar

导入镜像

docker load -i nginx.1.19.3-alpine.tar

运行镜像

docker run -itd —name zbcNginx1 -p 80:80 nginx:1.19.3-alpine 进入容器 docker exec -it zbcNginx1 sh 查看HTML目录 cd /usr/share/nginx/html/ 配置目录文件 cat /etc/nginx/nginx.conf

测试

http://192.168.209.149/

安装MySQL

docker官网地址

https://hub.docker.com/_/mysql

拉取镜像

docker pull mysql:5.7.31

备份镜像

docker save mysql:5.7.31 -o mysql.5.7.31.tar

导入镜像

docker load -i mysql.5.7.31.tar

运行镜像

docker run -itd —name mysql —restart always —privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin mysql:5.7.31 —character-set-server=utf8 —collation- server=utf8_general_ci

测试

进入容器:根据官网上的实例,使用bash命令进入容器 docker exec -it mysql bash

登录mysql

mysql -uroot -p

输入密码

admin

use mysql;

show databases;

退出mysql

exit

退出容器

exit

privileged参数

我们大多数熟悉 Unix 类系统的人,都习惯于通过使用 sudo 来随意提升自己的权限,成为 root 用户。我们在使用 Docker 容器的过程中知道,docker提供了一个 —privileged 的参数,其实它与随意使用sudo 有很大的不同,它可能会让你的应用程序面临不必要的风险,下面我们将向你展示这与以 root 身份运行的区别,以及特权的实际含义。
作为** Root **运行
Docker 允许在其宿主机上隔离一个进程、capabilities 和文件系统,但是大多数容器实际上都是默认以root 身份运行。这里我们拿 DockerHub 上几个比较流行的镜像来进行说明。
避免以** root **运行
虽然在容器内以 root 身份运行是很正常的,但如果你想加固容器的安全性,还是应该避免这样做。
特权模式
—privileged 可以不受限制地访问任何自己的系统调用。在正常的操作中,即使容器内有 root,Docker 也会限制容器的 Linux Capabilities 的,这种限制包括像 CAP_AUDIT_WRITE 这样的东西,它允许覆盖内核的审计日志—你的容器化工作负载很可能不需要这个 Capabilities。所以特权只应该在你真正需要它的特定设置中使用,简而言之,它给容器提供了几乎所有主机(作为**root)可以做的事情的权限**。
本质上,它就是一个免费的通行证,可以逃避容器所包含的文件系统、进程、sockets 套接字等,当然它有特定的使用场景,比如在很多 CI/CD 系统中需要的 Docker IN Docker 模式(在 Docker 容器内部需要 Docker 守护进程),以及需要极端网络的地方。