docker的部署及基本用法

news2024/12/23 0:37:56

目录​​​​​​​

1 docker 介绍

1.1 什么是docker?

1.2 docker在企业中的应用场景

1.3 docker与虚拟化的对比

1.4 docker的优势

1.5 容器工作方式

2 部署docker

2.1 配置软件仓库

2.2 docker 安装

2.3 配置docker 镜像加速器

2.4 启动服务

2.5 激活内核网络选项(centos7需要的操作)

3 Docker的基本操作

3.1 docker 的镜像管理

3.1.1 搜索镜像:docker search

3.1.2 拉取镜像:docker pull

3.1.3 查看本地的镜像:docker images

3.1.4 查看镜像信息 :docker image inspect

3.1.5 导出镜像:docker image save

3.1.6 删除镜像:docker rmi

3.1.7 实例:删除镜像重新导入

3.1.8 实例:如何使用docker运行一些小型项目

3.2 容器的常用操作

3.2.1 容器的启动与交互

 3.2.2 查看容器信息

3.2.3 停止和运行容器

3.2.4 容器内容提交

3.2.5 系统文件与容器文件交互

3.2.6 查询容器内部日志


1 docker 介绍

1.1 什么是docker

Docker是管理容器的引擎,为应用打包、部署平台,而非单纯的虚拟化技术

它具有以下几个重要特点和优势:

1. 轻量级虚拟化

Docker 容器相较于传统的虚拟机更加轻量和高效,能够快速启动和停止,节省系统资源。

例如,启动一个 Docker 容器可能只需要几秒钟,而启动一个虚拟机则可能需要几分钟。

2. 一致性

:确保应用程序在不同的环境中(如开发、测试、生产)具有一致的运行表现。

无论在本地还是云端,应用的运行环境都能保持相同,减少了因环境差异导致的问题。

3. 可移植性

:可以轻松地将 Docker 容器从一个平台迁移到另一个平台,无需担心依赖和环境配置的差

异。

比如,在本地开发的容器可以无缝部署到云服务器上。

4. 高效的资源利用:多个 Docker 容器可以共享主机的操作系统内核,从而更有效地利用系统资

源。

5. 易于部署和扩展:能够快速部署新的应用实例,并且可以根据需求轻松地进行水平扩展。

总之,Docker 极大地简化了应用程序的开发、部署和管理流程,提高了开发效率和运维的便利性。

它在现代软件开发和云计算领域得到了广泛的应用。

1.2 docker在企业中的应用场景

  • 在企业中docker作为业务的最小载体而被广泛应用
  • 通过docker企业可以更效率的部署应用并更节省资源

IaaS(Infrastructure as a Service),即基础设施即服务

PaaS 是( Platform as a Service )即指平台即服务
SaaS Software as a Service )软件运营服务是

1.3 docker与虚拟化的对比

特性虚拟机Docker 容器
操作系统宿主机上运行虚拟机 OS共享宿主机 OS
存储镜像较大(GB)镜像小(MB)
性能操作系统额外的 cpu、内存消耗几乎无性能损耗
移植性笨重、与虚拟化技术耦合度高轻量、灵活迁移
隔离性完全隔离安全隔离
部署慢、分钟级快速、秒级
运行密度一般几十个单机支持上千容器

1.4 docker的优势

对于开发人员:Build onceRun anywhere

对于运维人员:Configure onceRun anything

容器技术大大提升了IT人员的幸福指数!

1.5 容器工作方式

2 部署docker

部署第一个容器

2.1 配置软件仓库

官方站点:https://docs.docker.com/

由于一些原因导致官方站点不能直接访问,所以使用清华大学的镜像源

[root@rockynode-1 docker-page]# vim /etc/yum.repos.d/docker-ce.repo 
[docker]
name=docker-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/rhel/9.4/x86_64/stable/
gpgcheck=0

[root@rockynode-1 docker-page]# yum makecache

2.2 docker 安装

[root@rockynode-1 ~]# yum install docker-ce

[root@rockynode-1 ~]# systemctl start docker.service 
[root@rockynode-1 ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

2.3 配置docker 镜像加速器

[root@rockynode-1 ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": [
          "https://docker.m.daocloud.io",
          "https://gy3ctkgm.mirror.aliyuncs.com"
  ]
}

