Docker学习笔记(2)-常用命令的学习

文章目录

    • Docker常用命令
      • 帮助命令
      • 镜像命令
      • 容器命令
      • 其他常用命令
      • 小结

Docker常用命令

帮助命令


#显示docker版本信息
sudo docker version

#显示docker系统信息,包括镜像和容器数量
sudo docker info

#帮助命令
sudo docker 命令 --help

镜像命令


docker images

suc@suc-vm:~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB


#解释
REPOSITORY  镜像的仓库源
TAG         镜像标签
IMAGE ID    镜像id
CREATED     镜像的创建时间
SIZE        镜像的大小

#可选项
Options:
  -a, --all             # 列出所有镜像
  -q, --quiet           # 只显示镜像id

docker search 搜索镜像

#搜索出来的镜像是STARS大于3000的mysql,--filter是可选项
suc@suc-vm:~$ sudo docker search mysql --filter=STARS=3000
NAME                DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql               MySQL is a widely used, open-source relation…   9827                [OK]                
mariadb             MariaDB is a community-developed fork of MyS…   3588                [OK]   

docker pull 下载镜像

# 下载镜像 docker pull 镜像名[:tag]
suc@suc-vm:~$ sudo docker pull mysql
Using default tag: latest           # 如果不写 tag,默认就是latest
latest: Pulling from library/mysql
bf5952930446: Pull complete         # 分层下载,docker image的核心 联合文件系统
8254623a9871: Pull complete 
938e3e06dac4: Pull complete 
ea28ebf28884: Pull complete 
f3cef38785c2: Pull complete 
894f9792565a: Pull complete 
1d8a57523420: Pull complete 
6c676912929f: Pull complete 
ff39fdb566b4: Pull complete 
fff872988aba: Pull complete 
4d34e365ae68: Pull complete 
7886ee20621e: Pull complete 
Digest: sha256:c358e72e100ab493a0304bda35e6f239db2ec8c9bb836d8a427ac34307d074ed#签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest    #真实地址
# 联合文件系统的好处:之前下载过的MySQL与其他版本的MySQL有相同的文件时不需要重复下载
# docker pull mysql 等价于: docker pull docker.io/library/mysql:latest


# 指定版本下载
suc@suc-vm:~$ sudo docker pull mysql:5.7


docker rmi 删除镜像

suc@suc-vm:~$ sudo docker rmi -f 镜像id  				 #删除指定镜像
suc@suc-vm:~$ sudo docker rmi -f 镜像id 镜像id 镜像id  	   #删除多个镜像
suc@suc-vm:~$ sudo docker rmi -f $(docker images -aq)     #删除全部镜像

容器命令


说明:有了镜像才可以创建容器,接下来linux下载一个centos镜像来学习

docker pull centos

新建容器并启动

docker run [可选参数] image

# 参数说明
--name="Name"	容器名字 tomcat01 tomcat02 ,用来区分容器
-d              后台方式运行
-it             使用交互方式运行,进入容器查看内容
-p              指定容器的端口 -p 8080:80
	-p  ip:主机(即宿主机)端口:容器端口
	-p  主机端口:容器端口  #这种方式常用
	-p  容器端口
	容器端口P
-P              随机指定端口(大写P)

# 测试,启动并进入容器
suc@suc-vm:~$ sudo docker images
[sudo] suc 的密码: 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0d120b6ccaa8        2 days ago          215MB
mysql               latest              0d64f46acfd1        8 days ago          544MB
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB
suc@suc-vm:~$ sudo docker run -it centos /bin/bash
#(-it 交互式运行)
[root@f779466cce0b /]#         ls#查看容器内的centos,基础版本,很多命令都是不完善的!
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr


#从容器中退回主机
[root@f779466cce0b /]# exit
exit

列出所有运行的容器

# docker ps 命令
(不加) # 列出当前正在运行的容器
-a     # 列出当前正在运行的容器 + 带出历史运行过的容器
-n=?   # 显示最近创建的容器
-q    # 只显示当前容器的编号

suc@suc-vm:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
suc@suc-vm:~$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
f779466cce0b        centos              "/bin/bash"         12 minutes ago      Exited (0) 10 minutes ago                       adoring_taussig
51b858d1de56        hello-world         "/hello"            17 hours ago        Exited (0) 17 hours ago                         bold_wilson
2610884d302b        hello-world         "/hello"            17 hours ago        Exited (0) 17 hours ago                         pedantic_sanderson
suc@suc-vm:~$ sudo docker ps -a -n=1
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
f779466cce0b        centos              "/bin/bash"         12 minutes ago      Exited (0) 10 minutes ago                       adoring_taussig
suc@suc-vm:~$ sudo docker ps -aq
f779466cce0b
51b858d1de56
2610884d302b

退出容器

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 run -d 镜像名
suc@suc-vm:~$ sudo docker run -d centos
49c4865f3282f1061980c00699ebb976db88cf8b3554ed9c95b4091fc1759d0f
suc@suc-vm:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
# 问题docker ps,发现 centos 停止了

