其他分享
首页 > 其他分享> > Docker 镜像、容器操作--小试牛刀

Docker 镜像、容器操作--小试牛刀

作者:互联网

文章目录

一、镜像操作

1.1 搜索镜像

docker search 镜像名称 
docker search 镜像名称:标签名称
[root@docker ~]# docker search nginx
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                             Official build of Nginx.                        15404     [OK]       
jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   2063                 [OK]
richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   816                  [OK]
jc21/nginx-proxy-manager          Docker container for managing Nginx proxy ho…   240                  
linuxserver/nginx                 An Nginx container, brought to you by LinuxS…   152                  
tiangolo/nginx-rtmp               Docker image with Nginx using the nginx-rtmp…   140                  [OK]
jlesage/nginx-proxy-manager       Docker container for Nginx Proxy Manager        135                  [OK]
alfg/nginx-rtmp                   NGINX, nginx-rtmp-module and FFmpeg from sou…   106                  [OK]
jasonrivers/nginx-rtmp            Docker images to host RTMP streams using NGI…   92                   [OK]
nginxdemos/hello                  NGINX webserver that serves a simple page co…   72                   [OK]
privatebin/nginx-fpm-alpine       PrivateBin running on an Nginx, php-fpm & Al…   56                   [OK]
nginx/nginx-ingress               NGINX and  NGINX Plus Ingress Controllers fo…   55                   
nginxinc/nginx-unprivileged       Unprivileged NGINX Dockerfiles                  47                   
staticfloat/nginx-certbot         Opinionated setup for automatic TLS certs lo…   24                   [OK]
nginx/nginx-prometheus-exporter   NGINX Prometheus Exporter for NGINX and NGIN…   19                   
schmunk42/nginx-redirect          A very simple container to redirect HTTP tra…   19                   [OK]
nginxproxy/nginx-proxy            Automated Nginx reverse proxy for docker con…   19                   
centos/nginx-112-centos7          Platform for running nginx 1.12 or building …   15                   
centos/nginx-18-centos7           Platform for running nginx 1.8 or building n…   13                   
raulr/nginx-wordpress             Nginx front-end for the official wordpress:f…   13                   [OK]
flashspys/nginx-static            Super Lightweight Nginx Image                   10                   [OK]
mailu/nginx                       Mailu nginx frontend                            9                    [OK]
sophos/nginx-vts-exporter         Simple server that scrapes Nginx vts stats a…   7                    [OK]
ansibleplaybookbundle/nginx-apb   An APB to deploy NGINX                          2                    [OK]
wodby/nginx                       Generic nginx                                   1                    [OK]
[root@docker ~]# 

1.2 下载镜像

docker pull 镜像名称
[root@docker ~]# docker pull nginx
Using default tag: latest //如果下载时不指定标签,会默认下载最新的镜像,latest表示最新
latest: Pulling from library/nginx
a330b6cecb98: Pull complete 
5ef80e6f29b5: Pull complete 
f699b0db74e3: Pull complete 
0f701a34c55e: Pull complete 
3229dce7b89c: Pull complete 
ddb78cb2d047: Pull complete 
Digest: sha256:c442ff5a3d9f6dc92dd8aee388ece42d965e002805e3edaaff34e79d8ee6d0a4
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@docker ~]# 

1.3 镜像打标签

docker tag 镜像名称:旧标签名 镜像名称:新标签名
[root@docker ~]# docker images  //查看镜像列表
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        latest    822b7ec2aaf2   54 minutes ago   133MB
[root@docker ~]# docker tag nginx:latest nginx:lnmp
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        latest    822b7ec2aaf2   55 minutes ago   133MB
nginx        lnmp      822b7ec2aaf2   55 minutes ago   133MB
[root@docker ~]# 

1.4 查看镜像信息