2.4 启动服务

#编辑docker启动文件,设定其使用iptables的网络设定方式,默认使用nftables
[root@docker ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --iptables=true
]# systemctl enable --now docker
]# docker info

2.5 激活内核网络选项(centos7需要的操作)

#在rhel7中 需要
]# vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
]# sysctl --system
]# systemctl restart docker

​​​​​​​

3 Docker的基本操作

3.1 docker 的镜像管理

3.1.1 搜索镜像:docker search

[root@rockynode-1 dockerfile]# docker search nginx
NAME                              DESCRIPTION                                      STARS     OFFICIAL
nginx                             Official build of Nginx.                         20126     [OK]
nginx/nginx-quic-qns              NGINX QUIC interop                               1         
nginx/nginx-ingress               NGINX and  NGINX Plus Ingress Controllers fo…   94        
nginx/nginx-ingress-operator      NGINX Ingress Operator for NGINX and NGINX P…   2         
nginx/nginx-prometheus-exporter   NGINX Prometheus Exporter for NGINX and NGIN…   43        
nginx/unit                        This repository is retired, use the Docker o…   63        

3.1.2 拉取镜像:docker pull

[root@rockynode-1 ~]# docker pull nginx:1.26-alpine
1.26-alpine: Pulling from library/nginx
c6a83fedfae6: Pull complete 
e84a595b509f: Pull complete 
49fbf0520b78: Pull complete 
8e479110e8a8: Pull complete 
ecc9b66af851: Pull complete 
09732b09eef5: Pull complete 
2a633cf0ba84: Pull complete 
128ae6f0c7f5: Pull complete 
Digest: sha256:d4d72ee8e6d028c5ad939454164d3645be2d38afb5c352277926a48e24abf4fa
Status: Downloaded newer image for nginx:1.26-alpine
docker.io/library/nginx:1.26-alpine

3.1.3 查看本地的镜像:docker images

alpine 版本: nginx 镜像的最小安装发型版本

3.1.4 查看镜像信息 :docker image inspect

