Docker容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker容器

一、容器的基本介绍


(1)容器的启动过程说明


  1. 检查本地是否存在镜像,如果没有就从指定的仓库下载,docker run也会下载,pull也是下载
  2. 利用镜像启动一个容器
  3. 分配一个文件系统,并在只读的镜像层外挂在一层可读层,镜像是只读的,容器是可读可写的
  4. 从宿主机配置的网桥接口中桥接一个虚拟接口到容器去
  5. 从地址池配置一个ip给容器
  6. 执行用户指定的程序
  7. 执行完毕后停止容器


(2)Docker run命令常用选项


Docker run启动并创建容器


选项 作用
-t 配置一个伪终端并且绑定到容器的标准输入上,一般是不加-d时使用
-i 让容器的标准输入保持打开,即保持连接,一般是不加-d时使用
-d 将容器放到后台运行
-c 指定分配容器的cpu分片,即限制cpu使用率
-m 指定分配该容器的内存大小,单位为b,k,m,g


上面的选项可以组合使用


[root@docker ~]# docker inspect 97c9165c042d       #查看容器的详细信息


(3)Docker ps命令常用选项


Docker ps查看当前正在运行的容器


选项 作用
-a 查看所以容器,包括停止的容器
-q 只显示正在运行的容器的id
-l 查看最后一次创建的容器,容器必须是开启状态,否则什么也看不到


上面的选项可以组合使用


(4)删除容器命令


docker rm id或者name    #删除指定容器,-f强制删除


二、查看Docker的基本信息


[root@docker ~]# systemctl start docker  #开启Docker
[root@docker ~]# systemctl status docker  #查看状态确认开启
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since 一 2021-07-19 11:59:55 CST; 39s ago
     Docs: https://docs.docker.com
 Main PID: 1078 (dockerd)
   Memory: 112.1M
   CGroup: /system.slice/docker.service
           └─1078 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
7月 19 11:59:54 docker dockerd[1078]: time="2021-07-19T11:59:54.982690174+08:00" level=info msg="pickfirstBalancer: HandleSubC...le=grpc
7月 19 11:59:54 docker dockerd[1078]: time="2021-07-19T11:59:54.982732061+08:00" level=info msg="pickfirstBalancer: HandleSubC...le=grpc
7月 19 11:59:55 docker dockerd[1078]: time="2021-07-19T11:59:55.020157431+08:00" level=info msg="Graph migration to content-ad...econds"
7月 19 11:59:55 docker dockerd[1078]: time="2021-07-19T11:59:55.020953607+08:00" level=info msg="Loading containers: start."
7月 19 11:59:55 docker dockerd[1078]: time="2021-07-19T11:59:55.293273747+08:00" level=info msg="Default bridge (docker0) is a...ddress"
7月 19 11:59:55 docker dockerd[1078]: time="2021-07-19T11:59:55.314828185+08:00" level=info msg="Loading containers: done."
7月 19 11:59:55 docker dockerd[1078]: time="2021-07-19T11:59:55.635367660+08:00" level=info msg="Docker daemon" commit=481bc77...18.09.6
7月 19 11:59:55 docker dockerd[1078]: time="2021-07-19T11:59:55.635500710+08:00" level=info msg="Daemon has completed initialization"
7月 19 11:59:55 docker dockerd[1078]: time="2021-07-19T11:59:55.689370706+08:00" level=info msg="API listen on /var/run/docker.sock"
7月 19 11:59:55 docker systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.
******(1)查看Docker的版本
[root@docker ~]# uname -r    #查看自己系统内核版本
3.10.0-693.el7.x86_64
[root@docker ~]# docker version   #查看Docker基本信息
Client:
 Version:           18.09.6
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        481bc77156
 Built:             Sat May  4 02:34:58 2019
 OS/Arch:           linux/amd64
 Experimental:      false
Server: Docker Engine - Community
 Engine:
  Version:          18.09.6
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       481bc77
  Built:            Sat May  4 02:02:43 2019
  OS/Arch:          linux/amd64
  Experimental:     false
  [root@docker ~]# docker info   #查看Docker基本信息
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 18.09.6
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: bb71b10fd8f58240ca47fbb579b9d1028eea7c84
runc version: 2b18fe1d885ee5083ef9f0838fee39b62d653e30
init version: fec3683
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-693.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 976.3MiB
Name: docker
ID: C2X2:P4NY:JF4I:IMPN:6WQW:FEYT:CZGL:F2NN:QKKC:UFOY:6VBN:PAVE
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Registry Mirrors:
 https://w4uieobw.mirror.aliyuncs.com/
