帮助命令:
docker version # 显示docker的版本信息
docker info #显示docker的系统信息
docker 命令 --help #万能命令
镜像命令:
docker images 查看所有本地的主机上的镜像
[root@localhost /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 6 months ago 13.3kB
# 解释
REPOSITORY #镜像的仓库源
TAG #镜像的标签
IMAGE ID #镜像的ID
CREATED #镜像的创建时间
SIZE #镜像的大小
# 可选项
-a, --all #列出所有的镜像
-q, --quiet #只显示镜像的id
docker search 搜索镜像
docker pull 下载镜像
# 下载镜像
[root@localhost /]# docker pull mysql
Using default tag: latest (如果不写tag,默认使用最新版本)
latest: Pulling from library/mysql
a330b6cecb98: Pull complete #分层下载,docker images的核心,联合文件系统
9c8f656c32b8: Pull complete
88e473c3f553: Pull complete
062463ea5d2f: Pull complete
daf7e3bdf4b6: Pull complete
1839c0b7aac9: Pull complete
cf0a0cfee6d0: Pull complete
1b42041bb11e: Pull complete
10459d86c7e6: Pull complete
b7199599d5f9: Pull complete
1d6f51e17d45: Pull complete
50e0789bacad: Pull complete
Digest:#签名sha256:99e0989e7e3797cfbdb8d51a19d32c8d286dd8862794d01a547651a896bcf00c
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址# docker pull mysql 等价于docker.io/library/mysql:latest
# 指定版本号: docker pull mysql:5.7
docker rmi 删除镜像
docker rmi -f 镜像id #删除指定的镜像
docker rmi -f 镜像id 镜像id 镜像id 镜像id #删除多个镜像,使用空格作为间隔
docker rmi -f $(docker images -aq) #删除全部的镜像
容器命令:
说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像测试来学习
docker pull centos
新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name" 容器明智 tomcat01 tomcat02,用来区分容器
-d 后台方式运行
-it 使用交互方式运行 进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
容器端口
-P 随机指定你跟端口
# 测试,启动并测试容器
[root@localhost /]# docker run -it centos /bin/bash
[root@025d0cc5db62 /]## 查看容器内的centos,基础版本,很多命令都是不完善的
[root@025d0cc5db62 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var# 从容器中退回主机
[root@025d0cc5db62 /]# exit
exit
列出所有的运行容器
# docker ps 命令
# 列出当前正在运行的容器
-a # 列出当前正在运行的容器+带出历史运行过的容器
-n=? # 显示最近创建的容器
-q # 只显示容器的编号
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
025d0cc5db62 centos "/bin/bash" 2 minutes ago Exited (0) 45 seconds ago dreamy_gauss
5fcda7d74208 hello-world "/hello" 2 hours ago Exited (0) 2 hours ago silly_allen
6e01e48aac10 hello-world "/hello" 2 hours ago Exited (0) 2 hours ago crazy_blackburn
退出容器
exit # 直接容器停止并退出
Ctrl + p + q #容器不停止退出
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
708832ebc008 centos "/bin/bash" 31 seconds ago Up 30 seconds cranky_wiles
删除容器
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 run -d 镜像名
[root@localhost ~]# docker run -d centos
e243a0103a78e1522bddd822990f67eaca1d4e95ca9761f01334c2cb9de41181
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES# 问题docker ps,发现了centos停止了
# 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx容器启动后,发现自己没有提供服务,就会立刻停止,也就是没有程序了
查看容器中的进程
# 命令 docker top 容器id
查看镜像的元数据
命令:docker inspect 容器id
[root@localhost ~]# docker inspect 6cd2d5dd1480
进入当前正在运行的容器
我们通常容器都是使用后台运行的,需要进入容器,修改一些配置
# 命令
# 方式一
docker exec -it 容器id bashShell
# 进入容器后开启一个新的终端,可以在里面操作(常用)
# 测试
[root@localhost ~]# docker exec -it 6cd2d5dd1480 /bin/bash
[root@6cd2d5dd1480 /]## 方式二
docker attach 容器id
# 进入容器正在执行的终端,不会启动新的进程
从容器内拷贝文件到主机上
docker cp 容器