[root@rockynode-1 ~]# docker image inspect nginx:1.26-alpine 
[
    {
        "Id": "sha256:9703b2608a982bc40633a891858a59ab10fc1c96156056e888d5754fb427d6ed",
        "RepoTags": [
            "nginx:1.26-alpine"
        ],
        "RepoDigests": [
            "nginx@sha256:d4d72ee8e6d028c5ad939454164d3645be2d38afb5c352277926a48e24abf4fa"
        ],
        "Parent": "",
        "Comment": "buildkit.dockerfile.v0",
        "Created": "2024-08-14T23:51:24Z",
        "DockerVersion": "",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.26.2",
                "PKG_RELEASE=1",
                "DYNPKG_RELEASE=2",
                "NJS_VERSION=0.8.5",
                "NJS_RELEASE=1"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "ArgsEscaped": true,
            "Image": "",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGQUIT"
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 43255493,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/a98984e990b4942e4b338854ebb11c66c9f43e0c0543bcf73ee063ebc784f8b1/diff:/var/lib/docker/overlay2/17e91ccae105f802683110be0d219cdbac4e04e13be6294a63b0fa19b0584966/diff:/var/lib/docker/overlay2/9f7a9117632e9a64241301f62cbf3d6dfe853b4bed2b7d11273a7b9b67f7445b/diff:/var/lib/docker/overlay2/0a50c51660edd2cb13954b23ff9c34c9c4605984d90d30804e6255c314b354d4/diff:/var/lib/docker/overlay2/d2b320a241233388287e2e0907c77caace0cb11a64d3616ba30f364fbb764555/diff:/var/lib/docker/overlay2/71fa88d3d2cbc068e34a35ae87c1acde2c759b148b5b964ed200e93dd5f781b6/diff:/var/lib/docker/overlay2/da17fc4ead7cf90a18c9824732d3e9ffacc9a9d07d05a9b1acc29bd77c13839e/diff",
                "MergedDir": "/var/lib/docker/overlay2/4b71bfb93d3acc5b9ef6b252f793bb6c9995a695c0b961c7f8d12fa6fe78c26d/merged",
                "UpperDir": "/var/lib/docker/overlay2/4b71bfb93d3acc5b9ef6b252f793bb6c9995a695c0b961c7f8d12fa6fe78c26d/diff",
                "WorkDir": "/var/lib/docker/overlay2/4b71bfb93d3acc5b9ef6b252f793bb6c9995a695c0b961c7f8d12fa6fe78c26d/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:78561cef0761903dd2f7d09856150a6d4fb48967a8f113f3e33d79effbf59a07",
                "sha256:56983a0546de1109188cf29c574481a59b137c2de453942c5a11abc2d7854d32",
                "sha256:88b572fefcc60fc85f0ca66174d71a118800c402d3697c4dc6a90dd501730c18",
                "sha256:9405d361c947aa1a6f4561acce59baeedfb5579c4610c361fd6915152c59e9a5",
                "sha256:775da40d81efe5b3dad7d5d34eba42f975e393e487e5819c16458aa7006a13c5",
                "sha256:d1e692cc0d19c3319c0552b598b1dba876db7fd6b987ffb275d2a97ae79692d3",
                "sha256:06c72c2189d8932874b549a828b91e9306ece19bb97093fa45a0057518bb11aa",
                "sha256:2d40545659420c3ec78f0a0cf1d743f388035e03ccd5b10745b5a190b4ae1cee"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

 

3.1.5 导出镜像:docker image save

[root@rockynode-1 ~]# ls
公共  模板  视频  图片  文档  下载  音乐  桌面  anaconda-ks.cfg  script
[root@rockynode-1 ~]# docker image save nginx:latest -o nginx-latest.tar.gz
[root@rockynode-1 ~]# ls
公共  视频  文档  音乐  anaconda-ks.cfg      script
模板  图片  下载  桌面  nginx-latest.tar.gz

3.1.6 删除镜像:docker rmi

[root@rockynode-1 ~]# docker rmi nginx:latest 

3.1.7 实例:删除镜像重新导入

# 删除镜像
[root@rockynode-1 ~]# docker rmi nginx:latest 
Untagged: nginx:latest
Deleted: sha256:5ef79149e0ec84a7a9f9284c3f91aa3c20608f8391f5445eabe92ef07dbda03c
Deleted: sha256:aa557aaf0b93b5b9af247beb198be89632444af2d52b37f2b67bdf2227194625
Deleted: sha256:85dee7d6fa4b70eaa6b43b5dede5255b6794fac35d2aa6a80f8590dad223c1a6
Deleted: sha256:9996f8429bfc2f1e10f561e17bdc0c66eb82e30088725fbdc634a774933ba066
Deleted: sha256:d861b1c34411369feaaaf4921018baa607e89f1c393b8ed950f676dd3349b9ff
Deleted: sha256:01b9716819d1d6863f886e1adcd8bb2bf936dcacb16e1750e873bfd8e1667014
Deleted: sha256:8d8c7099ecd8343e6700c1d348211ab159c0eda2a9d318c5cf600a8eb2588f5e
Deleted: sha256:9853575bc4f955c5892dd64187538a6cd02dba6968eba9201854876a7a257034

# 导入本地保存的镜像
[root@rockynode-1 ~]# docker load -i /root/nginx-latest.tar.gz 
9853575bc4f9: Loading layer  77.83MB/77.83MB
72db5db515fd: Loading layer    114MB/114MB
8b87c0c66524: Loading layer  3.584kB/3.584kB
ec1a2ca4ac87: Loading layer  4.608kB/4.608kB
55e54df86207: Loading layer   2.56kB/2.56kB
f4f00eaedec7: Loading layer   5.12kB/5.12kB
5f0272c6e96d: Loading layer  7.168kB/7.168kB
Loaded image: nginx:latest

# 查看镜像是否本地拉取成功
[root@rockynode-1 ~]# docker images
REPOSITORY           TAG           IMAGE ID       CREATED         SIZE
nginx                1.26-alpine   9703b2608a98   12 days ago     43.3MB
nginx                latest        5ef79149e0ec   12 days ago     188MB
busybox              latest        65ad0d468eb1   15 months ago   4.26MB
timinglee/game2048   latest        19299002fdbe   7 years ago     55.5MB
timinglee/mario      latest        9a35a9e43e8c   8 years ago     198MB

使用 awk 保存所有镜像

首先用awk将现在镜像名与标签给打印出来

~]# docker images | awk 'BEGIN{FS=" "}{if (NR > 1) print $1 ":" $2}'
nginx:1.26-alpine
nginx:latest
busybox:latest
timinglee/game2048:latest
timinglee/mario:latest
~]# docker save `docker images | awk 'BEGIN{FS=" "}{if (NR > 1) print $1 ":" $2}'` -o /root/images.tar.gz

