帮助命令
docker version #显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #帮助命令
镜像命令
docker images
查看所有本地的主机上的镜像
常用可选项
-a --all #列出所有镜像
-q --quiet #只显示镜像的id
测试
ubuntu@VM-4-3-ubuntu:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 262701d58edd 5 days ago 495MB
hello-world latest feb5d9fea6a5 12 months ago 13.3kB
返回值解释
REPOSITORY #镜像仓库源
TAG #镜像标签
IMAGE ID #镜像id
CREATED #镜像创建时间
SIZE #镜像的大小
docker search
搜索镜像
常用可选项
--filter=stars=3000 #搜索出来的镜像就是stars大于3000的
测试
#不加限制的
ubuntu@VM-4-3-ubuntu:~$ sudo docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 13234 [OK]
mariadb MariaDB Server is a high performing open sou… 5062 [OK]
phpmyadmin phpMyAdmin - A web interface for MySQL and M… 640 [OK]
...
#加过滤的
ubuntu@VM-4-3-ubuntu:~$ sudo docker search mysql --filter=stars=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 13234 [OK]
mariadb MariaDB Server is a high performing open sou… 5062 [OK]
docker pull
下载镜像
docker pull 镜像名[:tag]
测试
#下载镜像 docker pull mysql:5.7
ubuntu@VM-4-3-ubuntu:~$ docker pull mysql
Using default tag: latest #如果不写tag,默认就是latest
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=mysql&tag=latest": dial unix /var/run/docker.sock: connect: permission denied
ubuntu@VM-4-3-ubuntu:~$
ubuntu@VM-4-3-ubuntu:~$ sudo docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
5ed150ed0abe: Pull complete #分层下载,docker images的核心,联合文件系统
0fede58e17ac: Pull complete
994a6ddd6efe: Pull complete
028bda79779b: Pull complete
426fbe9e56a2: Pull complete
1a00e58dd193: Pull complete
4a4f64494005: Pull complete
fba8ab3534a7: Pull complete
2695938edf88: Pull complete
3754e2587bed: Pull complete
1b9f154543e7: Pull complete
Digest: sha256:147572c972192417add6f1cf65ea33edfd44086e461a3381601b53e1662f5d15 #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址
#等价于
docker pull mysql
docker pull docker.io/library/mysql:latest
#指定版本下载
ubuntu@VM-4-3-ubuntu:~$ sudo docker pull mysql:5.7
5.7: Pulling from library/mysql
0056409b8e89: Pull complete
219bd535343d: Pull complete
f220ee65eb90: Pull complete
7bbb395b2290: Pull complete
645e487e5f0a: Pull complete
a9fa38d2e1fb: Pull complete
e1d9f4f7e8b4: Pull complete
e03fcfe5d90e: Pull complete
74c4d4272e30: Pull complete
e3a8ad6eeebe: Pull complete
919524a8718b: Pull complete
Digest: sha256:94176d0ad4ed85767fc0d74b8071387109a0390e7c1afd39788269c96d2dad74
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
#查看镜像
ubuntu@VM-4-3-ubuntu:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 40b83de8fb1a 4 days ago 535MB
mysql 5.7 262701d58edd 5 days ago 495MB
docker rmi
删除镜像
docker rmi -f 镜像id #删除指定镜像
docker rmi -f 镜像id 镜像id 镜像id 镜像id #删除指定多个镜像
docker rmi -f $(sudo docker images -aq) #删除全部的镜像
容器命令
说明:有了镜像才可以创建容器
本文是在ubuntu中下载一个centos测试
docker pull centos
docker run
docker run [可选参数] image 新建容器并启动
常用参数
--name="Name" #容器名字 Tomcat01 Tomcat02,用来区分容器
-d #后台方式运行
-it #使用交互式方式,进入容器查看内容
-p #指定容器的端口 比如:-p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P #(大写p)随机指定端口
测试 启动并进入容器
ubuntu@VM-4-3-ubuntu:~$ sudo docker run -it centos /bin/bash
[root@9d4097285a37 /]# ls #查看容器内的centos 基础版本,很多命令都是不完善的
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
#从容器中退回主机
[root@9d4097285a37 /]# exit
exit
docker ps
列出所有的运行的容器
常用参数
# docker ps 命令
空参数 #列出当前正在运行的容器
-a #列出当前正在运行的容器+历史运行过的容器
-n=? #显示最近创建的?个容器
-q #只是显示容器的编号
测试
ubuntu@VM-4-3-ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ubuntu@VM-4-3-ubuntu:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d4097285a37 centos "/bin/bash" 8 minutes ago Exited (0) 4 minutes ago goofy_blackwell
2675b9e8aead feb5d9fea6a5 "/hello" 7 hours ago Exited (0) 7 hours ago infallible_borg
退出容器
exit #容器停止并退出
Ctrl +p +Q #容器不停止退出
删除容器
docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -f
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有容器
启动和停止容器的操作
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
常用其他命令
查看日志命令
docker logs -f -t --tail 容器id
#显示日志
-tf #显示日志
--tail number #要显示日志条数
查看容器中进程
docker top 容器id
获取容器/镜像的元数据
docker inspect 容器id
进入当前正在运行的容器
docker exec #进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach #进入容器正在执行的终端,不会启动新的进程
docker exec -it 容器id /bin/bash #命令行进入
docker attach 容器id
从容器中拷贝文件到主机上
docker cp 容器id:容器内路径 目标主机路径
#拷贝是一个手动过程,可采用-v 卷的技术,实现实时同步