Task02:Docker镜像与容器

学习资料:

  1. 【狂神说Java】Docker最新超详细版教程通俗易懂
  2. DataWhale Docker开源教程

Docker镜像与容器

#下载一个centos镜像来测试
docker pull centos
#新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name"  容器名字,tomcat01 tomcat02,用来区分容器
-d                     后台方式运行
-it                    使用交互方式运行,进入容器查看内容
-p                     指定容器的端口 -p 8080:8080
    -p     ip:主机端口:容器端口
    -p     主机端口:容器端口  (常用)
    -p     容器端口
-P                    随机指定端口

#测试,启动并进入容器
[hongsen@SEN /]docker run -it centos /bin/bash
[root@c20a1e457220 /]# ls  #查看容器内的centos,基础版本,很多命令都是不完善的
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@c20a1e457220 /]# exit  #从容器退回主机
exit
列出所有的运行的容器
docker ps # 列出当前运行的容器
-a        列出当前正在运行的容器+曾经运行过的容器,包括未运行的(例如异常退出(Exited)状态的容器)
-n=?      显示最近创建的容器
-q        只显示容器的编号
退出容器
exit         直接容器停止并退出
crtl+P+Q     容器不停止但退出
删除容器
docker rm 容器id                       删除指定的容器(不能删除正在运行的容器)
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 镜像名
$docker run -d centos
# 问题 docker ps,发现centos 停止了
# 常见的坑:docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx, 容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
查看日志
docker logs -f -t --tail 数字 容器
$docker run -d centos /bin/sh -c "while true;do echo aaa;sleep 1;done"
$docker ps
# 显示日志
-tf             显示日志
--tail 数字      要显示的日志条数
$docker logs -tf --tail 10 容器id
查看容器中进程信息
docker top 容器id
查看镜像的元数据
docker inspect 容器id
进入当前正在运行的容器
# 通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
# 方式一
docker exec -it 容器id bashShell
# 测试
$docker exec -it 20bca89f485b /bin/bash
[root@20bca89f485b /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@20bca89f485b /]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 14:37 pts/0    00:00:00 /bin/bash
root        16     0  0 14:58 pts/1    00:00:00 /bin/bash
root        31    16  0 14:58 pts/1    00:00:00 ps -ef

# 方式二
docker attach 容器id  (如果当前容器有命令正常运行,可以看到正在运行的命令,而不是开启一个窗口)
# 测试
$docker attach 20bca89f485b
[root@20bca89f485b /]#

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

从容器内拷贝文件到主机

docker cp 容器id:容器内路径 目的主机路径
# 测试
# 进入docker容器内部
$docker attach 20bca89f485b
[root@20bca89f485b /]# cd /home
[root@20bca89f485b home]# ls
# 在容器内新建一个文件
[root@20bca89f485b home]# touch forcopy.sh
[root@20bca89f485b home]# ls
forcopy.sh
[root@20bca89f485b home]# exit
exit
# 拷贝测试
$su root
Password:
root@SEN:/home/hongsen# docker cp 20bca89f485b:/home/forcopy.sh /home
root@SEN:/home/hongsen# ls /home
forcopy.sh  hongsen

# 拷贝是一个手动国产,使用-v 数据卷的方法,可以实现自动同步

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值