docker删除所有镜像

~]# docker rmi `docker images | awk 'BEGIN{FS=" "}{if (NR > 1) print $1 ":" $2}'` 

~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

恢复删除的镜像,本地保存的

[root@rockynode-1 ~]# docker load -i /root/images.tar.gz 
011b303988d2: Loading layer   5.05MB/5.05MB
36e9226e74f8: Loading layer  51.46MB/51.46MB
192e9fad2abc: Loading layer  3.584kB/3.584kB
6d7504772167: Loading layer  4.608kB/4.608kB
88fca8ae768a: Loading layer  629.8kB/629.8kB
Loaded image: timinglee/game2048:latest
Loaded image: timinglee/mario:latest
78561cef0761: Loading layer  8.082MB/8.082MB
56983a0546de: Loading layer  4.447MB/4.447MB
88b572fefcc6: Loading layer  3.584kB/3.584kB
9405d361c947: Loading layer  4.608kB/4.608kB
775da40d81ef: Loading layer   2.56kB/2.56kB
d1e692cc0d19: Loading layer   5.12kB/5.12kB
06c72c2189d8: Loading layer  7.168kB/7.168kB
2d4054565942: Loading layer  32.09MB/32.09MB
Loaded image: nginx:1.26-alpine
9853575bc4f9: Loading layer  77.83MB/77.83MB
72db5db515fd: Loading layer    114MB/114MB
8b87c0c66524: Loading layer  3.584kB/3.584kB
ec1a2ca4ac87: Loading layer  4.608kB/4.608kB
55e54df86207: Loading layer   2.56kB/2.56kB
f4f00eaedec7: Loading layer   5.12kB/5.12kB
5f0272c6e96d: Loading layer  7.168kB/7.168kB
Loaded image: nginx:latest
d51af96cf93e: Loading layer  4.495MB/4.495MB
Loaded image: busybox:latest

[root@rockynode-1 ~]# docker images 
REPOSITORY           TAG           IMAGE ID       CREATED         SIZE
nginx                1.26-alpine   9703b2608a98   12 days ago     43.3MB
nginx                latest        5ef79149e0ec   12 days ago     188MB
busybox              latest        65ad0d468eb1   15 months ago   4.26MB
timinglee/game2048   latest        19299002fdbe   7 years ago     55.5MB
timinglee/mario      latest        9a35a9e43e8c   8 years ago     198MB

3.1.8 实例:如何使用docker运行一些小型项目

运行docker

 docker-page]# docker run -d --rm --name webserver -p 80:80 nginx
e681dae38196e04049034a7881ab3f53000fb4a54f6cf335233d366b7b8b9ab4
[root@rockynode-1 docker-page]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS         PORTS                               NAMES
e681dae38196   nginx     "/docker-entrypoint.…"   5 seconds ago   Up 4 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   webserver

删除容器

[root@rockynode-1 ~]# docker rm -f webserver 
webserver

使用第二个镜像开启一个容器 

[root@rockynode-1 ~]# docker run -d --rm --name game1 -p 80:80 timinglee/game2048
7cccfa818ef3fda7342b1a05e14b554e01b41f42c094c671085beb8563d6ee3e

[root@rockynode-1 ~]# docker ps 
CONTAINER ID   IMAGE                COMMAND                   CREATED              STATUS              PORTS                                        NAMES
7cccfa818ef3   timinglee/game2048   "/bin/sh -c 'sed -i …"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp   game1

实现效果 

停止自动删除 因为运行时指定 了--rm,停止自动删除 

[root@rockynode-1 ~]# docker stop game1 
game1

运行第三个容器:马里奥 

[root@rockynode-1 ~]# docker run --rm --name game2 -p 80:8080 timinglee/mario

