服务器重启如果没有配置开机启动则需要手动启动docker服务 systemctl restart docker.service
⭕ Docker常用命令
📍 帮助命令
$ docker version #显示docker的版本信息$ docker info #显示docker的系统信息,包括镜像和容器的数量$ 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运行流程与命令

