docker基础命令(代码片段)

遙遙背影暖暖流星 遙遙背影暖暖流星     2022-12-29     591

关键词:

一、docker命令-镜像

1、查看docker版本

docker -v 
docker version 
decker info  #可以查看所有运行容器的镜像数量,运行容器的版本,可以分配的CPU,总的内存等信息.docker的工作目录 /var/lib/decker

[root@ct ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.8     #版本
 API version:       1.41        #api版本
 Go version:        go1.16.6    #go语言版本
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:55:49 2021
 OS/Arch:           linux/amd64
 Context:           default     #映射默认    
 Experimental:      true        #实验功能开启

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8   #暂存区里的改动给提交到本地的版本库的id
  Built:            Fri Jul 30 19:54:13 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
[root@ct ~]#

2、搜索镜像

docker search nginx 
——》自己制作镜像,然后上传到docker hub 上
优化:有效减少镜像大小,dockerfile 优化方向

也可以直接上官网:

https://hub.docker.com/ 》搜nginx》第一个官方分布》tag》找到目的版本的编号
然后抓取下载docker pull nginx:1.21.0

3 、下载镜像

默认是从docker hub

docker pull 镜像名称
例如:docker pull nginx  #不交标签则默认latest,最新版本

4、查看镜像列表

docker images   #查看当前docker下的下载镜像信息
[root@ct ~]# docker images
REPOSITORY    TAG              IMAGE ID       CREATED       SIZE
#镜像仓库       #标签             #镜像id       #建立时间      #大小
redis         6.2-alpine3.14   f6f2296798e9   3 days ago     32.3MB
redis         v1               f6f2296798e9   3 days ago     32.3MB
busybox       latest           42b97d3c2ae9   10 days ago    1.24MB
nginx         1.21             dd34e67e3371   13 days ago    133MB    #
nginx         v1               dd34e67e3371   13 days ago    133MB 
#根据image id,发现与上面的其实是同个镜像,只是标签不同  
hello-world   latest           d1165f221234   5 months ago   13.3kB
centos        7                8652b9f0cb4c   9 months ago   204MB
[root@ct ~]# docker images  redis:v1        #单独看一个镜像,REPOSITORY+TAG为一个镜像(唯一性),而tag可以人为指定的
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
redis        v1        f6f2296798e9   3 days ago   32.3MB

5 获取镜像信息

docker inspect  镜像ID (或者镜像:标签)      

docker inspect redis:
[root@ct ~]# docker inspect nginx:1.21
[
    
        "Id": "sha256:dd34e67e3371dc2d1328790c3157ee42dfcae74afffd86b297459ed87a98c0fb",
        "RepoTags": [
            "nginx:1.21",
            "nginx:v1"
        ],
        "RepoDigests": [
            "nginx@sha256:4d4d96ac750af48c6a551d757c1cbfc071692309b491b70b2b8976e102dd3fef"
        ],
        "Parent": "",
....................
[root@ct ~]# docker inspect dd34e67e3371
[
    
        "Id": "sha256:dd34e67e3371dc2d1328790c3157ee42dfcae74afffd86b297459ed87a98c0fb",
        "RepoTags": [
            "nginx:1.21",  #镜像的其他名有两个
            "nginx:v1"      #另一个镜像名
        ],
        "RepoDigests": [
            "nginx@sha256:4d4d96ac750af48c6a551d757c1cbfc071692309b491b70b2b8976e102dd3fef"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2021-08-17T11:46:11.370722453Z",
        "Container": "c8f4640bdac21c018ff68bfb015ab66f87de0ed066b73eb6607a832a8abf3581",
        "ContainerConfig": 
            "Hostname": "c8f4640bdac2",


6 、添加镜像标签

docker tag 软件名:旧标签  软件名:新标签 
[root@ct ~]# docker tag nginx:1.21 nginx:lnmp
[root@ct ~]# docker images
REPOSITORY    TAG              IMAGE ID       CREATED        SIZE
redis         6.2-alpine3.14   f6f2296798e9   3 days ago     32.3MB
redis         v1               f6f2296798e9   3 days ago     32.3MB
busybox       latest           42b97d3c2ae9   10 days ago    1.24MB
nginx         1.21             dd34e67e3371   13 days ago    133MB
nginx         lnmp             dd34e67e3371   13 days ago    133MB
#旧的镜像不会消失,新改的镜像名虽然不同,但id不变
nginx         v1               dd34e67e3371   13 days ago    133MB
hello-world   latest           d1165f221234   5 months ago   13.3kB
centos        7                8652b9f0cb4c   9 months ago   204MB

7、 删除镜像

docker rmi    镜像:标签
docker rmi  `docker images -q`  #-q 列出镜像ID,批量删
docker rmi -f 镜像:标签  #强制删除

8、镜像导出和导入

docker save -o  文件名  镜像名   #导出生成文件
docker load < 文件名    #重新导入镜像   

docker save -o centos-7 centos:7  #导出生成文件centos-7
docker load <centos-7      #导出文件centos-7
[root@ct ~]# cd /opt/
[root@ct opt]# ls
containerd  mysql-5.7.20  mysql-boost-5.7.20.tar.gz
[root@ct opt]# docker save -o centos-7 centos:7   #生成镜像文件
[root@ct opt]# ls
centos-7  containerd  mysql-5.7.20  mysql-boost-5.7.20.tar.gz

[root@ct opt]# docker rmi -f centos:7   #删除原有镜像
Untagged: centos:7
Untagged: centos@sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Deleted: sha256:8652b9f0cb4c0599575e5a003f5906876e10c1ceb2ab9fe1786712dac14a50cf

[root@ct opt]# docker images
REPOSITORY    TAG              IMAGE ID       CREATED        SIZE
redis         6.2-alpine3.14   f6f2296798e9   3 days ago     32.3MB
busybox       latest           42b97d3c2ae9   10 days ago    1.24MB
nginx         1.21             dd34e67e3371   13 days ago    133MB
nginx         lnmp             dd34e67e3371   13 days ago    133MB
hello-world   latest           d1165f221234   5 months ago   13.3kB
#没有centos这个镜像了
[root@ct opt]# docker load<centos-7
Loaded image: centos:7
[root@ct opt]# docker images
REPOSITORY    TAG              IMAGE ID       CREATED        SIZE
redis         6.2-alpine3.14   f6f2296798e9   3 days ago     32.3MB
busybox       latest           42b97d3c2ae9   10 days ago    1.24MB
nginx         1.21             dd34e67e3371   13 days ago    133MB
nginx         lnmp             dd34e67e3371   13 days ago    133MB
hello-world   latest           d1165f221234   5 months ago   13.3kB
centos        7                8652b9f0cb4c   9 months ago   204MB
#重新生成


二、docker命令—容器操作

1、 查询容器

docker ps -a   #显示主机上的容器及其状态
docker ps -aq  #显示容器的ip
[root@ct ~]# docker ps -a
CONTAINER ID   IMAGE                  COMMAND                  CREATED        STATUS                      PORTS      NAMES
57f77cf81738   centos:7               "/bin/bash"              30 hours ago   Exited (137) 25 hours ago              mystifying_buck
1ce04b9f9cad   f6f2296798e9           "docker-entrypoint.s…"   2 days ago     Up 2 days                   6379/tcp   nervous_dirac
914b1af0ecb0   redis:6.2-alpine3.14   "docker-entrypoint.s…"   2 days ago     Up 2 days                   6379/tcp   raide1
886cd3d8c81e   nginx:1.21             "/docker-entrypoint.…"   2 days ago     Up 2 days                   80/tcp     socker1


CONTAINER ID:容器ID
IMAGE:镜像版本
CRATED:创建的时间
STATUS:运行的时间
PORTS:暴露的端口
NAMES:名称(可定义)

2、创建容器

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

3、 启动容器

docker start  容器id
docker run centos:7 /usr/bin/bash -c ls /
启动容器(一次性执行)

docker run -itd centos:7 /bin/bash/
#在后台持续进行

4、停止容器

docker stop  容器ID
#状态码0:正常退出,非0值表示非正常退出,137表示主动停止退出
[root@ct ~]# docker stop 57f77cf81738
57f77cf81738

5 、容器持续后台运行

[root@ct ~]# docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
418050aa42b7e7c182eb484cb9b80519c708c0638d65c9add6ebfc016ce00633
[root@docker ~]# watch -n 2 docker ps -a    #每两秒执行
[root@docker ~]# docker rm `docker ps -aq`    #不会删除正在运行的

6 、进入容器

使用run
docker run -it nginx:latest /bin/bash         #一次性的,退出则关闭
exec(容器必须为开启状态)
docker exec -it  容器ID /bin/bash

PS:
docker run -it 会创建前台进程,但是会在输入exit后终止进程。
docker attach  会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止进程.
docker exec -it 会连接到容器,可以像SSH一样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行。

[root@ct ~]# docker ps -a
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS      NAMES
e86cc40e5351   centos:7               "/bin/bash"              3 seconds ago   Up 2 seconds              great_golick
1ce04b9f9cad   f6f2296798e9           "docker-entrypoint.s…"   2 days ago      Up 2 days      6379/tcp   nervous_dirac
914b1af0ecb0   redis:6.2-alpine3.14   "docker-entrypoint.s…"   2 days ago      Up 2 days      6379/tcp   raide1
886cd3d8c81e   nginx:1.21             "/docker-entrypoint.…"   2 days ago      Up 2 days      80/tcp     socker1
[root@ct ~]# docker exec -it e86cc40e5351   /bin/bash
[root@e86cc40e5351 /]# ls    #centos的容器中也有虚拟文件
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
[root@e86cc40e5351 /]# exit     #退出
exit


7、 容器导出与导入

docker export    容器ID   >   文件名       #导出
docker import  导出的文件名(容器)  指定镜像名称    #导入容器文件,重新生成镜像
[root@ct ~]# docker ps -a
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS      NAMES
e86cc40e5351   centos:7               "/bin/bash"              5 minutes ago   Up 5 minutes              great_golick
1ce04b9f9cad   f6f2296798e9           "docker-entrypoint.s…"   2 days ago      Up 2 days      6379/tcp   nervous_dirac
914b1af0ecb0   redis:6.2-alpine3.14   "docker-entrypoint.s…"   2 days ago      Up 2 days      6379/tcp   raide1
886cd3d8c81e   nginx:1.21             "/docker-entrypoint.…"   2 days ago      Up 2 days      80/tcp     socker1
[root@ct ~]# cd /opt/

[root@ct opt]# docker export 886cd3d8c81e > nginx-1.21    #生成文件
[root@ct opt]# ls
 nginx-1.21

[root@ct opt]# docker stop  886cd3d8c81e   #停止容器并删除容器
886cd3d8c81e
[root@ct opt]# docker rm  886cd3d8c81e
886cd3d8c81e
[root@ct opt]# docker rmi nginx:1.21    #删除镜像
Untagged: nginx:1.21
Deleted: sha256:0b4bf752f838f3b775546fd465d4afa64dd04ccb9e6ebca10ada8a10aeefef42
Deleted: sha256:109b539aca08b0ca21c16a38493491ee223a75e2b9738ac7145150155eec36db

[root@ct opt]# docker import nginx-1.21 nginx:1.21  #重新注入
sha256:0b4bf752f838f3b775546fd465d4afa64dd04ccb9e6ebca10ada8a10aeefef42
[root@ct opt]# docker ps -a
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS      NAMES
e86cc40e5351   centos:7               "/bin/bash"              8 minutes ago   Up 8 minutes              great_golick
1ce04b9f9cad   f6f2296798e9           "docker-entrypoint.s…"   2 days ago      Up 2 days      6379/tcp   nervous_dirac
914b1af0ecb0   redis:6.2-alpine3.14   "docker-entrypoint.s…"   2 days ago      Up 2 days      6379/tcp   raide1
[root@ct opt]# docker images    #镜像重新出现
REPOSITORY    TAG              IMAGE ID       CREATED         SIZE
nginx         1.21             8345d48257de   4 seconds ago   132MB
redis         6.2-alpine3.14   f6f2296798e9   4 days ago      32.3MB
busybox       latest           42b97d3c2ae9   11 days ago     1.24MB
nginx         lnmp             dd34e67e3371   2 weeks ago     133MB

8、删除容器

docker rm 容器ID
docker rm -f 容器ID    #强制删除

docker ps -a | awk 'print "docker rm "$1' | bash
#批量删除容器

docker rm `docker ps -aq`
 #批量删除不在运行的容器,-f则强势删除所有

for i in 'docker ps -a | grep -i exit | awk 'print $1'`; do docker rm -f $i; done
#批量删除"exit"状态的容器

二、docker的网络模式

1、 host模式

容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口
如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。

2 container:

创建的容器不会创建自己的网卡、设置IP等,而是和一个指定的容器共享IP、端口范围
这个模式指定新创建的容器和已经存在的一个容器共享一个network namespace,而不是和宿主机共享,新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定地容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表还是隔离的。两个容器的进程可以通过loo网卡设备通信

3、 None模式

该模式关闭了容器的网络功能
这种网络模式下容器只有lo回环网口,没有其他的网卡。none模式可以在容器创建时通过-network=none参数指定
这种类型的网络无法联网,但是封闭的网络能很好的保证容器的安全性

4 、Bridge模式

此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker虚拟网桥,通过docker 0 网桥及iptables的nat,表配置与宿主机通信
当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
从docker0子网中分配一个IP给容器使用,并设置docker0 的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair 设备,Docker 将 veth pair 设备的一端放在新创建的容器中,并命名为etho(容器的网卡),另一端放在主机中,以vethxxx,这样类似的名字命名,并将这个网络设备加入到docker0 网桥中。可以通过brctl show命令查看。
bridge模式是docker 的默认网络模式,不写-net参数,就是 bridge模式。使用docker run -p时, docker实际是在iptables,做了DNAT规则,实现端口转发功能。可以使用jptables. -t nat -vnL查看。

docker基础命令(代码片段)

Docker常用命令介绍1、docker常用命令命令作用dockersearch查询镜像dockerpull从网上拉取镜像dockercreate创建容器dockerps查看容器进程dockerstart启动容器进程dockerstop终止容器进程dockerlogs查看日志dockerimages查看docker中的镜像dockerrm删除镜像do... 查看详情

docker的基础命令(代码片段)

帮助命令dockerversion查看docker版本dockerinfo显示Docker系统信息,包括镜像和容器数。docker--help展示docker所有命令dockercommand--help更深入的了解指定的Docker命令使用方法。command为你想要的了解命令dockerrun--help案例Usage:dockerrun[OPTIONS]... 查看详情

docker基础命令学习(代码片段)

Docker学习Docker简介虚拟机和Linux容器Docker中基本概念镜像(Image)容器(Container)仓库(Repository)分层存储Docker的安装Centos6安装DockerCentos7安装Docker配置阿里云镜像加速器配置HelloWorld镜像底层运行原理Docker常用命令帮助命令dockerversion---查... 查看详情

docker-基础命令(代码片段)

docker容器,只能启动一个指定的程序,程序结束,容器退出查看命令:docker--help 总得来说,docker的命令为以下几种: 容器生命周期管理— docker[run|start|stop|restart|kill|rm|pause|unpause]容器操作运维— docker[ps|inspect|top|attach|events... 查看详情

docker基础命令(代码片段)

一、docker命令-镜像1、查看docker版本docker-vdockerversiondeckerinfo#可以查看所有运行容器的镜像数量,运行容器的版本,可以分配的CPU,总的内存等信息.docker的工作目录/var/lib/decker[root@ct~]#dockerversionClient:DockerEngine-CommunityVersi 查看详情

docker基础命令(代码片段)

一、docker命令-镜像1、查看docker版本docker-vdockerversiondeckerinfo#可以查看所有运行容器的镜像数量,运行容器的版本,可以分配的CPU,总的内存等信息.docker的工作目录/var/lib/decker[root@ct~]#dockerversionClient:DockerEngine-CommunityVersi 查看详情

docker基础命令(代码片段)

Docker常用命令学习网站:https://yeasy.gitbook.io/docker_practice/查看所有镜像:“dockerimages”删除imagedockerrmiIMAGEID若上步无法删除,则需要先删除运行过该images的container,先利用“dockerps-a”查看退出的container;再利用“dockerrmCONTAINERID... 查看详情

docker基础命令,docker网络模式!!!(代码片段)

docker基础命令,docker网络模式!!!一.docker镜像操作二.docker命令---镜像2.1查看docker版本2.2搜索镜像2.3下载镜像2.4查看镜像列表2.5获取镜像信息2.6添加镜像标签2.7删除镜像2.8镜像导出2.9镜像导入三.docker命令---容器... 查看详情

docker基础命令使用(代码片段)

Docker基础命令本文主要基于上一片篇docker安装,来演示命令使用方法,docker安装。1、DockerHub搜索镜像dockersearch关键字选项:--automated=false:仅显示自动创建的镜像(通过Github或BitBucket仓库自动构建的镜像,直接从仓库复制一份,... 查看详情

关于docker那点事儿——docker基础命令(代码片段)

文章目录前言一、docker安装docker配置文件详解二、常用docker命令1、dockerimage命令2、dockerrun命令3、常用命令三、docker网络1、docker修改默认网段2、不同宿主机下docker互通四、docker数据目录迁移前言官方文档:https://docs.docker.com... 查看详情

docker安装优化与docker基础命令(代码片段)

Docker安装优化与Docker基础命令#个人阿里云镜像加速;登陆阿里云搜索镜像加速,复制链接sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-‘EOF‘"registry-mirrors":["https://ye71id77.mirror.aliyuncs.com"]EOFsudosystemctldaemon-re 查看详情

容器|docker基础命令(代码片段)

dockerversion查看docker版本信息dockersearchnginx查找nginx镜像文件dockerimages查看所有镜像文件dockerpullmysql获取最新版本的mysqldockerpullmysql:5.7.35下载指定版本(5.7.35)的mysqldockerps查看docker进程快照dockerstophello-world停止h 查看详情

docker入门基础篇(代码片段)

查看docker教学视频,请点击《狂神说java》:https://www.bilibili.com/video/BV1og4y1q7M4?p=1记得投币三连呀~~Docker学习Docker概述Docker安装Docker命令镜像命令容器命令操作命令......Docker镜像容器数据卷DockerFileDocker网络原理Idea整合DockerDockerCompose... 查看详情

docker常用的基础命令(代码片段)

docker常用的基础命令镜像命令:搜索镜像:dockersearchimages_name下载镜像:dockerpullimages_name查看当前的所有镜像:dockerimages删除本地镜像:dockerrmiimages_name容器操作:新建容器并启动:#在容器里启动一个/bin/bashshell环境,可以登录... 查看详情

docker基础命令详解——镜像及容器操作(代码片段)

Docker基础命令详解——镜像及容器操作前言?上篇文章介绍了有关Docker的基础与Linux下docker的安装,本文主要讲解安装docker后的基础使用方法以及命令的介绍,主要是docker镜像操作及容器操作命令。?当然,docker的相关命令非常多... 查看详情

docker基础:管理命令(代码片段)

...令管理网络管理容器管理服务管理节点管理插件管理命令dockernetwork:管理网络;dockercontainer:管理容器;dockerservice:管理服务;dockernode:管理Swarm节点;dockerplugin:管理插件;dockerstack:管理堆栈;dockersystem:管理系统信息;d 查看详情

docker基础命令总结(代码片段)

dockerinfo显示docker详细信息dockerpullbusybox拉取镜像dockerpullnginxdockerimagesnginx查看正在运行的镜像dockerrun--namenginx01-d-p8099:80nginx用nginx镜像启动一个容器,命名为nginx01并映射了8099端口这样我们就可以直接访问nginx了:firefox127.0.0.1:8099... 查看详情

docker基础入门安装以及常见命令(代码片段)

1、docker常见命令以及安装知识详解1、docker安装1、安装版本统一:Dockerversion18.03.0-ce,build0520e242、安装方式:使用dockerrepository安装3、sudoapt-getupdate4、InstallpackagestoallowapttousearepositoryoverHTTPSsudoapt-getinstallapt-trans 查看详情