[root@rockynode-1 ~]# docker ps 
CONTAINER ID   IMAGE                    COMMAND                   CREATED         STATUS         PORTS                                   NAMES
e381a2de686e   timinglee/mario:latest   "python3 -m http.ser…"   5 seconds ago   Up 5 seconds   0.0.0.0:80->8080/tcp, :::80->8080/tcp   game2

浏览器打开可以玩了 

3.2 容器的常用操作

3.2.1 容器的启动与交互

[root@rockynode-1 dockerfile]# docker run -it --name test busybox:latest
# ctrl+pq 可以不停止容器退出 
/ # [root@rockynode-1 dockerfile]# 

 3.2.2 查看容器信息

[root@rockynode-1 dockerfile]# docker ps -a 
CONTAINER ID   IMAGE            COMMAND   CREATED          STATUS          PORTS     NAMES
3df692c10553   busybox:latest   "sh"      21 seconds ago   Up 21 seconds             test
[root@rockynode-1 dockerfile]# docker ps 
CONTAINER ID   IMAGE            COMMAND   CREATED          STATUS          PORTS     NAMES
3df692c10553   busybox:latest   "sh"      28 seconds ago   Up 27 seconds             test
[root@rockynode-1 dockerfile]# docker exec -it test sh
[root@rockynode-1 docker-page]# docker load -i centos-7.tar.gz 
174f56854903: Loading layer  211.7MB/211.7MB
Loaded image: centos:7
[root@rockynode-1 docker-page]# docker images 
REPOSITORY           TAG           IMAGE ID       CREATED             SIZE
busybox              v1            acaead738246   About an hour ago   4.26MB
nginx                1.26-alpine   9703b2608a98   12 days ago         43.3MB
nginx                latest        5ef79149e0ec   12 days ago         188MB
busybox              latest        65ad0d468eb1   15 months ago       4.26MB
centos               7             eeb6ee3f44bd   2 years ago         204MB
timinglee/game2048   latest        19299002fdbe   7 years ago         55.5MB
timinglee/mario      latest        9a35a9e43e8c   8 years ago         198MB
[root@rockynode-1 docker-page]# docker run -it --name centos7 centos:7

[root@a1f0476a59ca /]# #进入到容器中,按<ctrl>+<d>退出并停止容器,
                       #按<ctrl>+<pq>退出但不停止容器


[root@rockynode-1 docker-page]# docker ps 
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
a1f0476a59ca   centos:7   "/bin/bash"   3 minutes ago   Up 3 minutes             centos7

# 重新进入容器
[root@rockynode-1 docker-page]# docker attach centos7 
[root@a1f0476a59ca /]# 

 

-d                      # 后台运行
-i                       # 交互式运行
-t                       # 打开一个终端
--name             # 指定容器名称
-p                      # 端口映射 -p 80 8080 把容器 8080 端口映射到本机 80 端口
--rm                  # 容器停止自动删除容器
--network          # 指定容器使用的网络
[root@rockynode-1 docker-page]# docker exec -i -t centos7 ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
# 查看当前运行容器
[root@rockynode-1 ~]# docker ps 
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS         PORTS     NAMES
a1f0476a59ca   centos:7   "/bin/bash"   10 minutes ago   Up 4 minutes             centos7

# 查看所有容器
[root@rockynode-1 ~]# docker ps -a 
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS         PORTS     NAMES
a1f0476a59ca   centos:7   "/bin/bash"   10 minutes ago   Up 4 minutes             centos7

