目录

一、Docker镜像操作

1、查看镜像(docker images)

 2、查看所有容器状态(docker ps -a)

​编辑 3、docker (run指令)

4、查看docker版本(docker -v)

 5、查看docker信息(docker info)

6、搜索镜像(公共仓库)——docker search

7、下载镜像——docker pull

8、查看镜像列表——docker images

9、获取镜像信息——docker inspect

10、添加镜像标签——docker tag

11、删除镜像——docker rmi

7、批量删除镜像

8、导出/导入镜像——docker save/load

二、Docker容器操作

1、容器创建——docker create 

2、 启动容器——docker start 

3、创建并启动容器—— docker run

4、退出容器——exit

5、查看容器的运行状态

查看运行中的容器

 查看所有容器信息

只查看容器的运行ID

查看容器详细信息

可查看容器内进程信息

查看容器的日志信息

6、进入容器——docker exec

 7、容器导出/导入——docker export

​编辑 8、删除容器——docker rm -f

 9、查看docker消耗的资源状态

三、Docker仓库操作


一、Docker镜像操作

1、查看镜像(docker images)

#查看下载到本地的所有镜像
docker images


REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    88736fe82739   2 days ago   142MB
--------------------------------------------------------------------------------
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像,经过md5方式加密过;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;
--------------------------------------------------------------------------------

 2、查看所有容器状态(docker ps -a)

docker ps -a    #-a 选项可以显示所有的容器	查看正在运行的容器

CONTAINER ID   IMAGE         COMMAND                  CREATED        STATUS                      PORTS     NAMES
58a0aad139d3   nginx         "/docker-entrypoint.…"   2 hours ago    Exited (0) 21 minutes ago             dazzling_wescoff

##字段说明
CONTAINER ID:容器的ID号
IMAGE:加载的镜像
COMMAND :运行的程序
CREATED :创建时间
STATUS:当前的状态
PORTS:端口映射
NAMES:名称

 3、docker (run指令)

4、查看docker版本(docker -v)

 5、查看docker信息(docker info)

镜像下载后存放在 /var/lib/docker 

  

6、搜索镜像(公共仓库)——docker search

格式:docker search 关键字
docker search nginx

7、下载镜像——docker pull

格式:docker pull 镜像:标签
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。
docker pull nginx

8、查看镜像列表——docker images

docker images

9、获取镜像信息——docker inspect

#格式:docker inspect  镜像ID
#示例:查看nginx镜像信息
docker insect 605c77e624dd

10、添加镜像标签——docker tag

#格式:docker tag 名称:[旧标签] 新名称:[新标签]
#示例:
docker tag nginx:latest nginx:lnmp  #给nginx打上标签lnmp,原来的标签是latest

11、删除镜像——docker rmi

#格式:
docker rmi 仓库名称:标签	 #当一个镜像有多个标签时,只是删除其中指定的标签
docker rmi 镜像ID号	   #会彻底删除该镜像
docker rmi是docker rm image的简写

7、批量删除镜像

#docker images -q 可以加载镜像id

#批量删除所有镜像
docker rmi `docker images -q`

#批量删除nginx镜像
docker rmi `docker images|grep "nginx"`


docker rmi 仓库名称:标签				#当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号						#会彻底删除该镜像(加-f强制删除)

#删除所有镜像,但该镜像创建的容器不能处于up状态


注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。
先通过docker-compose down 停止服务;后再次执行删除;

docker rmi nginx:web

 

8、导出/导入镜像——docker save/load

#导出镜像
#格式:docker save -o 存储文件名 存储的镜像
docker save -o nginx_v1 nginx:latest		#存出镜像命名为nginx存在当前目录下
scp nginx_v1 @root:192.168.59.111:/opt   #将导出的镜像以scp方式导到别的服务器上

#导入镜像,可以异地导入,但是必须要有docker引擎,并且版本不可以差太多
#格式:docker load < 存出的文件
docker load < nginx_v1 

二、Docker容器操作

1、容器创建——docker create 

就是将镜像加载到容器的过程

新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器
格式:docker create [选项] 镜像
常用选项:
-i:让容器的输入保持打开
-t:让 Docker 分配一个伪终端

docker create -it nginx:latest /bin/bash

2、 启动容器——docker start 

#格式:docker start 容器的ID/名称
docker start b2a57b3ea48a
docker ps -a

3、创建并启动容器—— docker run

可以直接执行 docker run 命令, 等同于先执行 docker create 命令,再执行 docker start 命令。

容器是一个与其中运行的 shell 命令共存亡的终端,命令运行容器运行, 命令结束容器退出

  • docker容器默认会把容器内部第一个进程,也就是pid=1的程序作为docker容器是否正在运行的依据,如果docker容器中
  • pid=1的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉。

当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是

  1. 检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
  2. 利用镜像创建并启动一个容器;
  3. 分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
  4. 从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
  5. 分配一个地址池中的 IP 地址给容器;
  6. 执行用户指定的应用程序,执行完毕后容器被终止运行。
#加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。

#示例1:
docker run -itd nginx:latest /bin/bash

