安装Nginx
docker官网地址
拉取镜像
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
测试
安装MySQL
docker官网地址
拉取镜像
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 守护进程),以及需要极端网络的地方。