docker inspect 镜像id
[root@docker ~]# docker inspect 822b7ec2aaf2
[
    {
        "Id": "sha256:822b7ec2aaf2122b8f80f9c7f45ca62ea3379bf33af4e042b67aafbf6eac1941",
        "RepoTags": [
            "nginx:latest"
        ],
        "RepoDigests": [],
        "Parent": "",
        "Comment": "",
        "Created": "2021-09-03T07:40:16.355730864Z",
        "Container": "367d32086ac12447d36e75c9b7acbe1b5156a34a91370b9200e68783be75506c",
        "ContainerConfig": {
            "Hostname": "367d32086ac1",
            "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.21.1",
                "NJS_VERSION=0.6.1",
                "PKG_RELEASE=1~buster"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"nginx\" \"-g\" \"daemon off;\"]"
            ],
......省略部分内容
[root@docker ~]# 

1.5 删除镜像

docker rmi 镜像ID 或者 镜像名称:标签名
[root@docker ~]# docker rmi 822b7ec2aaf2
Error response from daemon: conflict: unable to delete 822b7ec2aaf2 (must be forced) - image is referenced in multiple repositories  //错误信息说:冲突:无法删除822b7ec2aaf2(必须强制)-映像在多个存储库中被引用
//如果想要删除该镜像,使用docker rmi 镜像名称:标签名 的方式一个一个的删除
[root@docker ~]# 
[root@docker ~]# docker rmi nginx:lnmp
Untagged: nginx:lnmp
[root@docker ~]# docker rmi nginx:latest 
Untagged: nginx:latest //直到没有引用了,才会删除
Untagged: nginx@sha256:c442ff5a3d9f6dc92dd8aee388ece42d965e002805e3edaaff34e79d8ee6d0a4
Deleted: sha256:822b7ec2aaf2122b8f80f9c7f45ca62ea3379bf33af4e042b67aafbf6eac1941
Deleted: sha256:47dec9bde9e483e6265a6f52ab1e726724927e2e9d2ac358fdf58fbfcd6cf418
Deleted: sha256:7920a27f48f198550d59f64681b99441bbc3d2ce4778a855ce1ef9bafc96ae69
Deleted: sha256:a3c5a94eb1ea071c73dcea1969e0b71beea445d3b9d0735eaf6715d8e351434c
Deleted: sha256:e73eb58ed241e67a7a2c8589dde85eb72811eac1eb4cf3b586e40d2b9cc9d0c1
Deleted: sha256:b5d976dc9b0fa380affe1f6a17df18f02ab7debec2d35a0407fb863338591ed7
Deleted: sha256:d000633a56813933cb0ac5ee3246cf7a4c0205db6290018a169d7cb096581046
[root@docker ~]# 

1.6 运行镜像

[root@docker ~]# docker run nginx //一次性运行镜像,在执行run操作的时候,如果没有该镜像,会先下载,在start该镜像
Unable to find image 'nginx:latest' locally //在本地没有发现nginx的镜像
latest: Pulling from library/nginx //没有找到镜像,就去公共仓库下载镜像
a330b6cecb98: Pull complete 
5ef80e6f29b5: Pull complete 
f699b0db74e3: Pull complete 
0f701a34c55e: Pull complete 
3229dce7b89c: Pull complete 
ddb78cb2d047: Pull complete 
Digest: sha256:c442ff5a3d9f6dc92dd8aee388ece42d965e002805e3edaaff34e79d8ee6d0a4
Status: Downloaded newer image for nginx:latest //下载完成
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2021/09/03 08:52:50 [notice] 1#1: using the "epoll" event method
2021/09/03 08:52:50 [notice] 1#1: nginx/1.21.1
2021/09/03 08:52:50 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 
2021/09/03 08:52:50 [notice] 1#1: OS: Linux 3.10.0-957.el7.x86_64
2021/09/03 08:52:50 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
......省略部分内容
2021/09/03 08:52:57 [notice] 1#1: exit //这里执行的是 CTRL+C
[root@docker ~]#

1.7 镜像的导出、导入

[root@docker ~]# docker save -o nginx:latest nginx:latest  //导出镜像
//导出镜像 第一个nginx:latest 表示的导出镜像以后指定的镜像文件名
//导出镜像 第二个nginx:latest 表示的导出哪个镜像
[root@docker ~]# ls           
anaconda-ks.cfg  initial-setup-ks.cfg  nginx:latest  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@docker ~]# 
[root@docker ~]# docker rmi 822b7ec2aaf2 //删除镜像
Untagged: nginx:latest
Untagged: nginx@sha256:c442ff5a3d9f6dc92dd8aee388ece42d965e002805e3edaaff34e79d8ee6d0a4
Deleted: sha256:822b7ec2aaf2122b8f80f9c7f45ca62ea3379bf33af4e042b67aafbf6eac1941
Deleted: sha256:47dec9bde9e483e6265a6f52ab1e726724927e2e9d2ac358fdf58fbfcd6cf418
Deleted: sha256:7920a27f48f198550d59f64681b99441bbc3d2ce4778a855ce1ef9bafc96ae69
Deleted: sha256:a3c5a94eb1ea071c73dcea1969e0b71beea445d3b9d0735eaf6715d8e351434c
Deleted: sha256:e73eb58ed241e67a7a2c8589dde85eb72811eac1eb4cf3b586e40d2b9cc9d0c1
Deleted: sha256:b5d976dc9b0fa380affe1f6a17df18f02ab7debec2d35a0407fb863338591ed7
Deleted: sha256:d000633a56813933cb0ac5ee3246cf7a4c0205db6290018a169d7cb096581046
[root@docker ~]# docker load < nginx\:latest 导入刚刚导出的镜像
d000633a5681: Loading layer [==================================================>]  72.53MB/72.53MB
63b5f2c0d071: Loading layer [==================================================>]  64.86MB/64.86MB
875b5b50454b: Loading layer [==================================================>]  3.072kB/3.072kB
ed94af62a494: Loading layer [==================================================>]  4.096kB/4.096kB
8e58314e4a4f: Loading layer [==================================================>]  3.584kB/3.584kB
d47e4d19ddec: Loading layer [==================================================>]  7.168kB/7.168kB
Loaded image: nginx:latest
[root@docker ~]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    822b7ec2aaf2   20 hours ago   133MB
[root@docker ~]# 

二、容器操作

2.1 查看所有容器,包括不是启动状态的容器

[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                     PORTS     NAMES
a4c42a696a49   nginx     "/docker-entrypoint.…"   4 minutes ago   Exited (0) 4 minutes ago             naughty_swanson
[root@docker ~]# 

2.2 查看所有容器的id

[root@docker ~]# docker ps -aq
a4c42a696a49
[root@docker ~]# 

2.3 使容器开启并持续性运行

①:创建容器
docker create -it nginx:latest /bin/bash
-i:让容器的标准输入保持打开
-t:分配一个伪终端
-d:后台守护进程的方式运行
②:启动容器
docker start 容器id

[root@docker ~]# docker create -it nginx:latest /bin/bash
9ba3b6ffd7bf4e2587f415a203f6064432efc331335b0c9519278789a473dff6
[root@docker ~]# docker ps -a //容器id为:9ba3b6ffd7bf 状态为:已创建
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                     PORTS     NAMES
9ba3b6ffd7bf   nginx:latest   "/docker-entrypoint.…"   9 seconds ago   Created                              romantic_banzai
a4c42a696a49   nginx          "/docker-entrypoint.…"   6 minutes ago   Exited (0) 5 minutes ago             romantic_stonebraker
[root@docker ~]# 
[root@docker ~]# docker start 9ba3b6ffd7bf 
9ba3b6ffd7bf
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
9ba3b6ffd7bf   nginx:latest   "/docker-entrypoint.…"   12 minutes ago   Up About a minute           80/tcp    romantic_banzai
a4c42a696a49   nginx          "/docker-entrypoint.…"   18 minutes ago   Exited (0) 17 minutes ago             romantic_stonebraker
[root@docker ~]#
有的时候持续性运行浪费资源,那么一次性执行如下操作
/usr/bin/bash 表示指定镜像运行的环境
-c 表示指定执行什么命令
[root@docker ~]# docker run centos:7 /usr/bin/bash -c ls /
anaconda-post.log
bin
dev
etc
home
lib
......省略部分内容
[root@docker ~]# docker ps -a //可以看出运行centos:7镜像,执行了ls操作之后就退出了
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
0f84d97ae586   centos:7       "/usr/bin/bash -c ls…"   32 seconds ago   Exited (0) 31 seconds ago             affectionate_bassi
9ba3b6ffd7bf   nginx:latest   "/docker-entrypoint.…"   15 minutes ago   Up 5 minutes                80/tcp    romantic_banzai
a4c42a696a49   nginx          "/docker-entrypoint.…"   21 minutes ago   Exited (0) 21 minutes ago             romantic_stonebraker
[root@docker ~]# 

2.4 容器的开启、关闭

docker start 容器id
docker stop 容器id

2.5 容器持续后台运行

docker run -d centos:7 /usr/bin/bash -c “while true;do echo hello; done”
-d 表示后台守护进程的方式运行
-c “while true;do echo hello; done” 做了一个死循环,模拟服务持续运行

[root@docker ~]# docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello; done"
c589495b247136e38713f72e81745bdddcd65df7e08311e22215da8354b5f38f
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
c589495b2471   centos:7       "/usr/bin/bash -c 'w…"   32 seconds ago   Up 32 seconds                         kind_wilbur
0f84d97ae586   centos:7       "/usr/bin/bash -c ls…"   13 minutes ago   Exited (0) 13 minutes ago             affectionate_bassi
9ba3b6ffd7bf   nginx:latest   "/docker-entrypoint.…"   28 minutes ago   Up 17 minutes               80/tcp    romantic_banzai
a4c42a696a49   nginx          "/docker-entrypoint.…"   34 minutes ago   Exited (0) 34 minutes ago             romantic_stonebraker
[root@docker ~]# 

2.6 进入容器

①docker run
②docker exec (容器必须是运行状态)

[root@docker ~]# docker run -it centos:7 /bin/bash
[root@795bf77b9a5c /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@795bf77b9a5c /]# exit  //这里使用的是 ctrl + d 组合快捷键退出容器
[root@docker ~]# 
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                            PORTS     NAMES
795bf77b9a5c   centos:7       "/bin/bash"              2 minutes ago    Exited (127) About a minute ago             happy_wozniak
c589495b2471   centos:7       "/usr/bin/bash -c 'w…"   9 minutes ago    Up 9 minutes                                kind_wilbur
0f84d97ae586   centos:7       "/usr/bin/bash -c ls…"   22 minutes ago   Exited (0) 22 minutes ago                   affectionate_bassi
9ba3b6ffd7bf   nginx:latest   "/docker-entrypoint.…"   37 minutes ago   Up 26 minutes                     80/tcp    romantic_banzai
a4c42a696a49   nginx          "/docker-entrypoint.…"   43 minutes ago   Exited (0) 42 minutes ago                   romantic_stonebraker
[root@docker ~]# docker exec -it c589495b2471 /bin/bash
[root@c589495b2471 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@c589495b2471 /]# exit //这里是手动输入 exit 退出容器
exit
[root@docker ~]# 

2.7 容器导出、导入

导出:docker export 容器id > 指定导出的容器文件名
导入(两种方式):
① docker import 导出的文件名 指定镜像名称:指定标签名称
② cat 导出的容器文件名 | docker import - 指定镜像名称:指定标签名称

[root@docker ~]# docker export c589495b2471 > centos7_01
[root@docker ~]# ls
anaconda-ks.cfg  centos7_01  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    822b7ec2aaf2   22 hours ago   133MB
centos       7         8652b9f0cb4c   9 months ago   204MB
[root@docker ~]# docker rm -f `docker ps -aq` //强制删除所有容器,这里为了演示容器的导出导入所以这样做,生产环境杜绝使用
795bf77b9a5c
c589495b2471
0f84d97ae586
9ba3b6ffd7bf
a4c42a696a49
[root@docker ~]# docker rmi 8652b9f0cb4c //删除centos:7的镜像文件
Untagged: centos:7
Untagged: centos@sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Deleted: sha256:8652b9f0cb4c0599575e5a003f5906876e10c1ceb2ab9fe1786712dac14a50cf
Deleted: sha256:174f5685490326fc0a1c0f5570b8663732189b327007e47ff13d2ca59673db02
[root@docker ~]# docker import centos7_01 centos:7 //导入容器并生成镜像文件,centos:7表示指定的镜像文件名:标签名
sha256:45836fbbddb2c92905b73daf22b56b8b3b3c855d8e2dd4f080937ad47c164b70
[root@docker ~]# docker images //查看是否导入成功
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       7         45836fbbddb2   8 seconds ago   204MB
nginx        latest    822b7ec2aaf2   22 hours ago    133MB
[root@docker ~]# cat centos7_01 | docker import - centos:latest //另一种导入容器的方式
sha256:dda2c24c44187be74f4d690ad1833a58e3cc643c24a8d1288ccfd74b618a3647
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       latest    dda2c24c4418   5 seconds ago   204MB
centos       7         45836fbbddb2   4 minutes ago   204MB
nginx        latest    822b7ec2aaf2   22 hours ago    133MB
[root@docker ~]# 

标签:ago,--,小试牛刀,nginx,镜像,docker,root,Docker,latest
来源: https://blog.csdn.net/qq_35479765/article/details/120081431