Docker学习笔记(二)

Docker学习笔记(二)

1.Docker的常用命令

1.1帮助命令

docker version        # 显示docker的版本信息
docker info              # 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help         # 帮助命令

1.2镜像命令

1.2.1docker images

docker images查看所有本地的主机上的镜像
在这里插入图片描述

#解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小
#命令参数可选项
-a, --all # 显示所有镜像 (docker images -a)
-q, --quiet # 仅显示镜像id (docker images -q)

在这里插入图片描述

1.2.2docker search

docker search搜索镜像
在这里插入图片描述

1.2.3docker pull

docker pull下载镜像

# 下载镜像:docker pull 镜像名[:tag]
[root@jiang ~]# docker pull mysql
Using default tag: latest            # 如果不写tag,默认就是latest,最新的版本


72a69066d2fe: Pull complete            # 分层下载,docker image的核心,联合文件下载
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
.....


# 两个命令是等价的
docker pull mysql
docker pull docker.io/library/mysql:latest

# 指定版本下载
[root@jiang ~]# docker pull mysql:5.7


5.7: Pulling from library/mysql
72a69066d2fe: Already exists        # 联合文件下载,已经存在的资源可以共用
93619dbc5b36: Already exists

0ceb82207cd7: Pull complete
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
1.2.4docker rmi

docker rmi删除镜像

[root@jiang ~]# docker  rmi -f 镜像id                    # 删除指定的镜像
[root@jiang ~]# docker rmi -f 镜像id 镜像id 镜像id    # 删除多个镜像(空格分隔)
[root@jiang ~]# docker rmi -f $(docker images -aq)    # 删除全部的镜像

在这里插入图片描述

1.3容器命令

1.3.1新建容器并启动

说明:我们有了镜像才可以创建容器,linux,下载一个centos 镜像来测试学习。
docker pull centos

docker run [可选参数] image
# 参数说明
--name="name"        容器名字:用来区分容器
-d                    后台方式运行:相当于nohup
-it                    使用交互式运行:进入容器查看内容
-p                    指定容器的端口(四种方式)小写字母p
    -p ip:主机端口:容器端口
    -p 主机端口:容器端口
    -p 容器端口
    容器端口
-P                     随机指定端口(大写字母P)

在这里插入图片描述
测试:启动并进入容器

[root@jiang ~]# docker run -it centos

[root@59b0cea58f66 /]# ls # 查看容器内的centos(基础版本,很多命令都是不完善的)
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr

# 从容器中退回到主机
[root@59b0cea58f66 /]# exit
exit
[root@jiang ~]# 
1.3.2列出所有运行的容器
docker ps    # 列出当前正在运行的容器
# 命令参数可选项
-a        # 列出当前正在运行的容器+历史运行过的容器
-n=?    # 显示最近创建的容器(可以指定显示几条,比如-n=1)
-q        # 只显示容器的编号

在这里插入图片描述

1.3.3退出容器
exit        # 容器直接停止,并退出
ctrl+P+Q    # 容器不停止,退出

在这里插入图片描述

1.3.4删除容器
docker rm 容器id                    # 删除容器(不能删除正在运行的容器)如果要强制删除:docker rm -f 容器id
docker rm -f $(docker ps -aq)        # 删除全部容器
docker ps -a -q|xargs docker rm        # 删除所有容器
1.3.5启动和停止容器的操作
docker start 容器id        # 启动容器
docker restart 容器id    # 重启容器
docker stop 容器id        # 停止当前正在运行的容器
docker kill 容器id        # 强制停止当前容器

在这里插入图片描述

1.4常用其他命令

1.4.1后台启动容器
# 命令docker run -d 镜像名
[root@jiang ~]# docker run -d centos
# 问题:docker ps发现centos停止了
# 常见的坑:docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止。
# 比如:nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

解释:首先,docker run -it centos 的意思是,为centos这个镜像创建一个容器, -i和-t这两个参数的作用是,为该docker创建一个伪终端,这样就可以进入到容器的交互模式?(也就是直接进入到容器里面)后面的/bin/bash的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself,这样当你使用docker ps 查看启动的容器时,就会发现你刚刚创建的那个容器并不在已启动的容器队列中。这个/bin/bash就表示启动容器后启动bash。

1.4.2查看日志

docker logs -tf --tail 容器id

1.4.3查看容器中进程的信息

docker top 容器id

1.4.4查看镜像的元数据

docker inspect 容器id

1.4.5进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
# 命令
docker exec -it 容器id /bin/bash


# docker exec        # 进入容器后开启一个新的终端,可以再里面操作(常用)
# docker attach        # 进入容器正在执行的终端,不会启动新的进程。
1.4.6从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的主机的路径
[root@cf9843583a2a /]# cd /home
[root@cf9843583a2a home]# pwd
/home
[root@cf9843583a2a home]# touch test.java
[root@cf9843583a2a home]# exit
exit
[root@jiang ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@jiang ~]# docker run -it centos /bin/bash
[root@1ff2d34d77eb /]# [root@jiang ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
1ff2d34d77eb   centos    "/bin/bash"   25 seconds ago   Up 24 seconds             romantic_wiles
[root@jiang ~]# docker cp 1ff2d34d77eb:/home/test.java /home
Error: No such container:path: 1ff2d34d77eb:/home/test.java
[root@jiang ~]# docker attach 1ff2d34d77eb
[root@1ff2d34d77eb /]# pwd
/
[root@1ff2d34d77eb /]# cd /home
[root@1ff2d34d77eb home]# ls
[root@1ff2d34d77eb home]# ls
[root@1ff2d34d77eb home]# touch test.java
[root@1ff2d34d77eb home]# ls
test.java
[root@1ff2d34d77eb home]# read escape sequence
[root@jiang ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
1ff2d34d77eb   centos    "/bin/bash"   2 minutes ago   Up 2 minutes             romantic_wiles
[root@jiang ~]# docker cp 1ff2d34d77eb:/home/test.java /home
[root@jiang ~]# cd /home
[root@jiang home]# ls
abc.txt    hello.txt   myhome.zip    pig        test.sh    user_4  zwj
apple.txt  jack        my.sh         sa         tom        user_5
ba         jerry       MyTest.class  tag        tomcat.sh  v.sh
equal.sh   jiaoben.sh  MyTest.java   tang       user_1     wu
fox        mac         oper.sh       temp       user_2     xh
hello.sh   mycal       orange.txt    test.java  user_3     xq
[root@jiang home]# 

在这里插入图片描述

1.5小结

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值