1.检索镜像
docker search 关键字

2. 查看镜像
docker images

3.查看运行中的容器
docker ps
查看所有已经创建的容器,包括已经停止的容器
docker ps -a
用一行列出所有正在运行的container(容器多的时候非常清晰)
docker ps | less -S
列出最近一次启动的container
docker ps -l
显示一个运行的容器里面的进程信息
docker top Name/ID
查看容器内部详情细节:
docker inspect
在容器中安装新的程序
docker run image_name apt-get install -y app_name
保存对容器的修改(commit) 当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。
docker commit ID new_image_name

4.从dockerhub拉取镜像
这里以redis镜像为例,我们选择基于alpine基础镜像的版本,体积较小
docker pull redis:6.0.9-alpine3.12
参数:
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

5.运行镜像(创建容器)
启动容器并启动bash(交互方式):
docker run -i -t /bin/bash
启动容器以后台方式运行(更通用的方式)
docker run -d –rm –name myredis -p 6380:6379 redis:6.0.9-alpine3.12 redis-server
参数讲解:
–detach , -d 容器后台运行,并打印容器ID
–rm 如果已经有同名的容器,移除同名容器
–name 给容器起个名字
–publish , -p 端口映射,将宿主机的端口(冒号左边)和容器内的端口(冒号右边)映射
倒数第二个参数redis:6.0.9-alpine3.12是要执行的镜像,倒数第一个参数redis-server代表要执行的具体指令

6.进入运行的容器
docker exec -i -t myredis /bin/bash
参数讲解:
–interactive , -i Keep STDIN open even if not attached打开标准输入接受用户输入命令
–tty , -t Allocate a pseudo-TTY
-d, –detach 在容器中后台执行命令;
倒数第二个参数是容器名(也可以用容器ID),倒数第一个参数是要执行的具体指令

7.停止容器运行
docker stop myredis
这里也可以使用容器ID,一次停止多个容器,可以在后面用空格分隔

8.清理已经停止的容器
docker container prune

9.删除指定镜像
docker rmi

10.将镜像保存为归档文件
docker save

11.导入镜像
docker load

12.镜像构建
docker build

13.镜像运行,就是新建并运行一个容器。
docker run [镜像ID]

14.启动已终止容器
docker start [容器ID]

15.停止运行的容器
docker stop [容器ID]

16.杀死容器进程
docker kill [容器ID]

17.重启容器
docker restart [容器ID]

18.删除容器
docker rm [容器ID]
删除所有容器
docker rm `docker ps -a -q`

19.导出容器
#导出一个已经创建的容器到一个文件
docker export [容器ID]

20.导入容器
# 导出的容器快照文件可以再导入为镜像
docker import [路径]

21.查看日志
docker logs [容器ID]
实时查看日志输出
docker logs -f (类似 tail -f) (带上时间戳-t)
这个命令有以下常用参数 -f : 跟踪日志输出
–since :显示某个开始时间的所有日志 -t : 显示时间戳 –tail :仅列出最新N条容器日志

22.复制文件
# 从主机复制到容器
docker cp host_path containerID:container_path
# 从容器复制到主机
docker cp containerID:container_path host_path

23.显示一个镜像的历史;
docker history image_name

24.发布docker镜像
docker push new_image_name
要发布到私有Registry中的镜像,在镜像命名中需要带上Registry的域名(如果非80端口,同时需要带上端口号)比如:
docker push dockerhub.yourdomain.com:443/hello.demo.kdemo:v1.0

25.查看docker0的网络(宿主机上操作)
ip a show docker0

26.查看容器的IP地址
docker inspect -f ‘{{ .NetworkSettings.IPAddress }}’

27.附着到容器内部查看其内部ip:
ip a show eth0

==============
Dockerfile中一些常见的指令:

FROM:指定基础镜像
RUN:执行命令
COPY:复制文件
ADD:更高级的复制文件
CMD:容器启动命令
ENV:设置环境变量
EXPOSE:暴露端口