#示例2:执行后退出
docker run centos:7 /usr/local/bash -c ls /   

#示例3:执行后不退出,以守护进程方式执行持续性任务
docker run -d centos:7 /usr/local/bash -c "while true;do echo hello;done" 

4、退出容器——exit

#退出并停止容器
exit

#退出但不停止容器
crtl +p +q

5、查看容器的运行状态

#查看正在运行的容器
docker ps

#查看所有容器
docker ps -a			#-a 选项可以显示所有的容器
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS    PORTS     NAMES
8b0a7be0ff58   nginx:latest   "/docker-entrypoint.…"   57 seconds ago   Created             inspiring_swanson
容器的ID号	   加载的镜像     运行的程序                  创建时间        当前的状态   端口映射  名称

#查看所有容器的ID
docker ps -aq

查看运行中的容器

docker container ls

CONTAINER ID :运行中容器的唯一号码(自动生成)

NAMES :容器的名字(默认自动生成,可手工指定,不可重复)
    手工指定:在开启容器时指定 docker container run -it --name="ljm" 9f266d35e02c

IMAGE :镜像的ID

STATUS :运行状态 (up为运行中,exited为关闭掉的容器。可使用 docker container ls -a 查看所有状态)

 查看所有容器信息

docker container ls -a
或
docker ps -a

只查看容器的运行ID

docker container ls -a -q
或
docker ps -a -q

查看容器详细信息

docker container inspect 容器名或者运行号码

可查看容器内进程信息

docker container top 容器的ID

查看容器的日志信息

docker container logs [-ft] 容器的ID
-f 为持续监控,-t 为更加详细显示

6、进入容器——docker exec

  • docker run -it会创建前台进程,但是会在输入exit后终止进程。

  • docker attach会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止容器进程

  • docker exec -it 会连接到容器,可以像sSH一样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行

#需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。

#格式:docker exec -it 容器ID/名称 /bin/bash
-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端。

#示例:进入(三种方式)
docker run -itd centos:7 /bin/bash  #先运行容器
docker ps -a 
①使用run进入,可以使用ctrl+d退出,直接退出终端
docker run -it centos:7 /bin/bash 

②想永久性进入,退出后还是运行状态,用docker exec
docker ps -a 
docker exec -it b99e0771c4e1  /bin/bash

③docker attach,会通过连接stdin,连接到容器内输入输出流,公在输入exit后终止容器进程(临时性的,不推荐)

 7、容器导出/导入——docker export

用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移

#导出格式:docker export 容器ID/名称 > 文件名
docker export b99e0771c4e1 > centos_7

#导入格式:cat 文件名 | docker import – 镜像名称:标签
法①
docker import centos_7  centos:v1	#导入后会生成镜像,但不会创建容器
法②
cat centos_7 |docker import - centos:v2

 8、删除容器——docker rm -f

#格式:docker rm [-f] 容器ID/名称

1.#不能删除运行状态的容器,只能-f强制删除,或者先停止再删除
docker rm 3224eb044879

2.#已经退出的容器,可以直接删除
docker rm 1270a6791069 

3.#基于名称匹配的方式删除
docker rm -f distracted_panini


4.#删除所有运行状态的容器
docker rm -f `docker ps -q`

5.#删除所有容器
docker rm -f `docker ps -aq`

6.#有选择性的批量删除 (正则匹配)
docker ps -a l awk ' {print "docker rm "$1}'l bash

7.#删除退出状态的容器
for i in `dockef ps -a l grep -i exit / awk '{print $1}' '; do docker rm -f $i;done

 9、查看docker消耗的资源状态

docker stats

三、Docker仓库操作

#首先下载registry 镜像
docker pull registry

#在daemon.json文件中添加私有镜像仓库地址
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.80.10:5000"],   #添加,注意用逗号结尾
"registry-mirrors": ["https://6ijb8ube.mirror.aliyuncs.com"]
}

systemctl restart docker.service

#运行registry 容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000: 5000 --restart=always --name registry registry:latest
-------------------------------------------------
-itd: 在容器中打开一个伪终端进行交互操作,并在后台运行
-v: 把宿主机的/data/registry目录绑定到容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了
--restart=always: 这是重启的策略,在容器退出时总是重启容器
--name registry: 创建容器命名为registry
registry:latest:这个是刚才pull下来的镜像
---------------------------------------------------
Docker容器的重启策略如下:
no:默认策略,在容器退出时不重启容器
on-failure:在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3 :在容器非正常退出时重启容器,最多重启3次
always:在容器退出时总是重启容器
unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

#为镜像打标签
docker tag centos:7 192.168.80.10:5000/centos:v1

#上传到私有仓库
docker push 192.168.80.10:5000/centos:v1

#列出私有仓库的所有镜像
curl http://192.168.80.10:5000/v2/_catalog

#出私有仓库的centos 镜像有哪些tag
curl http://192.168.80.10:5000/v2/centos/tags/list

#先删除原有的 centos 的镜像,再测试私有仓库下载
docker rmi -f 8652b9f0cb4c
docker pull 192.168.80.10:5000/centos:v1 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