docker基础:搭建centos7(详见B站泷羽sec)
docker的简单学习:
sudo apt-get update //这个命令让系统检查有没有新软件
sudo apt-get install docker.io //安装 Docker
sudo docker version //查看是否安装成功,显示docker的版本信息
启用Docker
启动成功后,没有错误信息输出。
可以使用 sudo docker ps 命令来验证 Docker 是否正常启动。
sudo service docker start
sudo docker ps
将docker改为国内的源
vim /etc/docker/daemon.json
然后将以下源复制进去即可
{
"registry-mirrors": [
"https://5tqw56kt.mirror.aliyuncs.com",
"https://docker.hpcloud.cloud",
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"USTC Open Source Software Mirror",
"https://docker.chenby.cn",
"https://docker.ckyl.me",
"Mirror site",
"https://hub.rat.dev"
]
}
保存并退出
让docker守护进程重新加载配置文件
sudo systemctl daemon-reload
重启docker服务
sudo systemctl restart docker
拉取centos7官方docker的镜像:
sudo docker pull centos:7
运行一个基于CentOS 7镜像的容器:
sudo docker run -it --name my_centos7 centos:7 /bin/bash
sudo docker run -d --name my_centos7 centos:7 /bin/bash
两命令都会创建, exit 退出后仍然存在,可使用 docker ps -a 进行查看
在这个命令中:
-it 选项允许你交互式地运行容器,会占用终端。OR或者 -d 选项(Detached,分离
模式),容器就会在后台启动并运行,不会占用当前终端
--name my_centos7 给容器命名为my_centos7。
执行上述命令后,你会进入到一个新的CentOS 7容器中,可以在这个环境中执行
CentOS 7系统的命令。
centos:7 指定使用的镜像。
/bin/bash 启动容器后执行的命令,这里启动了bash让你能与容器交互。
创建apache容器后台运行
docker container run -d --rm -p 8080:80 httpd
当没有下载镜像直接启动时,会先下载对应的镜像
命令解释:
docker container run:这是启动一个新容器的命令。
-d:表示以守护进程(detached)模式运行容器,即容器在后台运行,不会占用当前终端。
--rm:当容器停止运行时,自动删除容器。
-p 8080:80:将主机的 8080 端口映射到容器内的 80 端口。这样,外部可以通过访问主机的 8080 端口来访问容器内运行的80端口服务。
安装成功:
挂载宿主机目录
docker container run -d --rm -p 8080:80 -v
/home/user/webroot/:/usr/local/apache2/htdocs/ httpd
-d 参数
功能 :表示以 “分离(detached)” 模式运行容器。
含义和作用 :当容器以这种模式启动后,它会在后台运行,不会占用当前的
命令行终端。这使得你可以在启动容器后,继续在终端中执行其他任务,比
如启动其他容器、检查容器状态或者运行其他系统命令等。例如,你可以在
启动这个 httpd 容器后,马上使用 docker ps 命令查看容器是否已经成功
启动并在后台运行。
--rm 参数
功能 :设置容器在退出时自动删除。
含义和作用 :一旦容器内的任务完成或者因为某种原因(如发生错误、手动
停止等)停止运行,Docker 会自动删除这个容器。这有助于保持 Docker 环境
的整洁,避免大量无用的容器占用磁盘空间。特别是在临时测试或者短期运
行容器的场景下非常有用,比如你只是想快速测试一下 httpd 服务器的配
置,使用完后容器自动删除,不需要手动清理。
-p 8080:80 参数
功能 :进行端口映射。
含义和作用 :左边的 8080 是宿主机(运行 Docker 的物理机或虚拟机)上
的端口,右边的 80 是容器内 httpd 服务器默认监听的端口。通过这种映
射,外部客户端(如浏览器)访问宿主机的 8080 端口时,请求会被转发到
容器内 httpd 服务器监听的 80 端口。这就使得你可以通过宿主机的 8080
端口来访问容器内 httpd 服务器提供的网页服务。例如,在浏览器中输入宿
主机的 IP 地址加上 8080 端口(如 http://[宿主机IP]:8080 ),就可以访
问容器内 httpd 服务器上的网页。
-v /home/user/webroot/:/usr/local/apache2/htdocs/ 参数
功能 :进行目录挂载。
含义和作用 :左边的 /home/user/webroot/ 是宿主机上的一个目录,右边
的 /usr/local/apache2/htdocs/ 是容器内 httpd 服务器存放网页文档的
默认目录。通过这种挂载,将宿主机上的目录挂载到容器内相应的目录。这
样做有很多好处,一是方便在宿主机上直接对要提供给 httpd 服务器的网页
文档进行编辑、更新等操作。例如,你在宿主机的 /home/user/webroot/
目录下新建一个 index.html 文件,容器内的 httpd 服务器就能直接使用
这个文件来提供网页服务。二是实现了数据的持久化和共享,即使容器重新
启动或者被删除后重新创建,只要宿主机上挂载的目录中的数据没有丢失,
容器内的 httpd 服务器就可以继续使用这些数据来提供网页服务。
httpd 部分
功能 :指定要运行的容器所基于的镜像名称。
含义和作用 : httpd 是一个常用的用于搭建 Apache HTTP 服务器的镜像。
通过运行基于这个镜像的容器,容器内部会启动 httpd 服务器,从而能够对
外提供网页服务。当容器启动后, httpd 服务器会根据容器内的配置和挂载
的网页文档目录来提供相应的网页内容
侦听宿主机80端口
docker container run -d --rm --network host -v
/home/user/webroot/:/usr/local/apache2/htdocs/ httpd
--network host 参数
功能:
将容器的网络模式设置为 “host” 模式。
含义和作用:
在这种模式下,容器会直接使用宿主机的网络栈。容器内的网络接口和端
口将直接与宿主机相同,不再进行端口映射操作。例如,容器内 httpd
服务器监听的 80 端口,将直接在宿主机的 80 端口上进行监听。这对于
一些需要直接使用宿主机网络资源或者需要避免网络地址转换(NAT)带
来的复杂性的应用场景很有用。不过,这种模式也有一定的风险,因为容
器内的服务将直接暴露在宿主机网络上,可能会增加安全风险。