# 查看容器详细信息
[root@rockynode-1 ~]# docker inspect centos7 
[
    {
        "Id": "a1f0476a59cafbc809e21e82ddbdd1d751c90700f8def848d5592d6760ff2402",
        "Created": "2024-08-27T11:53:58.074417126Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 12006,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2024-08-27T11:59:38.632754486Z",
            "FinishedAt": "2024-08-27T11:59:20.625915334Z"
        },

################################# 省略 ##################################

3.2.3 停止和运行容器

[root@rockynode-1 ~] docker stop centos7 #停止容器
[root@rockynode-1 ~] docker kill centos7 #杀死容器,可以使用信号
[root@rockynode-1 ~] docker start centos7 #开启停止的容器

3.2.4 删除容器 ​​​​​​​

[root@rockynode-1 ~]# docker run -it --name centos7_2 centos:7 
[root@258651663ef8 /]# [root@rockynode-1 ~]# 
[root@rockynode-1 ~]# docker ps 
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
258651663ef8   centos:7   "/bin/bash"   10 seconds ago   Up 10 seconds             centos7_2
a1f0476a59ca   centos:7   "/bin/bash"   16 minutes ago   Up 10 minutes             centos7
[root@rockynode-1 ~]# docker stop centos7
centos7
[root@rockynode-1 ~]# docker stop centos7_2 
centos7_2
[root@rockynode-1 ~] docker container prune -f  # 删除所有停止的容器
Deleted Containers:
258651663ef8c66b76581b1a4e99b453990ee29d26eabae10f2b98caf6d491bd
a1f0476a59cafbc809e21e82ddbdd1d751c90700f8def848d5592d6760ff2402

Total reclaimed space: 24.09MB
[root@rockynode-1 ~]# docker ps -a 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@rockynode-1 ~]# 

3.2.4 容器内容提交

在平常我们不可能只是只保存容器中,那样对数据是及其不安全的,一般都是创建容器然后保存之后再生成新的生成镜像。

将一层可读变为两层可读 :

而保存生成镜像就需要用到 commit -m  --> 就是为原有只读的镜像多添加了一层可写层并保存这一层可写层将他做成一个两层的可读的镜像

dockerfile]# docker run --name test -it busybox:latest 
/ # exit
dockerfile]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

dockerfile]# docker start test 

dockerfile]# docker ps 
CONTAINER ID   IMAGE            COMMAND   CREATED          STATUS         PORTS     NAMES
4eac8f46f01d   busybox:latest   "sh"      22 seconds ago   Up 3 seconds             test

dockerfile]# docker exec -it test sh
/ # touch shuyanfile
/ # ls
bin         etc         lib         proc        shuyanfile  tmp         var
dev         home        lib64       root        sys         usr
/ # exit

dockerfile]# docker ps 
CONTAINER ID   IMAGE            COMMAND   CREATED              STATUS          PORTS     NAMES
4eac8f46f01d   busybox:latest   "sh"      About a minute ago   Up 47 seconds             test

dockerfile]# docker commit -m "add file shuyanfile" test busybox:v1
sha256:acaead738246c8108e4e88fdc2385966249e26dbc31e9f1402240877c40d3d5e

dockerfile]# docker images 
REPOSITORY           TAG           IMAGE ID       CREATED          SIZE
busybox              v1            acaead738246   19 seconds ago   4.26MB
nginx                1.26-alpine   9703b2608a98   12 days ago      43.3MB
nginx                latest        5ef79149e0ec   12 days ago      188MB
busybox              latest        65ad0d468eb1   15 months ago    4.26MB
timinglee/game2048   latest        19299002fdbe   7 years ago      55.5MB
timinglee/mario      latest        9a35a9e43e8c   8 years ago      198MB
dockerfile]# docker ps 
CONTAINER ID   IMAGE            COMMAND   CREATED         STATUS         PORTS     NAMES
4eac8f46f01d   busybox:latest   "sh"      4 minutes ago   Up 3 minutes             test

# 删除由busybox:latest 只读层生成的可写容器
dockerfile]# docker rm -f test 
test

dockerfile]# docker run -it --rm --name test busybox:v1 
/ # ls
bin         etc         lib         proc        shuyanfile  tmp         var
dev         home        lib64       root        sys         usr
/ # 

运行了一个新的 busybox:latest 容器,
并命名为 test,
同时使用了 -it 选项来开启一个交互式的 shell,
以及 --rm 选项来确保容器在退出后会被自动删除。

3.2.5 系统文件与容器文件交互

[root@rockynode-1 ~]# docker run -it --name=centos7 centos:7 
[root@bf0dce166d86 /]# exit
exit
[root@rockynode-1 ~]# docker start centos7 
centos7
[root@rockynode-1 ~]# docker ps 
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS         PORTS     NAMES
bf0dce166d86   centos:7   "/bin/bash"   14 seconds ago   Up 4 seconds             centos7
[root@rockynode-1 ~]# docker exec -it centos7 ls 
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
[root@rockynode-1 ~]# ls
公共  视频  文档  音乐  anaconda-ks.cfg  images.tar.gz        script
模板  图片  下载  桌面  dockerfile       nginx-latest.tar.gz