Live Restore Enabled: false
Product License: Community Engine
[root@docker ~]# cd /etc/docker/
[root@docker docker]# ll
总用量 8
-rw-r--r-- 1 root root  68 7月  17 14:31 daemon.json   #这个文件用来设置docker参数,没有的话可以自行创建,设置完后要重启Docker
-rw------- 1 root root 244 7月  17 14:28 key.json


三、拉取镜像,创建容器


******(1)拉取镜像
[root@docker ~]# docker pull nginx  #从镜像库拉取httpd镜像,需要联网,不加版本号TAG默认就是下来latest版本
。。。。。。
完毕!
[root@docker ~]# docker images   #查看所有本地镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              4cdc5dd7eaad        12 days ago         133MB
******(2)创建容器
[root@docker ~]# docker run -d -P nginx   #创建容器,-d表示放到后台运行,-P表示使用随机端口进行映射
WARNING: IPv4 forwarding is disabled. Networking will not work.
1137042596d20aebbb9aace778fc280e81b626da3b97c92000bbd456688d49ad
[root@docker ~]# docker ps   #查看正在运行的容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
1137042596d2        nginx               "/docker-entrypoint.…"   8 seconds ago       Up 7 seconds        0.0.0.0:32768->80/tcp   cocky_heisenberg  #可以看到是本地的32768端口映射到了容器的80端口
[root@docker ~]# vim /etc/sysctl.conf    #开启路由转发
net.ipv4.ip_forward = 1
#保存退出
[root@docker ~]# sysctl -p   #使配置生效
net.ipv4.ip_forward = 1


(3)使用浏览器进行访问

cf4e0760e6b5483c83fe13bf2de9f838.png

成功访问

******(4)再次开启一台nginx容器
[root@docker ~]# docker run -d --name web -p 80:80 nginx   #--name指定名称,使用-p来指定端口映射
c850556b1a54c7fc8720bee41af0fda66a42d4e056d7d37391bbad44fe63c0fb
[root@docker ~]# docker ps -a 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
c850556b1a54        nginx               "/docker-entrypoint.…"   6 seconds ago       Up 4 seconds        0.0.0.0:80->80/tcp      web   #可以看到name为web,端口映射为80
1137042596d2        nginx               "/docker-entrypoint.…"   12 minutes ago      Up 12 minutes       0.0.0.0:32768->80/tcp   cocky_heisenberg

(5)进行测试

41742d84412e4abea8a99055a01895bb.png


******(6)开启容器在前台运行
[root@docker ~]# docker run -it --name web3 -P nginx /bin/bash  #-i保持连接,-t创建为终端,在末尾加环境如/bin/bash
root@3217e10286eb:/#    #因为加了环境/bin/bash所以进入了此环境
#复制一个终端,查看此时web3映射的端口号
[root@docker ~]# docker ps -a 
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS                   NAMES
3217e10286eb        nginx               "/docker-entrypoint.…"   About a minute ago   Up About a minute               0.0.0.0:32770->80/tcp   web3  #可以看到是32770
18563a3438e5        nginx               "/docker-entrypoint.…"   2 minutes ago        Exited (0) About a minute ago                           web2
c850556b1a54        nginx               "/docker-entrypoint.…"   7 minutes ago        Up 7 minutes                    0.0.0.0:80->80/tcp      web
1137042596d2        nginx               "/docker-entrypoint.…"   19 minutes ago       Up 18 minutes                   0.0.0.0:32768->80/tcp   cocky_heisenberg

使用浏览器进行访问,无法正常访问


4b45958c469e4eceb2137b6365736378.png

root@3217e10286eb:~# nginx
2021/07/19 04:59:50 [notice] 7#7: using the "epoll" event method
2021/07/19 04:59:50 [notice] 7#7: nginx/1.21.1
2021/07/19 04:59:50 [notice] 7#7: built by gcc 8.3.0 (Debian 8.3.0-6) 
2021/07/19 04:59:50 [notice] 7#7: OS: Linux 3.10.0-693.el7.x86_64
2021/07/19 04:59:50 [notice] 7#7: getrlimit(RLIMIT_NOFILE): 1048576:1048576
root@dfc7f004dfbb:/# 2021/07/19 04:59:50 [notice] 8#8: start worker processes
2021/07/19 04:59:50 [notice] 8#8: start worker process 9

