Docker信息
docker versin #显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器数量
Docker镜像命令
docker images #查看所有本地的主机上的镜像
[root@marius /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 5 weeks ago 13.3kB
repository #镜像的仓库源
TAG #镜像的标签
IMAGE ID #镜像的id
CREATED #镜像的创建时间
SIZE #镜像的大小
Options:
-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet Only show image IDs 只显示id
docker search 搜索镜像
[root@marius /]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11608 [OK]
mariadb MariaDB Server is a high performing open sou… 4417 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 857
可选项
--filter=stars=3000 #搜索出来的镜像收藏数不小于3000
docker pull xxx 拉取镜像
删除镜像
docker rmi -f 删除全部镜像
docker rmi -f (image id)
docker rmi -f $(docker search -aq) 先查出所有镜像id,再通过id删除所有镜像
容器命令
说明:我们有了镜像才可以创建容器,Linux,下载一个centos镜像来测试学习
docker pull centos
新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name" 容器名称 tomcat01 tomcat02,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口,-p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-p 随机是定端口
测试
#启动并进入容器
[root@marius /]# docker run -it centos /bin/bash
[root@8fec6b03a4f0 /]#
#查看容器内的centos,基础版本
[root@8fec6b03a4f0 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
#从容器退出到主机
[root@8fec6b03a4f0 /]# exit
exit
列出所有运行的容器
docker ps
#查看运行的容器
[root@marius /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#查看当前运行的容器+曾经运行过的容器
[root@marius /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8fec6b03a4f0 centos "/bin/bash" 5 minutes ago Exited (130) About a minute ago pedantic_nobel
46b740e37842 hello-world "/hello" 2 hours ago Exited (0) 2 hours ago happy_ptolemy
#显示最近创建的容器
[root@marius /]# docker ps -a -n=1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8fec6b03a4f0 centos "/bin/bash" 21 minutes ago Exited (130) 17 minutes ago pedantic_nobel
#只显示容器的编号
[root@marius /]# docker ps -aq -n=1
8fec6b03a4f0
退出容器
exit #容器直接停止并退出
Ctil + P + Q #容器不停止退出
删除容器
docker rm 容器id
docker rm $(docker search -aq) #删除所有容器 -f 强制删除
启动容器和停止容器的操作
docker start 容器id #启动容器
docker restart 容器id #重新启动容器
docker stop 容器id #停止容器
docker kill 容器id #强行停止容器
其它命令
后台启动容器
#命令 docker run -d 镜像名
[root@marius /]# docker run -d centos
2c8dec66595c573cb6734386bac157cae58b9ffc09d18be9ec1dc7194ad73e63
#问题docker ps,发现centos停止了
#常见的坑,docker使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
#nginx,容器启动后,就会发现自己没有提供服务,就会立即停止,就是没有程序了
查看日志
docker logs
Options:
--details Show extra details provided to logs
-f, --follow Follow log output
--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
-n, --tail string Number of lines to show from the end of the logs (default "all")
-t, --timestamps Show timestamps
--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
查看容器中进程信息
docker top 容器id
[root@marius /]# docker top e6b94c61c838
UID PID PPID C STIME TTY TIME CMD
root 12940 12922 0 18:55 ? 00:00:00 /bin/bash
查看镜像的元数据
docker inspect 容器id
[root@marius /]# docker inspect e6b94c61c838
[
{
"Id": "e6b94c61c8388e79d5653a52e1c51c58cde02b7ca3566cb0521ab7b65f201331",
"Created": "2021-10-30T10:41:43.607163917Z",
"Path": "/bin/bash",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 12940,
"ExitCode": 0,
"Error": "",
"StartedAt": "2021-10-30T10:55:30.176833293Z",
"FinishedAt": "2021-10-30T10:46:27.53523793Z"
},
"Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
......
}
]
进入当前正在运行的容器
docker exec -it 容器id bashShell
#我们通常容器都是使用后台的方式运行的,需要进入容器,修改一些配置
#命令
docker exec -it 容器id bashShell //进入容器后开启了一个新的终端,可以在里面操作(常用)
#测试
[root@marius /]# docker exec -it e6b94c61c838 /bin/bash
[root@e6b94c61c838 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@e6b94c61c838 /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:55 pts/0 00:00:00 /bin/bash
root 15 0 0 11:05 pts/1 00:00:00 /bin/bash
root 30 15 0 11:05 pts/1 00:00:00 ps -ef
#方式二
docker attach 容器id //进入容器正在执行的终端,不会启动新的进程
从容器内拷贝文件到主机
docker cp
#命令
#进入容器,新建文件
[root@marius /]# docker exec -it e6b94c61c838 /bin/bash
[root@e6b94c61c838 /]# cd /home
[root@e6b94c61c838 home]# touch marius.java
#退出容器,拷贝文件,注意拷贝文件与容器是否运行无关
[root@e6b94c61c838 home]# exit
exit
[root@marius home]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@marius home]# docker cp e6b94c61c838:/home/marius.java /home
[root@marius home]# ls /home
1.txt marius.java