[root@rockynode-1 ~]# ls
公共  视频  文档  音乐  anaconda-ks.cfg  images.tar.gz        script
模板  图片  下载  桌面  dockerfile       nginx-latest.tar.gz

[root@rockynode-1 ~] docker cp anaconda-ks.cfg centos7:/mnt  #复制文件到容器中
Successfully copied 2.56kB to centos7:/mnt

[root@rockynode-1 ~] docker exec -it centos7 ls /mnt         #查看容器是否收到
anaconda-ks.cfg

3.2.6 查询容器内部日志

[root@rockynode-1 ~]# docker logs nginx_2 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2080261.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ctfhub-web-SSRF通关攻略

一、内网访问 1.打开ctfhub给的环境地址 2.观察题目 发现让我们访问127.0.0.1下的flag.php 在地址栏后面有一个url参数 ?urlhttp://127.0.0.1/flag.php 提交即可 二、伪协议读取文件 1.打开ctfhub给的环境 2.观察题目 发现让我们读取flag.php文件 读取文件用到的协议是…

2024最值得购买的耳机?开放式耳机测评

在2024年&#xff0c;多款开放式耳机在市场上备受关注&#xff0c;它们各具特色&#xff0c;满足了不同消费者的需求。今天甜心根据当前市场情况和用户反馈&#xff0c;为大家推荐几款最值得购买的开放式耳机&#xff1a; 虹觅HOLME Fit2 虹觅HOLME Fit2是一款集颜值、舒适度、…

WireShark网络分析~环境搭建

一、虚拟网络设备搭建 &#xff08;一&#xff09;eNSP介绍 网络由网络设备和计算机构成&#xff0c;eNSP是模拟网络拓扑关系的软件。 &#xff08;二&#xff09;eNSP下载 华为官网&#xff1a;https://forum.huawei.com/enterprise/zh/thread/blog/580934378039689216 &am…

2k1000LA 调试4G

问题&#xff1a; 其实算不上 调试&#xff0c; 之前本来4G是好的&#xff0c;但是 我调试了触摸之后&#xff0c;发现4G用不了了。 其实主要是 pppd 这个命令找不到。 首先来看 为什么 找不到 pppd 这个命令。 再跟目录使用 find 命令&#xff0c;能够找到这个命令&#…

python可视化-密度图

1、加载数据 import pandas as pd import numpy as np from sklearn.datasets import load_iris import warnings# 禁用所有警告信息 warnings.filterwarnings(ignore)# 加载数据 iris load_iris() iris iris.keys() df pd.DataFrame(iris.data, columnsiris.feature_names)…

【JS】localeCompare实现中文排序

如何对两个中文进行字典顺序排序&#xff0c;如’本’拼音首字母’b’&#xff0c;‘初’拼音首字母’c’&#xff0c;所以’本’<‘初’。 JS默认根据编码顺序排序 使用localeCompare即可&#xff0c;如 ‘本’ < ‘初’ 则返回负数 使用方法 referenceStr.localeComp…

HR招聘面试人才测评工具,mbti职业性格测试

MBTI职业性格测试是国际最为流行的职业人格评估工具&#xff0c;作为一种对个性的判断和分析&#xff0c;是一个理论模型&#xff0c;从纷繁复杂的个性特征中&#xff0c;归纳提炼出4个关键要素——动力、信息收集、决策方式、生活方式&#xff0c;进行分析判断&#xff0c;从而…

万邑通信息科技笔试题库:北森测评言语数字图形真题答题要求及真题分享

万邑通&#xff08;上海&#xff09;信息科技股份有限公司是一家提供跨境电商整体供应链解决方案的企业。我们专注于为全球客户提供跨境售后物流服务&#xff0c;通过供应链管理与互联网技术相结合&#xff0c;有效降低库存成本&#xff0c;提升库存周转率和资金回报率。我们的…

【应用开发】解决正点原子I.MX6ull应用编程zlib移植问题

问题描述 在正点原子应用开发移植zlib库的时候&#xff0c;文档中有这样一段描述&#xff0c;先删除开发板中的zlib库&#xff0c;然后再拷贝zlib库 这就会导致在使用scp命令拷贝编译好的zlib库的时候报错没有zlib.so.1&#xff0c;如下图所示&#xff1a; 解决方法 千万不…

