docker知识点

发布时间:2026/10/22 2:09:45
docker知识点
一、安装docker1.利用阿里云部署软件仓库[rootdocker-node1 ~]# cat /etc/yum.repos.d/docker.repo [docker] name docker baseurl https://mirrors.aliyun.com/docker-ce/linux/rhel/9.8/x86_64/stable/ gpgcheck 02.使用dnf命令安装dockerdnf install docker-ce -y3.配置docker网络[rootdocker-node1 ~]# vim /lib/systemd/system/docker.service ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock --iptablestrue [rootdocker-node1 ~]# echo br_netfilter /etc/modules-load.d/docker_mod.conf [rootdocker-node1 ~]# modprobe -a br_netfilter [rootdocker-node1 ~]# cat /etc/sysctl.d/docker.conf EOF net.bridge.bridge-nf-call-iptables 1 net.bridge.bridge-nf-call-ip6tables 1 net.ipv4.ip_forward 1 EOF [rootdocker-node1 ~]# sysctl --system4.启动docker服务[rootdocker-node1 ~]# systemctl enable --now docker安装并启动后如下二、docker的常规使用方法1.配置docker加速器[rootdocker-node1 ~]# cat /etc/docker/daemon.json { registry-mirrors: [https://docker.1ms.run] } [rootdocker-node1 ~]# systemctl restart docker [rootdocker-node1 ~]# docker info Registry Mirrors: https://docker.1ms.run/成品如图2.docker常用命令查看镜像[rootdocker-node1 ~]# docker images IMAGE ID DISK USAGE CONTENT SIZE EXTRA当前无镜像搜索镜像[rootdocker-node1 ~]# docker search nginx NAME DESCRIPTION STARS OFFICIAL nginx Official build of Nginx. 21206下载镜像[rootdocker-node1 ~]# docker pull nginx [rootdocker-node1 ~]# docker pull busybox查看镜像提交历史[rootdocker-node1 ~]# docker history busybox:latest [rootdocker-node1 ~]# docker images导出镜像[rootdocker-node1 ~]# docker save -o image.tar nginx:latest busybox:latest删除镜像[rootdocker-node1 ~]# docker rmi nginx:latest busybox:latest Untagged: nginx:latest Deleted: sha256:f9ea18bfa4fad859e1ed38259d711da7ccad2c3516e875cec3351a57c859f571 Untagged: busybox:latest Deleted: sha256:fd7dc98638c8e305f4dc34e979f1c0fdfdcaeb0fbf8fcff77ae834b6da3d7e6e导入镜像[rootdocker-node1 ~]# docker load -i image.tar Loaded image: nginx:latest Loaded image: busybox:latest运行镜像[rootdocker-node1 ~]# docker run -d --name web nginx:latest 821db594d47d64d2d64aeed93b6c0f01e222b71f4500e3906144d9855d58b377查看运行容器[rootdocker-node1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 821db594d47d nginx:latest /docker-entrypoint.… 3 seconds ago Up 3 seconds 80/tcp web查看所有容器[rootdocker-node1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 821db594d47d nginx:latest /docker-entrypoint.… 45 seconds ago Up 45 seconds 80/tcp web交互模式运行容器交互运行容器默认退出后会停止[rootdocker-node1 ~]# docker run -it --name busybox busybox:latest退出交互容器不对其停止[rootdocker-node1 ~]# docker attach busybox / # [ctrl][p][q] #按键查看容器信息[rootdocker-node1 ~]# docker inspect busybox容器控制[rootDocker-node1 ~]# docker stop busybox #停止容器 [rootDocker-node1 ~]# docker kill busybox #杀死容器可以使用信号 [rootDocker-node1 ~]# docker start busybox #开启停止的容器在已经运行的容器中执行指定命令[rootdocker-node1 ~]# docker exec busybox touch /root/haha #非交互 [rootdocker-node1 ~]# docker exec busybox ls /root file1 file2 haha [rootdocker-node1 ~]# docker exec -it web /bin/bash #交互的 rootf3e369725fab:/#容器删除[rootdocker-node1 ~]# docker rm -f busybox #强制删除 busybox [rootdocker-node1 ~]# docker stop web #停止运行 web [rootdocker-node1 ~]# docker rm web #删除已经停止运行的容器 web内容提交[rootdocker-node1 ~]# docker run -it --name test busybox:latest / # touch /root/file / # ls /root/ file ctrlqp 退出当前环境并继续运行容器3.容器内外复制数据1.把容器外的文件复制到容器内部[rootdocker-node1 ~]# docker cp index.html webserver:/usr/share/nginx/html [rootdocker-node1 ~]# docker exec -it webserver /bin/bash roota783b985de59:/# ls /usr/share/nginx/html/ roota783b985de59:/# cat /usr/share/nginx/html/index.html roota783b985de59:/# exit2.把容器内的文件复制到容器外[rootdocker-node1 ~]# docker cp webserver:/usr/share/nginx/html/index.html /mnt4.提交容器更改默认容器中所有操作容器被删除后就消失 docker commit -m add index.html webserver nginx_index:latest #-m 备注 #webserver 容器名 #nginx_index:latest 新的镜像名字三、容器镜像构建1.构建参数FROM:指定base镜像COPY复制文件到容器中LABEL KEY:指定作者信息/注释ADD功能与COPY相似可以在打开容器后自动解压压缩包ENV:指定环境变量EXPOSE:声明打算暴露的端口不会真正打开端口VOLUME:申明数据卷通常指数据挂载点,可以在Linux里控制容器内文件容器删了数据还在WORKDIR:切换初始工作目录RUN构建镜像的时候执行命令执行结果打包进镜像CMD在启动容器后自动运行动作可以被覆盖ENTRYPOINT:和CMD功能和用法类似但动作不可被覆盖实践#新建文件夹 [rootdocker-node1 ~]# mkdir docker [rootdocker-node1 ~]# cd docker/ #查看当前容器 [rootdocker-node1 docker]# docker images i Info → U In Use IMAGE ID DISK USAGE CONTENT SIZE EXTRA busybox:latest fd7dc98638c8 6.74MB 2.23MB nginx:latest f9ea18bfa4fa 240MB 66.7MB timinglee:v1 276ed0c7a748 6.74MB 2.23MB #编写构建规则文件 [rootdocker-node1 docker]# vim Dockerfile [rootdocker-node1 docker]# cat Dockerfile FROM busybox:latest # 指定基础镜像 LABEL authorliyou # 添加标签信息 ENV MSGhello docker #设置环境变量 WORKDIR /test # 设置容器默认工作目录 RUN echo this is test file test.txt # 构建阶段执行命令 EXPOSE 80 # 声明容器打算使用80端口 CMD echo $MSG # 容器启动后默认执行命令打印环境变量MSG的内容 #运行命令检测 [rootdocker-node1 docker]# docker build -t busybox:v1 . [rootdocker-node1 docker]# docker run -it --rm --name test busybox:v1 hello docker #容器启动后执行 CMD echo $MSG 命令