再次进行访问,可以正常访问

3b4d3908fc8d471a8e13c483aadec050.png

^C   #中断
root@dfc7f004dfbb:/# exit  #退出
exit
******(7)删除容器
[root@docker ~]# docker ps -a    #先查看所有容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                   NAMES
dfc7f004dfbb        nginx               "/docker-entrypoint.…"   5 minutes ago       Exited (130) 31 seconds ago                           web3
18563a3438e5        nginx               "/docker-entrypoint.…"   11 minutes ago      Exited (0) 10 minutes ago                             web2
c850556b1a54        nginx               "/docker-entrypoint.…"   15 minutes ago      Up 15 minutes                 0.0.0.0:80->80/tcp      web
1137042596d2        nginx               "/docker-entrypoint.…"   27 minutes ago      Up 27 minutes                 0.0.0.0:32768->80/tcp   cocky_heisenberg
[root@docker ~]# docker rm dfc7f004dfbb  #删除时要注意容器是关闭状态,rm是删除后面输入id号,可以加-f强制删除
dfc7f004dfbb
[root@docker ~]# docker ps -a 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                   NAMES
18563a3438e5        nginx               "/docker-entrypoint.…"   11 minutes ago      Exited (0) 10 minutes ago                           web2
c850556b1a54        nginx               "/docker-entrypoint.…"   16 minutes ago      Up 16 minutes               0.0.0.0:80->80/tcp      web
1137042596d2        nginx               "/docker-entrypoint.…"   27 minutes ago      Up 27 minutes               0.0.0.0:32768->80/tcp   cocky_heisenberg
[root@docker ~]# docker rm web2  #输入后面的name也可以
web2
[root@docker ~]# docker ps -a 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
c850556b1a54        nginx               "/docker-entrypoint.…"   17 minutes ago      Up 17 minutes       0.0.0.0:80->80/tcp      web
1137042596d2        nginx               "/docker-entrypoint.…"   29 minutes ago      Up 29 minutes       0.0.0.0:32768->80/tcp   cocky_heisenberg
[root@docker ~]# docker stop c850556b1a54   #关闭容器
c850556b1a54
[root@docker ~]# docker ps -a 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                   NAMES
c850556b1a54        nginx               "/docker-entrypoint.…"   17 minutes ago      Exited (0) 1 second ago                           web
1137042596d2        nginx               "/docker-entrypoint.…"   29 minutes ago      Up 29 minutes             0.0.0.0:32768->80/tcp   cocky_heisenberg
[root@docker ~]# docker stop $(docker ps -qa )    #利用$()括起来一次性关闭
[root@docker ~]# docker ps -a 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
c850556b1a54        nginx               "/docker-entrypoint.…"   18 minutes ago      Exited (0) 17 seconds ago                       web
1137042596d2        nginx               "/docker-entrypoint.…"   30 minutes ago      Exited (0) 2 seconds ago                        cocky_heisenberg
[root@docker ~]# docker rm $(docker ps -qa)   #当然也可以用来删除
[root@docker ~]# docker ps -a    #查看所有容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

四、容器资源限制


一个docker host上会运行若干容器,每个容器都需要CPU、内存和 IO 磁盘读写资源。


对于 KVM,VMware等虚拟化技术,用户可以控制分配多少 CPU、内存资源给每个虚拟机。对于容器,Docker 也提供了类似的机制避免某个容器因占用太多资源而影响其他容器乃至整个 host 的性能。


(1)内存限制

