IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Docker--镜像、容器相关操作 -> 正文阅读

[PHP知识库]Docker--镜像、容器相关操作

一、镜像操作

1.搜索镜像

docker search 镜像名称 
docker search 镜像名称:标签名称

在这里插入图片描述

2.下载镜像

docker pull 镜像名称
[root@localhost 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:a05b0cdd4fc1be3b224ba9662ebdf98fe44c09c0c9215b45f84344c12867002e
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

3.镜像打标签

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

4.查看镜像信息

docker inspect 镜像id
docker images -q	//查询镜像过滤ID
	q:代表过滤;只过滤容器ID
[root@localhost docker]# docker inspect 822b7ec2aaf2

在这里插入图片描述

[root@localhost docker]# docker images -q
822b7ec2aaf2
822b7ec2aaf2

5.删除镜像

docker rm  **	//删除容器ID
docker rmi 镜像ID (或者 镜像名称:标签名)
	rm i:rm image  //删除镜像
[root@localhost docker]# docker rmi 822b7ec2aaf2
Error response from daemon: conflict: unable to delete 822b7ec2aaf2 (must be forced) - image is referenced in multiple repositories
//如果想要删除该镜像,使用docker rmi 镜像名称:标签名 的方式一个一个的删除
[root@localhost docker]# docker rmi nginx:latest
Untagged: nginx:latest	//直到没有引用了,才会删除
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        lnmp      822b7ec2aaf2   33 hours ago   133MB
docker rmi nginx:lnmp		//删除nginx的lnmp标签
[root@localhost docker]# docker rmi nginx:lnmp
Untagged: nginx:lnmp
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    822b7ec2aaf2   33 hours ago   133MB

6.运行镜像

docker run 镜像名
[root@docker ~]# docker run nginx //一次性运行镜像,在执行run操作的时候,如果没有该镜像,会先下载,在start该镜像
Unable to find image 'nginx:latest' locally //在本地没有发现nginx的镜像
latest: Pulling from library/nginx //没有找到镜像,就去公共仓库下载镜像
a330b6cecb98: Pull complete 
......
2021/09/03 08:52:57 [notice] 1#1: exit //这里执行的是 CTRL+C

[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    822b7ec2aaf2   33 hours ago   133MB
nginx        lnmp      822b7ec2aaf2   33 hours ago   133MB

7.镜像的导出、导入

docker save -o 文件名镜像名	//导出到本地
docker load < 文件名镜像名	//导入镜像

导出

[root@localhost docker]# docker save -o nginx:latest nginx:latest
[root@localhost docker]# ls
daemon.json  key.json  nginx:latest

导入

[root@localhost docker]# docker load < nginx\:latest 
Loaded image: nginx:latest

使用场景,有的生产环境,企业不直接使用docker 私有仓库,而是存放在一个ftp服务器中,按需上传下载。
scp hello-world root@192.168.35.10:/opt ##传到其他docker的内容

二、容器操作

1.查看所有容器(包括非启动状态的容器)

docker ps -a		//显示所有的容器,包括未运行的
	a:all;全部
docker ps -aq		//查询容器的id
	q:代表过滤;只过滤容器ID
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
de9a0588ca0b   822b7ec2aaf2   "/docker-entrypoint.…"   23 minutes ago   Exited (0) 21 minutes ago             quizzical_volhard
2ee799de4e0c   nginx          "/docker-entrypoint.…"   24 minutes ago   Exited (0) 23 minutes ago             admiring_germain
9cc37e301d66   nginx          "/docker-entrypoint.…"   26 minutes ago   Exited (0) 25 minutes ago             sharp_ritchie

2.删除容器

docker rm 容器ID		##删除容器
docker rm -f 容器ID		##强制删除容器(正在运行的容器)
docker ps -a | awk '{print "docker rm " $1'} | bash		##批量删除容器(正则匹配);$1:是容器的id
for i in `docker ps -a | grep -i exit | awk '{print$1}'`; do docker rm -f $i;done	##批量删除"exit"状态(指定状态)的容器
docker rm -f `docker ps -q`		##强制批量删除非up状态的容器;不建议使用,若需要删除删选出id进行删除
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                       PORTS     NAMES
177891c75c4b   nginx:latest   "/docker-entrypoint.…"   4 minutes ago   Up 4 minutes                 80/tcp    eager_tharp
075c017bdb40   nginx:latest   "/docker-entrypoint.…"   4 minutes ago   Exited (127) 4 minutes ago             loving_lewin

[root@localhost ~]# docker rm 075c017bdb40
075c017bdb40

强制删除

[root@localhost ~]# docker rm -f 177891c75c4b
177891c75c4b

3.启动运行容器

1. 使容器开启并持续性运行

创建容器
	docker create -it nginx:latest /bin/bash
		-i:让容器的标准输入保持打开
		-t:分配一个伪终端
		-d:后台守护进程的方式运行
启动容器
	docker start 容器id
[root@localhost docker]# docker create -it nginx:latest /bin/bash
b2ebf19d65ac6562fdefa67c68fbce0f2f9f5832e7c337dccd3836cf06443b84
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
b2ebf19d65ac   nginx:latest   "/docker-entrypoint.…"   24 seconds ago   Created(创建状态)                               eloquent_mccarthy
[root@localhost docker]# docker start b2ebf19d65ac	//启动镜像
b2ebf19d65ac
[root@localhost docker]# docker ps -a	
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
b2ebf19d65ac   nginx:latest   "/docker-entrypoint.…"   2 minutes ago    Up 15 seconds               80/tcp    eloquent_mccarthy

2. 启动一次性运行容器

持续性运行浪费资源,那么一次性执行如下操作:

docker run centos:7 /usr/bin/bash -c ls /
	-c:传递命令参数
[root@localhost docker]# docker run centos:7 /usr/bin/bash -c ls /
Unable to find image 'centos:7' locally
7: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:7
anaconda-post.log
bin
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
ac0d0db77d6b   centos:7       "/usr/bin/bash -c ls…"   42 seconds ago   Exited (0) 41 seconds ago             frosty_darwin

3.容器的开启、关闭

docker start 容器id
docker stop 容器id

4. 持续后台运行

docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello; done"	##后台运行centos:7的容器
	while true;do echo hello; done:代表给予一个死循环
[root@localhost docker]# docker run -d centos:7 /usr/bin/bash -c "while turn;do echo hello; done"
c7858bb06fa80ecf09b820c20c971820f1ec68a90d40b0cb54376061f1bb0e43
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
c7858bb06fa8   centos:7       "/usr/bin/bash -c 'w…"   29 seconds ago   Exited (0) 28 seconds ago             tender_zhukovsky
ac0d0db77d6b   centos:7       "/usr/bin/bash -c ls…"   2 minutes ago    Exited (0) 2 minutes ago              frosty_darwin

4.进入/退出容器

1.进入容器

run

docker run -it centos:7 /bin/bash

进入容器没有systemctl
命令解决:添加–privileged=true;指定此容器是否为特权容器,使用此参数,则不能用attach

[root@localhost docker]# docker run -it centos:7 /bin/bash
[root@1b89f40baa26 /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
[root@1b89f40baa26 /]# exit
exit
[root@localhost docker]# docker ps -a	//查询容器是否开启
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS                        PORTS     NAMES
1b89f40baa26   centos:7       "/bin/bash"              About a minute ago   Exited (127) 20 seconds ago             goofy_joliot
c7858bb06fa8   centos:7       "/usr/bin/bash -c 'w…"   9 minutes ago        Exited (0) 9 minutes ago                tender_zhukovsky
ac0d0db77d6b   centos:7       "/usr/bin/bash -c ls…"   11 minutes ago       Exited (0) 11 minutes ago               frosty_darwin

exec

docker exec -it 容器ID /bin/bash		//进入容器(容器必须是运行状态)
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                       PORTS     NAMES
837a4c69cd81   centos:7       "/bin/bash"              21 seconds ago   Up 20 seconds                          heuristic_almeida
[root@localhost ~]# docker exec -it 837a4c69cd81 /bin/bash
[root@837a4c69cd81 /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
[root@837a4c69cd81 /]# yum -y install httpd		//随便安装一个服务
[root@6acc38b198d6 /]# systemctl start httpd
[root@837a4c69cd81 /]# systemctl status httpd		//使用systemctl命令查询服务
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: d
   Active: active (running) since Sun 2021-09-05 02:43:18 UTC; 2s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 175 (httpd)
   Status: "Processing requests..."
   CGroup: /docker/6acc38b198d60a8e841ab6dd25eeca9c422fe5ce811f9984fb5d1a2e3ca5b239/
           ├─175 /usr/sbin/httpd -DFOREGROUND
           ├─176 /usr/sbin/httpd -DFOREGROUND
           ├─177 /usr/sbin/httpd -DFOREGROUND
           ├─178 /usr/sbin/httpd -DFOREGROUND
           ├─179 /usr/sbin/httpd -DFOREGROUND
           └─180 /usr/sbin/httpd -DFOREGROUND
           ? 175 /usr/sbin/httpd -DFOREGROUND

Sep 05 02:43:18 6acc38b198d6 systemd[1]: Starting The Apache HTTP Server...
Sep 05 02:43:18 6acc38b198d6 httpd[175]: AH00558: httpd: Could not reliably determin
Sep 05 02:43:18 6acc38b198d6 systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

注意点:

在进入centos容器时,systemctl命令用不了。
使用 systemctl start 启动某个服务可能会出现如下错误 :
Failed to get D-Bus connection: Operation not permitted
需要给容器提权添加 --privileged=true参数,并将 cmd 或者 entrypoint 设置为 /usr/sbin/init

[root@localhost ~]# docker run -itd --name centos7-v3 --privileged=true centos:7 /sbin/init
6acc38b198d60a8e841ab6dd25eeca9c422fe5ce811f9984fb5d1a2e3ca5b239

弄好之后进入centos容器就可以使用systemctl命令操作了

2. 退出容器

ctrl+d 或者 exit

5.容器导出、导入

容器导出

docker export 容器ID >文件名
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                        PORTS     NAMES
e1965c614d66   centos:7       "/bin/bash"              2 minutes ago   Exited (0) 2 minutes ago                compassionate_maxwell
6acc38b198d6   centos:7       "/sbin/init"             3 hours ago     Exited (137) 5 minutes ago              centos7-v3
[root@localhost docker]# docker export e1965c614d66 > centos7
[root@localhost docker]# ls
centos7  daemon.json  key.json

容器导入
容器导入(生成镜像)2种方式

docker import 导出的文件名(容器) 指定镜像名称(打上标签)
[root@localhost docker]# docker import centos7 centos7:new
sha256:c18a7e8988bf2ecdc22702f4381a623f324672c468db112da9fe16a238e89b63
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos7      new       c18a7e8988bf   32 seconds ago   204MB
php          latest    1ecee270c294   37 hours ago     480MB
nginx        latest    822b7ec2aaf2   47 hours ago     133MB
centos       7         8652b9f0cb4c   9 months ago     204MB
cat 文件名(容器) | docker import - hello-world:latest
[root@localhost ~]# cat ng | docker import - nginx1:new
sha256:826ee37d5806c05de24d45f2410941ce74fc3c04007d4006b431d40d30a9724a
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx1       new       826ee37d5806   10 seconds ago   132MB
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 10:56:57  更:2021-09-06 10:57:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 13:05:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码