目录
docker run [可选参数] image: 新建容器启动
docker logs -f -t --tail 条数 命令 (查看日志)
docker exec -it 容器ID /bin/bash(进入容器--两种方式)
docker cp 容器ID:文件路径 目的主机路径 (从容器内拷贝文件到主机上)
docker commit -m "描述" -a "作者" 容器ID 目标镜像名:[tag]
帮助命令:
[root@VM-4-3-centos docker]# docker version #显示docker的版本信息
[root@VM-4-3-centos docker]# docker info #显示docker的系统信息,包括镜像和容器的数量
[root@VM-4-3-centos docker]# docker info #帮助命令
帮助文档地址:https://docs.docker.com/engine/reference/commandline/cli/
镜像命令:
docker images (查看所有镜像)
查看所有本地的主机上的命令(可选项 -a,--all #列出所有镜像 -q,--quiet # 只显示镜像的Id)
[root@VM-4-3-centos docker]# docker images
执行结果:
[root@VM-4-3-centos /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 9 months ago 209MB
## 字段说明:
##
## REPOSITORY:镜像的仓库源
##
## TAG:镜像的标签
##
## IMAGE_ID:镜像的ID
##
## CREATED:镜像的创建时间
##
## SIZE:镜像的大小
docker pull 镜像名[:tag]
下载镜像:docker pull 镜像名[:tag]
[root@VM-4-3-centos ~]# docker pull mysql
执行结果:
指定版本下载:
查询结果:
docker rmi 删除镜像
[root@VM-4-3-centos ~]# docker rmi -f 镜像ID # 删除指定容器
[root@VM-4-3-centos ~]# docker rmi -f 镜像ID 镜像ID 镜像ID 镜像ID # 删除多个镜像
[root@VM-4-3-centos ~]# docker rmi -f $(docker images -aq) #删除所有镜像
容器命令:
docker run [可选参数] image: 新建容器启动
docker run [可选参数] image
#参数说明
--name="Name" 容器名称 如:tomcat01、tomcat02
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器端口 -p 8080:8080
-p IP:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
执行结果
docker ps 命令 #列出所有运行的容器
# docker ps 命令
#列出当前正在运行的容器
-a #列出当前正在运行的容器+历史运行过的容器
-n=? #显示最近创建的容器
-q #只显示容器的编号
运行结果:
删除容器:
docker rm 容器ID #删除指定的容器,不能删除正在运行的容器,如要强制删除使用 rm -f
docker rm -f $(docker ps -aq) #
docker rm -a -q|xargs docker rm #删除所有的容器
启动和停止容器的操作:
docker start 容器ID #启动容器
docker restart 容器ID #重启容器
docker stop 容器ID #停止当前正在运行的容器
docker kill 容器ID #强制停止当前容器
其他常用命令:
docker run -d 镜像名(后台启动docker)
[root@VM-4-3-centos /]# docker run -d centos
0c5f974466aa2fc3a900c93679fe12e4a39b7a5f8a3e6aa680ab3c242f8fe0e7
[root@VM-4-3-centos /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
### 通过docker ps 发现centos 停止了
#常见的坑,docker容器在后台运行时,就必须要有一个前台进程,docker发现没有应用,就会自动停止
## nginx,容器启动后,发现自己没有提供服务,就会立即停止,就是没有程序了
docker logs -f -t --tail 条数 命令 (查看日志)
#创建一个新容器
[root@VM-4-3-centos /]# docker run -p 8080:8080 -it centos /bin/bash
#查看日志(此时发现没有日志)
[root@VM-4-3-centos /]# docker logs -f -t --tail 10 aaa8650485cf
#自定义一段shell
[root@VM-4-3-centos /]# docker run -d centos /bin/sh -c "while true;do echo www.ayit.com;sleep 1;done"
#查看日志
[root@VM-4-3-centos /]# docker logs -f -t --tail 10 4ac190bb8dc9
2021-09-15T09:11:50.742909505Z www.ayit.com
2021-09-15T09:11:51.744811739Z www.ayit.com
2021-09-15T09:11:52.746748727Z www.ayit.com
docker top 容器ID
[root@VM-4-3-centos /]# docker top 4ac190bb8dc9
UID PID PPID
root 13329 13308
root 14844 13329
docker inspect 容器ID
[root@VM-4-3-centos /]# docker inspect 4ac190bb8dc9
[
{
"Id": "4ac190bb8dc9bf181accb496e6e2b4f49141997e1c0aa9e7a",
"Created": "2021-09-15T09:09:01.05293223Z",
"Path": "/bin/sh",
"Args": [
"-c",
"while true;do echo www.ayit.com;sleep 1;done"
],
"State": {
docker exec -it 容器ID /bin/bash(进入容器--两种方式)
[root@VM-4-3-centos /]# docker exec -it 9497a344df88 /bin/bash # 方式一 exec
[root@9497a344df88 /]# ls
bin dev etc home lib lib64 lost+found media
mnt opt proc root run sbin srv sys tmp usr var
[root@VM-4-3-centos /]# docker attach 9497a344df88 # 方式二 attach
www.ayit.com
www.ayit.com
www.ayit.com
##区别:
# exec 进入容器后,开一个新的终端,可以在里面进行操作(常用)
# attach 进入容器后正在执行的终端,不会开启新的进程
docker cp 容器ID:文件路径 目的主机路径 (从容器内拷贝文件到主机上)
[root@VM-4-3-centos /]# docker cp b3cd41065704:/opt/test.java /opt
[root@VM-4-3-centos /]# cd opt/
[root@VM-4-3-centos opt]# ls
containerd G: microboot-1.0.0-lee.jar test.java
docker commit -m "描述" -a "作者" 容器ID 目标镜像名:[tag](提交自定义镜像)
如果想要保存当前容器的状态,就可以通过commit来提交,获得一个镜像,就好比
[root@VM-4-3-centos ~]# docker commit -a="nni" -m="cp webapps app"
179af2eb9d3d tomcat01:1.0.0
sha256:333968a7902b7fac4a06608d