# 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止

查看日志

docker logs -f -t --tail 数字 容器id

# 显示日志
-tf 	# 显示日志
--tail  # 要显示的日志条数

suc@suc-vm:~$ sudo docker logs -tf --tail 10 f779466cce0b
2020-08-13T01:45:35.146158236Z [root@f779466cce0b /]# ls
2020-08-13T01:45:35.161950134Z bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
2020-08-13T01:45:35.161966425Z dev  home  lib64  media       opt  root  sbin  sys  usr
2020-08-13T01:47:18.813122758Z [root@f779466cce0b /]# exit
2020-08-13T01:47:18.813190879Z exit

查看容器中进程信息

# 命令 docker top 容器id
suc@suc-vm:~$ sudo docker top f779466cce0b

查看镜像元数据

# 命令
docker inspect 容器id

# 测试
suc@suc-vm:~$ sudo docker inspect f779466cce0b
[
    {
     
        "Id": "f779466cce0b98309c4fa2a46c444fadb731ae0ad92fa534d5249f4d2ad8837c",
        "Created": "2020-08-13T01:45:15.048728235Z",
        "Path": "/bin/bash",
        "Args": [],
        "State":  
                   
                   ..................................
                   
                   
                   
                   "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }
        }
    }
]

进入当前正在运行的程序

# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置

# 命令
docker exec -it 容器id bashShell

# 测试

suc@suc-vm:~$ sudo docker exec -it  49c4865f3282     /bin/bash
# 方式二
docker attach 容器id
# 测试
suc@suc-vm:~$ sudo docker attach 49c4865f3282
正在执行当前的代码...

# docker exec		# 进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach 	# 进入容器正在执行的终端,不会启动新的进程

从容器拷贝文件到主机

docker cp 容器id:容器内目标文件路径  目的主机路径


# 测试
#启动容器,并进入
root@suc-vm:/home/suc# docker run  -it centos /bin/bash
[root@8cb4a15a867f /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@8cb4a15a867f /]# cd /home/
[root@8cb4a15a867f home]# ls

#在容器内新建文件
[root@8cb4a15a867f home]# touch test.py
[root@8cb4a15a867f home]# ls
test.py
[root@8cb4a15a867f home]# exit
exit
root@suc-vm:/home/suc# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
8cb4a15a867f        centos              "/bin/bash"         2 minutes ago       Exited (0) 16 seconds ago                       friendly_franklin
188ba0461c98        centos              "/bin/bash"         10 minutes ago      Up 4 minutes                                    centos01

# 将docker内文件拷贝到主机上
root@suc-vm:/home/suc# docker cp 8cb4a15a867f:/home/test.py  /home/suc/Desktop
root@suc-vm:/home/suc# cd Desktop
root@suc-vm:/home/suc/Desktop# ls
test.py
# 拷贝是一个手动过程,未来我们使用 -v 卷的技术,可以实现自动同步 

小结


attach        # 当前shell下attach连接指定运行的镜像
build         # 通过Dockerfile定制镜像
commit        #提交当前容器为新的镜像
cp            #从容器中拷贝指定文件或目录到宿主机中
create        # 创建一个新的容器,同run,但不启动容器
diff          #查看docker容器的变化
events        # 从docker服务获取容器实时事件
exec          # 在已存在的容器上运行命令
export        # 导出容器的内容流作为一个tar归档文件[对应import]
history       # 展示一个镜像形成历史    
images List   # 列出系统当前的镜像   -
import        # 从tar包中的内容创建一个新的文件系统镜像[对应export]
info          # 显示系统相关信息
inspect       # 查看容器详细信息
kill          # 杀死指定的docker容器
load          # 从一个tar包加载一个镜像[对应save]
login         # 注册或者登录一个docker源服务器
logout     	  # 从当前Docker registry退出
logs          # 输出当前容器日志信息
pause         # 暂停容器
port          # 查看映射端口对应容器内部源端口
ps            # 列出容器列表
pull          # 从docker镜像源服务器拉取指定镜像或库镜像
push          # 推送指定镜像或者库镜像至docker源服务器
rename     	  # 给docker容器重新命名
restart       # 重启运行的容器
rm         	  # 移除一个或者多个容器
rmi       	  # 移除一个或者多个镜像[无容器使用该镜像时才可删除,否则需删除相关容器才可继续或 -f 强制删除]
run        	  # 创建一个新的容器并运行一个命令
save          # 保存一个镜像为一个tar包[对应load]
search     	  # 在docker hub中搜索镜像
start      	  # 启动容器
stats         # 实时显示容器资源使用统计
stop       	  # 停止容器
tag           # 给源中镜像打标签
top           # 查看容器中运行的进程信息
unpause       # 取消暂停容器
update     	  # 更新一个或多个容器配置
version       # 查看docker版本号 
wait          # 阻塞直到一个或多个容器停止,然后打印它们 

你可能感兴趣的:(Docker,docker,linux)