1、帮助启动类命令

1.1、启动docker服务

  1. #启动docker
  2. systemctl start docker
  3. #docker hello-world 测试
  4. docker run hello-world
  5. #查看docker进程信息
  6. ps -ef | grep docker

1.2、停止docker服务

  1. #停止docker
  2. systemctl stop docker

image.png
Warning: Stopping docker.service, but it can still be activated by:docker.socket
这句话的意思是docker服务已经停止,通过 ps -ef | grep docker 可以看出,但是仍然可以被docker指令激活,这里的意思是 docker在关闭状态下被访问自动唤醒机制,即这时再执行任意docker命令会直接启动。
image.png
注:如果不希望docker被docker指令唤醒,可以执行在 systemctl stop docker 后在执行
systemctl stop docker.socket

  1. #停止docker
  2. systemctl stop docker
  3. systemctl stop docker.socket

image.png

1.3、重启docker

  1. #重启docker
  2. systemctl restart docker

1.4、查看docker状态

  1. #查看docker状态
  2. systemctl status docker

image.png

1.5、查看docker状态

  1. #开机启动
  2. systemctl enable docker

1.6、查看docker概要信息

  1. #查看docker概要信息
  2. docker info

1.7、查看docker帮助文档

  1. #查看docker帮助文档
  2. docker --help
  3. #查看docker命令帮助文档
  4. docker 具体命令 --help

2、镜像命令

2.1、查看本地镜像

  1. docker images

image.png
REPOSITORY:镜像的仓库源
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个TAG版本,代表这个仓库源的不同版本,使用REPOSITORY:TAG来定义不同的镜像。如果不指定镜像的版本标签默认使用latest(最新版)标签。

2.2、查询镜像

  1. docker search 镜像名称
  2. #例:docker search redis
  3. #部分镜像太多可以使用options来限制
  4. docker search --limit 5 redis

image.png
NAME:镜像名称
DESCRIPTION:镜像描述(说明)
STARS:点赞数量
OFFICIAL:是否是官方
AUTOMATED:是否是自动构建的

2.3、拉取镜像(下载镜像)

说明:一般拉取最多点赞及官方的镜像

  1. #拉取镜像 不写TAG时默认下载latest最新版
  2. docker pull 镜像名称
  3. #拉取镜像指定版本
  4. docker pull 镜像名称[:TAG]
  5. #例:docker pull redis:6.0.8

image.png

2.4、查询镜像/容器/数据卷所占空间

  1. docker system df

image.png

2.5、删除镜像

  1. #删除一个
  2. docker rmi -f 镜像ID
  3. #删除全部(慎用!!!!)
  4. docker rmi -f $(docker images -qa)

image.png
image.png

3、容器命令

本文使用ubuntu,因为ubuntu比较小,centos也可以

3.1、拉取ubuntu镜像

  1. docker pull ubuntu

image.png

3.2、新建、启动容器

  1. docker run [OPTIONS] IMAGE [COMMAND][ARG...]

OPTIONS说明(常用):
1、—name=”容器新名字” 为容器指定一个名称。
2、-d:后台运行容器并返回容器ID,即启动守护式容器(后台运行)。

3、-i:以交互模式运行容器,通常与 -t 同时使用。
4、-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
即启动交互式容器(前端有伪终端,等待交互);

5、-P:随机端口映射,大写P。
6、-p:指定端口映射,小写P、

参数 说明
-p hostPort:containerPort 端口映射 -p 8080:80
-p ip:hostPort:containerPort 配置监听地址 -p 10.0.0.100:8080:80
-p ip::containerPort 随机分配端口 -p 10.0.0.100::80
-p hostPort:containerPort:udp 指定协议 -p 8080:80:tcp
-p 81:80 -p 443:443 指定多个
  1. #使用镜像ubuntu:latest 以交互模式 启动一个容器,并在容器内执行/bin/bash命令
  2. docker run -it ubuntu /bin/bash

参数说明:
-i:交互式操作
-t:终端
ubuntu:使用ubuntu镜像
/bin/bash:放在镜像名后的是命令,这里希望有交互式Shell,所以使用/bin/bash
退出终端,输入exit;
image.png

3.3、列出所有运行中的容器

  1. docker ps [OPTIONS]

image.png
OPTIONS说明(常用)
-a:列出当前所有正在运行的容器+历史上运行过的
-l:显示最近创建的容器
-n:显示最近n个创建的容器。
-q:静默模式,只显示容器编号。
image.png

  1. #指定名称运行ubuntu容器
  2. docker run -it --name=zhangsanubuntu ubuntu bash

image.png
image.png

3.4、退出容器

1、exit ;run进去容器,exit退出,容器停止

  1. exit;

image.png
2、ctrl+p+q;run进去容器,ctrl+p+q退出,容器不停止
image.png

3.5、启动已经停止的容器

  1. docker start 容器id

image.png

3.6、重启容器

  1. docker restart 容器id

3.7、停止容器

  1. docker stop 容器id

3.8、强制停止容器

  1. docker kill 容器id

3.9、删除已停止容器

先停止再删除

  1. docker rm 容器ID

image.png

3.10、后台守护式启动容器

前面 -it启动 是交互式启动,该启动方式缺点为关闭交互ctrl+c;或者其他误操作很容易退出容器,像mysql或者redis之类的容器需要一直开启的就不适用。需要适用后台守护式启动。

1、启动ubuntu

  1. docker run -d ubuntu

image.png
这里发现以 守护式启动ubuntu时,发现并没有运行中的容器,是因为启动后立即退出了,这是docker机制的问题。
1、docker容器后台运行时,必须有一个前台进程, 如果没有容器认为空闲,就会自行退出。
2、 容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出。
解决方案:
1、以前台交互运行

  1. docker run -it ubuntu /bin/bash

2、使用-dit运行

  1. docker run -dit ubuntu

image.png

2、启动redis

  1. docker run -d redis:6.0.8

image.png

3.11、查看容器日志

  1. docker logs 容器ID

image.png

3.12、查看容器内运行的进程

  1. docker top 容器ID

image.png

3.13、查看容器内部细节

  1. docker inspect 容器ID

3.14、进入正在运行的容器并以命令行交互

1、第一种

  1. docker exec -it 容器ID /bin/bash

image.png

2、第二种

  1. docker attach 容器ID

两种方式区别
1、attch 直接进入容器启动命令的终端,不会启动新的进程
用exit退出,会导致容器的停止。
2、exec是在容器中打开新的终端,并且可以启动行的进程
用exit退出,不会导致容器的停止。
推荐使用exec命令

3.15、从容器内拷贝文件到主机上

  1. docker cp 容器ID:容器内路径 目的主机路径
  2. #docker cp 348544169e45:/tmp/move.text /tmp/

image.png

3.16、导入和导出容器

1、导出

export 导出容器的内容留作为一个tar归档文件[对应import命令]

  1. docker export 容器ID > 文件名.tar
  2. # docker export 348544169e45 > /data/testImage.tar

image.png

2、导入

import从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]

  1. cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
  2. #cat testImage.tar | docker import - zhangsan/ubuntu:1.1.1

image.png