如何使用ssm实现计算机科学与技术学习网站的设计与开发

TOC ssm248计算机科学与技术学习网站的设计与开发jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&…

基于layui实现简单的万智牌生命计数器页面

对照手机App“旅法师营地”的万智牌生命计数器窗口&#xff08;如下图所示&#xff09;&#xff0c;使用layui、jQuery等实现简单的万智牌生命计数器页面。   主要实现的功能如下&#xff1a;   1&#xff09;点击左右两侧的-1、1、-5、5区域更新左右两侧生命值&#xff1…

简过网:公务员考试缺考有什么影响?会影响下一次报名吗?

每年报名公务员考试的人有很多&#xff0c;但是弃考的人也有不少&#xff0c;比如发现个临时突发情况参加不了才公&#xff0c;那么&#xff0c;公务员考试缺考有什么影响&#xff1f;会影响下一次报名吗&#xff1f; 答案是不会…… 如果在笔试阶段&#xff0c;如果考生选择缺…

基于Thymeleaf、bootstrap、layUI 混合前端应用

目录 1、项目结构 2、pom依赖导入 3、页面加载机制 4、前端案例 4.1、加载公共页面及静态文件 4.2、Bootstrap col-md栅栏 4.3、BootStrap Table表格加载 4.4、Layui select下拉项加载 4.5、Layui radio 单选项加载 4.6、Ajax Post请求 以下代码基于Spring boot Thy…

STM32外部中断事件控制器-EXTI

EXTI简介&#xff1a; EXTI 是 External Interrupt 的缩写&#xff0c;表示外部中断事件控制器。EXTI 可以监测指定 GPIO 口的电平信号变化&#xff0c;并在检测到指定条件时&#xff0c;向内核的中断控制器 NVIC 发出中断申请。NVIC 在裁决后&#xff0c;如果满足条件&#xf…

峟思振弦式钢筋计在恶劣环境下的工作性能分析

在土木工程领域&#xff0c;尤其是建筑、桥梁、隧道等复杂结构的监测中&#xff0c;振弦式钢筋计作为一种高精度、高稳定性的测量仪器&#xff0c;扮演着至关重要的角色。尤其在恶劣环境下&#xff0c;其卓越的工作性能更是备受关注。本文将从耐久性、实时监控、安全性评估及适…

Vue 3 + GSAP:解锁高性能动画的神奇组合

在一个偶然的场景使用了 GSAP&#xff08;GreenSock Animation Platform&#xff09;&#xff0c;感觉挺好玩的&#xff0c;在此浅浅记录一下。 GSAP 是一个功能强大的 JS 动画库&#xff0c;常用于创建高性能、流畅的动画。它不仅支持基本的动画&#xff0c;还提供了时间轴控…

SpringBoot日常:集成代码覆盖率测试工具JaCoCo

文章目录 简介开始集成1、pom添加依赖2、pom添加插件3、业务代码4、单元测试代码5、开始测试6、查看结果 如何排除不需要的路径&#xff1f;设置覆盖率目标并验证JACOCO的不足JACOCO改进版super-Jacoco代码覆盖率的知识扩展 简介 JaCoCo&#xff08;Java Code Coverage&#x…

一把手告诉你联盟营销白帽电商广告借力NewsBreak头条优势

揭秘美国NewsBreak头条新闻推广联盟营销白帽电商广告优势 在当今数字化浪潮中&#xff0c;电商行业竞争日益激烈&#xff0c;各大平台纷纷寻求创新的推广方式以吸引更多商家入驻并提升用户购物体验。NewsBreak&#xff0c;作为美国一款领先的新闻聚合平台&#xff0c;凭借其庞…

静态代理与动态代理的区别与选择

在当今软件开发领域&#xff0c;代理模式作为一种重要的设计模式&#xff0c;广泛应用于增强现有对象功能、控制访问权限以及实现远程调用等场景。本文旨在深入探讨静态代理与动态代理之间的核心区别&#xff0c;帮助开发者理解两者在实现机制、灵活性、性能表现及适用场景上的…

HTML静态网页成品作业(HTML+CSS)——西点蛋糕介绍(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有5个页面。 二、作品演示 三、代…