#选项说明:
-m:允许分配的内存大小
--memory-swap:允许分配的内存和swap的总大小
--memory-swapiness:控制内存与swap置换的比例
--vm:设置内存工作线程数
--vm-byptes:设置单个内存工作线程使用的内存大小
#如果启用了--memory-swap参数,相当于使用了swap,则实际内存限制并不生效,要想限制生效,可以不启动该参数,且将--memory-swappiness置为0
测试:
[root@docker ~]# docker run -d -m 200M --memory-swappiness 0 nginx --vm 1 --vm-bytes 180M   #设置内存限制为200M,不适应swap交换内存,--vm 1开启一个进程,--vm-bytes 180M 设置每个进程的大小为180M
9f9e0fe86d72393ee9ffa691798d3ba2f49a9bc9dbf4c849dba0af3c497f4ef9
[root@docker ~]# docker ps -a   #查看所有容器,发现成功启动
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
9f9e0fe86d72        nginx               "/docker-entrypoint.…"   6 seconds ago       Exited (127) 5 seconds ago                       musing_hellman
[root@docker ~]# docker stop 9f9e0fe86d72
9f9e0fe86d72
[root@docker ~]# docker run -d -m 200M --memory-swappiness 0 nginx --vm 1 --vm-bytes 230M  #再次开启一个容器,这次进程大小为230M
19c01aaa0ba18b4240eacd582227ca7ae4ae1da8b558190c0493983cbc33fcff
[root@docker ~]# docker ps -a   #查看所有容器,发现容器直接就被停止了,这是因为内存溢出,Docker强制关闭了
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
19c01aaa0ba1        nginx               "/docker-entrypoint.…"   4 seconds ago       Exited (127) 3 seconds ago                        pedantic_mendel
9f9e0fe86d72        nginx               "/docker-entrypoint.…"   25 seconds ago      Exited (127) 24 seconds ago                       musing_hellman


(2)CPU限制


默认情况下,所有容器可以平等的使用宿主机cpu资源且没有限制。docker可以通过-c或–cpu-shares设置容器使用的cpu的权重。如果不指定,默认为1024。


与内存限额不同,通过 -c 设置的 cpu share 并不是 CPU 资源的绝对数量,而是一个相对的权重值。某个容器最终能分配到的 CPU 资源取决于它的 cpu share 占所有容器 cpu share 总和的比例。换句话说:通过cpu share可以设置容器使用CPU的优先级。

#例子
docker run --name A -c 1024 nginx
docker run --name B -c 512 nginx
A的cpu share 1024,是 B 的两倍。当两个容器都需要 CPU 资源时,A可以得到的 CPU 是B的两倍。
需要特别注意的是,这种按权重分配CPU只会发生在CPU 资源紧张的情况下。如果A 处于空闲状态,这时,为了充分利用CPU资源,B 也可以分配到全部可用的 CPU。加--cpu可以指定cpu的核数


(3)磁盘IO限制


Block IO 是另一种可以限制容器使用的资源。Block IO 指的是磁盘的读写,docker 可通过设置权重、限制 bps 和 iops 的方式控制容器读写磁盘的带宽,下面分别讨论。


需要说明的是,目前Block IO限额只对direct IO(不使用文件缓存)有效

限制bps和iops的参数说明:
--device-read-bps,限制读某个设备的 bps。
--device-write-bps,限制写某个设备的 bps。
--device-read-iops,限制读某个设备的 iops。
--device-write-iops,限制写某个设备的 iops。
bps是byte per second,每秒读写的数据量 
iops是io per second,每秒io的次数
#示例:
# 创建一个容器,限制写的bps为30M
• docker run -it --device-write-bps /dev/sda:30MB ubuntu
# 容器中,执行如下操作查看效果,然后可以通过取消限制,来查看对比效果:
• time dd if=/dev/zero of=test.out bs=1M count=800 oflag=direct

五、镜像简单管理

[root@docker ~]# docker images  #查看所有镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              4cdc5dd7eaad        12 days ago         133MB

(1)镜像命名规范


  • 无论我们对镜像做何种操作,首先它得有个名字。我们在前面使用docker run来运行容器的时候,就需要传递一个镜像名称,容器基于该镜像来运行。


一个完整的镜像名称由两部分组成:


<image name> = <repository>:[tag]    #也就是镜像名称等于镜像名+版本名


其中repository包含如下内容:


[Docker Registry地址/][项目目录/]<名称>


所以一个完整的镜像命名如下:


[Docker Registry地址/][项目目录/]<名称>:[标签]


当没指明镜像tag时,默认为latest,但latest没有任何特殊含义,在docker hub上很多repository将latest作为最新稳定版本的别名,但这只是一种约定,不是强制规定,一个repository可以有多个tag,而多个tag也可能对应同一个镜像


(2)镜像的基本操作


