服务器重启如果没有配置开机启动则需要手动启动docker服务 systemctl restart docker.service

⭕ Docker常用命令

📍 帮助命令

  1. $ docker version #显示docker的版本信息
  2. $ docker info #显示docker的系统信息,包括镜像和容器的数量
  3. $ docker --help #帮助命令

📍 镜像命令

$ docker images --help
-----------------------------------------
#查看本地镜像
$ docker images    
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              a29f45ccde2a        10 months ago       9.14kB
#解释
REPOSITORY    镜像的仓库源
TAG                    镜像的标签
IMAGE ID        镜像的id
CREATED            镜像的创建时间
SIZE                镜像的大小
#可选项
  -a, --all    #列出所有镜像
  -q, --quiet  #只显示镜像的id
-----------------------------------------
#搜索docker远程仓库的镜像
$ docker search mysql    #无条件搜索所有mysql镜像

$ docker search mysql --filter=STARS=3000    #过滤掉stars小于3000的镜像
-----------------------------------------
#下载镜像( 非指定版本 )
$ docker pull mariadb
Using default tag: latest        #如果不写tas默认就是latest(即最新版本)
latest: Pulling from library/mariadb    
00f57adb053c: Pull complete    #分层下载,docker image的核心,联合文件系统
b235828e8d75: Pull complete 
41b606b1b8ab: Pull complete 
df1c04936d96: Pull complete 
838094e6dc11: Pull complete 
d156fbd7c528: Pull complete 
96338e63cb22: Pull complete 
072483a93c1f: Pull complete 
708913510fbc: Pull complete 
67698c770598: Pull complete 
a961de22575b: Pull complete 
ccd393f66e88: Pull complete 
Digest: sha256:2960a3d1ddb35dd454066b45005b4f694e18af76648833f1b9d93ab90cee7cf2    #数字签名
Status: Downloaded newer image for mariadb:latest
docker.io/library/mariadb:latest    #真实地址docker pull mariadb等于docker pull docker.io/library/mariadb:latest

#下载镜像( 指定版本 版本号在这里找https://registry.hub.docker.com/)
$ docker pull mariadb:10.1.48
-----------------------------------------
#删除镜像
$ docker rmi -f [镜像的id]    #删除一个
$ docker rmi -f $(docker images -aq)    #递归删除全部

📍 容器命令

-----------------------------------------
# 命令测试环境
-----------------------------------------
前提: 我们有了镜像才可以创建容器 , 所以现在可以先下载一个cetnos镜像来测试学习
$ docker pull centos

-----------------------------------------
# 查看容器启动命令的所有参数
-----------------------------------------
$ docker run --help
#参数说明
docker run --name="自定义"                    --> 容器名字,例如tomcat01,tomcat02,用来区分容器
docker run -d                                             --> 后台运行方式
docker run -it                                        --> 使用交互方式运行 , 进入容器并查看内容
docker run -P [主机端口]:[容器端口]      --> 指定容器端口 docker run -P 8080:8080
docker run -p                                                --> 随机指定端口

-----------------------------------------
# 新建容器\启动容器\退出容器
-----------------------------------------
$ docker run -it centos /bin/bash    #新建容器并启动进入容器
$ exit #容器退出并停止
$ ctrl+p+q    #容器不停止退出

-----------------------------------------
# 查看已有容器
-----------------------------------------
$ docker ps            #列出当前正在运行的容器
$ docker ps -a    #列出正在运行和历史运行过的容器

-----------------------------------------
# 删除容器
-----------------------------------------
$ docker rm [容器id]    #删除指定id
$ docker rm -f $(docker ps -aq)    #递归删除所有容器
[-f]
强制移除正在运行的容器

-----------------------------------------
# 开关容器
-----------------------------------------
$ docker start [容器id]        #启动容器
$ docker restart [容器id]    #重启容器
$ docker stop [容器id]        #停止当前正在运行的容器
$ docker kill [容器id]        #强制停止当前容器

📍 常用其他命令

-----------------------------------------
# 后台启动容器
-----------------------------------------
# docker run -d centos
问题: 输入后台启动后centos会自动关闭
原因: docker的自有机制造成的,就是如果这个容器没有前台进程,就会自动停止
解决方法: 

-----------------------------------------
# 查看日志
-----------------------------------------
#运行一段shell脚本用来让服务有事儿可干,然后生成日志
$ docker run -d centos /bin/sh -c "while true;do echo cs-c5c5;sleep 1;done"    
$ docker ps
CONTAINER ID        IMAGE
0fe5e1a43f07        centos 
$ docker logs -t -f --tail 10  0fe5e1a43f07    #查看十条日志
$ docker logs -tf 0fe5e1a43f07    #查看所有日志

-----------------------------------------
# 查看docker容器中的进程信息
-----------------------------------------
$ docker top [容器id]

-----------------------------------------
# 查看容器中镜像的元数据
-----------------------------------------
$ docker inspect [容器id]

-----------------------------------------
# 两种方式进入当前正在运行的容器
-----------------------------------------
$ docker exec -it 0fe5e1a43f07 /bin/bash    #进入容器后开启一个新的终端,可以在里边操作
$ docker attach 0fe5e1a43f07    #进入容器中正在执行的终端

-----------------------------------------
# 从容器内复制文件到主机上
-----------------------------------------
$ docker attach b2de5ca4cc92 #进入到正在运行中的容器中
$ cd /home    #进入这个目录下
$ touch test.java    #随便建立一个文件做测试
$ exit    #退出当前容器
$ docker ps -a    #查看所有容器,找到上面的容器ID
$ docker cp b2de5ca4cc92:/home/test.java /home    #从容器复制到本机

#这是个手动的过程,之后有个 -v 卷的技术 , 可以实现自动同步 /home <-> /home

📍Docker运行流程与命令

image.png