Docker基本组成 和 基本命令

此篇为Docker笔记,文章可能存在疏忽,建议直接观看原视频。
视频地址:https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0

Docker基本组成 和 基本命令

img

  • 镜像 image:就好比一个模板,可以通过这个模板创建容器服务。例如:tomcat镜像===>run===>tomcat容器(提供服务),通过这个镜像可以创建多个容器(最终服务/项目运行就是在容器中);
  • 容器 container:Docker运用容器技术,运行一个或一组应用;操作:启动、停止、删除;
  • 仓库 repository:存放镜像的地方;公有仓库、私有仓库;
测试安装成功

在这里插入图片描述
在这里插入图片描述

使用帮助:https://docs.docker.com/engine/reference/commandline/cli/

常用命令

镜像和容器的区别?

简单点说,镜像就类似操作系统光盘介质,容器相当于通过光盘安装后的系统。通过光盘(镜像),我们能在不同机器上部署系统(容器),系统内的操作只会保留在当前的系统(容器)中,如果要升级系统,需要使用到光盘,但是可能会导致操作系统的数据丢失

镜像命令

docker images

$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED      SIZE
hello-world   latest    feb5d9fea6a5   4 days ago   13.3kB
#只显示image id
$ docker images -q
feb5d9fea6a5

docker search 查询 (或者直接在dockerhub上查询)

$ docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11480     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4356      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   849                  [OK]
# 可选项
--filter=STARS=4000 # 过滤 STARS大于4000的镜像

docker pull 下载

# 默认下载最新版 [:tag]指定版本  docker pull mysql:5.7
$ docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
07aded7c29c6: Pull complete  # 分层下载 docker image的核心 联合文件系统
f68b8cbd22de: Pull complete 
30c1754a28c4: Pull complete 
1b7cb4d6fe05: Pull complete 
79a41dc56b9a: Pull complete 
00a75e3842fb: Pull complete 
b36a6919c217: Pull complete 
635b0b84d686: Pull complete 
6d24c7242d02: Pull complete 
5be6c5edf16f: Pull complete 
cb35eac1242c: Pull complete 
a573d4e1c407: Pull complete 
Digest: sha256:4fcf5df6c46c80db19675a5c067e737c1bc8b0e78e94e816a778ae2c6577213d  # 签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest  # docker pull mysql 等价于 docker pull docker.io/library/mysql:latest


$ docker pull mysql:5.7
5.7: Pulling from library/mysql
07aded7c29c6: Already exists # 已经存在的资源不会重复下载
f68b8cbd22de: Already exists 
30c1754a28c4: Already exists 
1b7cb4d6fe05: Already exists 
79a41dc56b9a: Already exists 
00a75e3842fb: Already exists 
b36a6919c217: Already exists 
5e11fe494f45: Pull complete 
9c7de1f889a7: Pull complete 
cf6a13d05a76: Pull complete 
fc5aa81f393a: Pull complete 
Digest: sha256:360c7488c2b5d112804a74cd272d1070d264eef4812d9a9cc6b8ed68c3546189
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

docker rmi 删除

$ docker rmi -f 镜像id 镜像id
$ docker rmi -f $(docker iamges -aq) # $()传递参数,表示删除全部镜像
容器命令

有了镜像才可以创建容器,下载一个centos镜像来测试。

$ docker pull centos

新建容器并启动

$ docker run [可选参数] imageId
# 参数说明
--name="Name"        容器名称
-d                   后台运行方式
-it                  使用交互方式运行,进入容器查看内容
-p                   指定容器端口
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口
	-p 容器端口
	容器端口
-P                   随机指定端口

# 启动并进入容器  -it 以交互的方式运行
[root@zcz /]$ docker run -it centos
[root@46e93dbe3361 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@46e93dbe3361 /]# exit

列出运行中的容器

#docker ps
	-a # 正在运行的容器 + 曾经运行的容器
	-n=? # 最近创建的容器
	-q # 显示正在运行的容器id
$ docker ps
$docker ps -a 
CONTAINER ID   IMAGE         COMMAND       CREATED         STATUS                     PORTS     NAMES
46e93dbe3361   centos        "/bin/bash"   4 minutes ago   Exited (0) 2 minutes ago             goofy_gagarin
f1e91564c179   hello-world   "/hello"      24 hours ago    Exited (0) 24 hours ago              distracted_chaplygin

退出容器

exit # 退出并停止容器
Ctrl + P + Q # 退出容器,但不停止

删除容器

$ docker rm 容器id 容器id # 不能删除运行中的容器,可以使用-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 centos
# 常见的坑:后台启动之后,docker ps发现centos停止了,why?
# 容器后台运行,就必须要有一个前台程序,docker发现没有应用,就会停止。

查看CPU状态

$ docker stats

查看日志

$ docker logs -ft --tail 10 容器id 

查看容器中进程信息

$ docker top 容器id

查看镜像元数据

$ docker inspect 镜像id

进入当前正在运行的容器

# 通常容器都是以后台方式运行,有时需要进入容器,修改一些配置
$ docker exec -it 容器id /bin/bash # 进入容器之后开启一个新的终端
# 方式二
$ docker attach 容器id    # 进入容器正在执行的终端,不会启动新进程

从容器拷贝文件到主机

$ docker cp 容器id:容器内路径 目的主机路径
# 后期可以使用卷的技术实现一个同步
[root@0c219b26f861 /]# cd home/
[root@0c219b26f861 home]# ls
[root@0c219b26f861 home]# touch hello.go
[root@0c219b26f861 home]# ls
hello.go
[root@0c219b26f861 home]# exit
exit
root@zcz:/home$ docker cp 0c219b26f861:/home/hello.go /home/
root@zcz:/home$ ls
hello.go  zhuchangzhen
小结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值