Docker学习笔记(1)

本文详细介绍了Docker的基本概念,如镜像、容器和仓库,以及如何通过run命令启动、管理容器。重点展示了如何使用Docker部署Web应用,包括拉取镜像、运行容器、日志查看和容器操作,如停止、重启和删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Docker初识

Docker可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
总结:可以打包应用到容器中,移植性强,且轻量级便于部署。

2 Docker架构

在这里插入图片描述

2.1 三个基本概念

镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。(容器是独立运行的一个或一组应用,是镜像运行时的实体。

仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像
总结:镜像是静态的概念,容器是镜像动态运行的实例,可以发生状态的改变如创建、删除

3 run命令运行容器

简单的运行
docker run 命令来在容器内运行一个应用程序
runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo “Hello world”
Hello world

3.1 运行交互式的容器

runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash
root@0123ce188bd8:/# //注意已经进入到容器中了
-t: 在新容器内指定一个伪终端或终端。
-i: 允许你对容器内的标准输入 (STDIN) 进行交互。

可在容器中进行交互,如
root@0123ce188bd8:/# cat /proc/version
Linux version 4.4.0-151-generic (buildd@lgw01-amd64-043) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #178-Ubuntu SMP Tue Jun 11 08:30:22 UTC 2019
root@0123ce188bd8:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@0123ce188bd8:/#

3.2 启动后台模式的容器

runoob@runoob:~$ docker run -d ubuntu:15.10 /bin/sh -c “while true; do echo hello world; sleep 1; done”
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
可通过docker ps来查看运行的容器

4 容器的使用

4.1 从远端获取镜像

$ docker pull ubuntu

4.2 启动容器

$ docker run -it ubuntu /bin/bash
参数说明:
-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit:

4.3 启动一个已经停止的容器

  1. 首先查看所有容器,包括停止和未停止的
    $ docker ps -a
  2. 启动一个已经停止的容器
    $ docker start b750bbbcfd88

4.4 指定容器后台运行

在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec

4.5 进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker attach
或者
docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。

下面演示了使用 docker attach 命令。
$ docker attach 1e560fca3906
当我们使用完容器之后进行exit操作,不仅会从容器中退出,还会停止容器的运行。
下面演示了使用 exec 命令。
docker exec -it 243c32535da7 /bin/bash
当我们使用完容器之后进行exit操作,使用docker ps可查看到刚才的容器。会从容器退出,但不会停止容器。

4.6 停止与重启容器

$ docker stop <容器 ID>
$ docker restart <容器 ID>

4.7 导出与导入容器

导出容器 1e560fca3906 快照到本地文件 ubuntu.tar。
$ docker export 1e560fca3906 > ubuntu.tar
导入容器快照
$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

4.7 删除容器

$ docker rm -f 1e560fca3906

4.8 下面的命令可以清理掉所有处于终止状态的容器。

$ docker container prune

5 使用Docker部署web应用

5.1 获取镜像并运行web应用

runoob@runoob:~# docker pull training/webapp  # 载入镜像
runoob@runoob:~# docker run -d -P training/webapp python app.py

-d:让容器在后台运行。

-P:将容器内部使用的网络端口随机映射到我们使用的主机上。

5.2 查看web应用容器

使用 docker ps 来查看我们正在运行的容器:

这时我们可以通过浏览器访问WEB应用

5.3 查看 web应用程序日志

docker logs [ID或者名字] 可以查看容器内部的标准输出。

runoob@runoob:~$ docker logs -f bf08b7f2cd89
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 -
192.168.239.1 - - [09/May/2016 16:30:37] "GET /favicon.ico HTTP/1.1" 404 

-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

从上面,我们可以看到应用程序使用的是 5000 端口并且能够查看到应用程序的访问日志。

5.4 查看web应用程序容器的进程

我们还可以使用 docker top 来查看容器内部运行的进程

5.5 检查 web应用程序

使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

5.6 停止web应用容器

runoob@runoob:~$ docker stop wizardly_chandrasekhar

5.7 重启web应用容器

停止后重启
runoob@runoob:~$ docker start wizardly_chandrasekhar
已经运行的重启
正在运行的容器,我们可以使用 docker restart 命令来重启。

5.8 移除web应用容器

我们可以使用 docker rm 命令来删除不需要的容器
前提条件是web应用容器必须是关闭状态的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值