******拉取镜像
docker pull 镜像名称     #默认是从docker的镜像仓库中下载
******从指定位置拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.1.3
#指定仓库位置 registry.cn-hangzhou.aliyuncs.com
#路径:google_containers
#镜像名:coredns:1.1.3
******查看镜像
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              4cdc5dd7eaad        12 days ago         133MB
[root@docker ~]# docker images ls  #可以指定名称查看镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@docker ~]# docker images nginx
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              4cdc5dd7eaad        12 days ago         133MB
******获取镜像详细信息
[root@docker ~]# docker inspect nginx:latest     #镜像名需要输入镜像名称和版本名称
******修改镜像名称、标签
[root@docker ~]# docker tag nginx:latest nginx2:aaa  #前面是指定的镜像,后面是修改的名称和版本,这个修改是创建
[root@docker ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              4cdc5dd7eaad        12 days ago         133MB
nginx2              aaa                 4cdc5dd7eaad        12 days ago         133MB
******删除镜像,如果镜像有容器生成需要先删除容器再删除镜像
[root@docker ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx2              aaa                 4cdc5dd7eaad        12 days ago         133MB
nginx               latest              4cdc5dd7eaad        12 days ago         133MB
[root@docker ~]# docker rmi nginx2:aaa  #后面需要指定名称和标签,因为这里都是一个镜像,只不过名称和版本不同,但是id号是一样的,删除id号会把当前所有镜像都删除
Untagged: nginx2:aaa
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              4cdc5dd7eaad        12 days ago         133MB
******删除无标签镜像(即为none)
docker rmi $(docker images -q --filter "dangling=true")
导出和载入镜像
******将本地镜像导出
[root@docker ~]# docker save -o nginx nginx:latest  #save -o保存到当前目录下,保存为nginx,镜像为nginx:latest
[root@docker ~]# ll
总用量 134228
-rw-------. 1 root root      1264 1月  12 2021 anaconda-ks.cfg
drwxr-xr-x  3 root root      4096 7月  17 14:26 docker
-rw-------  1 root root 137441280 7月  19 14:54 nginx
******将本地文件导入镜像
[root@docker ~]# docker rmi nginx:latest   #删除原来的镜像
Untagged: nginx:latest
Deleted: sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f
Deleted: sha256:63d268dd303e176ba45c810247966ff8d1cb9a5bce4a404584087ec01c63de15
Deleted: sha256:b27eb5bbca70862681631b492735bac31d3c1c558c774aca9c0e36f1b50ba915
Deleted: sha256:435c6dad68b58885ad437e5f35f53e071213134eb9e4932b445eac7b39170700
Deleted: sha256:bdf28aff423adfe7c6cb938eced2f19a32efa9fa3922a3c5ddce584b139dc864
Deleted: sha256:2c78bcd3187437a7a5d9d8dbf555b3574ba7d143c1852860f9df0a46d5df056a
Deleted: sha256:764055ebc9a7a290b64d17cf9ea550f1099c202d83795aa967428ebdf335c9f7
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@docker ~]# docker load --input nginx   #将本地nginx镜像文件导入
764055ebc9a7: Loading layer [==================================================>]  72.53MB/72.53MB
ace9ed9bcfaf: Loading layer [==================================================>]  64.86MB/64.86MB
48b4a40de359: Loading layer [==================================================>]  3.072kB/3.072kB
c553c6ba5f13: Loading layer [==================================================>]  4.096kB/4.096kB
d97733c0a3b6: Loading layer [==================================================>]  3.584kB/3.584kB
9d1af766c818: Loading layer [==================================================>]  7.168kB/7.168kB
Loaded image: nginx:latest
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              4cdc5dd7eaad        12 days ago         133MB
******通过docker commit提交一个新镜像
[root@docker ~]# docker run -d -P nginx   #创建新容器
ebedef7466a82d8a87cbcf60464027cde5df40202b6f46164d3c1003828a2ad1
[root@docker ~]# docker ps -a 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
ebedef7466a8        nginx               "/docker-entrypoint.…"   3 seconds ago       Up 2 seconds        0.0.0.0:32780->80/tcp   sad_ritchie
[root@docker ~]# docker commit -m "newnginx" -a "rzy" -p ebedef7466a8 test  #利用新创建的容器创建test镜像
sha256:c47971dc128ac9186ebab7c2f561bcb0c26e90e982e9720ac87c1d809556e675
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test                latest              c47971dc128a        6 seconds ago       133MB
nginx               latest              4cdc5dd7eaad        12 days ago         133MB
#commit选项说明,-a和-m可以忽略不用这两个选项
-a:指定作者
-m:相关说明信息
-p:提交时暂停容器运行


目录
相关文章
|
24天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
183 77
|
6天前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
75 35
|
1月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
5天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
11天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
72 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
16天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
43 3
实战~如何组织一个多容器项目docker-compose
|
11天前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
39 4
|
26天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
81 3
|
1月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
100 7
|
1月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
40 5