【实验】docker简单搭建
①初始化云主机
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
②安装docker
yum install docker -y
③开启服务(手动创配置文件夹和文件)
---------【可选操作】---------
mkdir -p /etc/docker/
vi /etc/docker/daemon.json
{ "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn" ] }
---------【可选操作】---------
systemctl start docker
systemctl enable docker
systemctl status docker
systemctl status docker
④运行容器(以httpd为例)
#为了确保更高的可靠性和冗余,所以指定了两个dns,都是google提供的公共DNS服务器。
docker run --dns=8.8.4.4 --dns=8.8.8.8 -d -p 80:80 httpd
⑤查看容器信息/镜像信息
docker container ls
docker image ls
⑥构建容器镜像
【docker commit】
#下载自己选定的镜像源后制作镜像-打tag
docker import 镜像源 hce:latest
# -it交互 ; -d在后台运行 ; 当这个参数和-it一起之后可以让容器在后台运行的同时仍然可以通过创建的伪终端与之交互。如果不加,会发现容器启动后,立即自动退出。
docker run -itd hce:latest /bin/bash
docker cp /etc/yum.repos.d/ 容器ID:/etc
#docker exec需要配合-it参数在容器内分配交互式终端,此时需要指明在容器内启动终端类型,常见类型有sh和bash。
docker exec -it 容器ID bash
#验证vim可用性
yum install -y vim
exit
#使用docker commit对该容器进行打包成镜像的操作
docker commit 容器ID hce-vim
docker run -d -t hce-vim
⑦容器构建镜像
【dockerfile】
vim dockerfile
#必需。这是构建镜像的基础镜像。在这个例子中,它基于 hce-vim 镜像的 latest 版本。所有 Dockerfile 都必须以一个 FROM 指令开始,因为它指定了构建的起点。
FROM hce-vim:latest
#非必需。设置环境变量。在这里,它设置了一个名为 HOSTNAME 的环境变量,值为 webserver。环境变量可以在构建过程中以及容器运行时使用。
ENV HOSTNAME webserver
#非必需。这个指令告诉 Docker 容器在运行时会监听端口 80。这主要是为了文档化容器服务所需的端口,实际上不会自动打开端口。要在运行容器时打开端口,需要使用 docker run 命令的 -p 或 --publish 选项。
EXPOSE 80
#非必需(但特定操作可能必需)。这个指令在构建镜像时执行命令,用于安装 httpd(Apache HTTP Server)和 vi 文本编辑器。yum clean all 用于清理缓存,减小镜像大小。根据镜像需要执行的任务,RUN 指令可以用来执行任何安装或配置命令。
RUN yum install httpd vi -y $$ yum clean all
#非必需。这个指令用于声明容器内的挂载点。这意味着 /var/www/html 目录可以从容器外部挂载数据卷,通常用于持久化数据或数据共享。
VOLUME ["/var/www/html"]
#非必需(但通常至少有 CMD 或 ENTRYPOINT)。这个指令提供了容器启动时默认执行的命令。这里,它启动 Apache HTTP Server 并让它在前台运行。如果用户在运行容器时指定了其他命令,CMD 提供的命令将被覆盖。
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
#在这个 Dockerfile 中,唯一绝对必需的指令是 FROM,因为它定义了镜像的基础。其他指令根据你要构建的镜像的具体需求来确定是否必需。例如,如果你的应用不需要特定端口开放,那么 EXPOSE 指令就不是必需的。同样,如果你的应用不需要持久化数据,VOLUME 也可能不是必需的。
docker build -t httpd-hce -f dockerfile /root
docker run -d -p 80:80 httpd-hce
此时应该可以curl出来apache的页面
⑧搭建私有镜像仓库
#私有镜像仓库服务监听端口为5000
docker run -d -p 5000:5000 registry
#修改镜像名称
docker tag httpd-hce localhost:5000/httpd:V1
docker push localhost:5000/httpd:V1
#查看私有镜像仓库registry中镜像信息。
curl -X GET http://localhost:5000/v2/_catalog
#列出所有的本地registry仓库的镜像
curl -X GET http://localhost:5000/v2/httpd/tags/list
docker pull localhost:5000/httpd:V1
⑨容器监控和日志管理
#top命令查询容器内进程信息,docker ps命令查询正在运行的容器。
docker top 容器ID
#查询容器资源状态,docker stats 命令会每隔1秒钟刷新一次输出。如果不想持续的监控容器使用资源的情况,可以通过 --no-stream 选项只输出当前的状态
docker stats
#查询容器日志-system journal
journalctl -b CONTAINER_NAME=任意容器名
#查询容器日志-docker logs
docker logs 任意容器ID
#查询docker服务日志
journalctl -u docker.service
⑩停止/删除容器/删除镜像
docker stop 容器ID
dockers rm 容器ID
docker rmi 镜像ID

浙公网安备 33010602011771号