Docker 使用

杂记

Docker 使用

安装

镜像

镜像使 Docker 基石,镜像是一个只读模板,可用来创建 Docker 容器。课从 Docker 仓库获得或其他用户获得。

如果要修改镜像内容,只能重新生成,Docker 镜像生成容器以后,容器内引导系统会被卸载,此时容器可读写。

容器

容器是从镜像创建的实例,可以启动、停止、删除。每个容器都是隔离的。

容器在启动时,创建一层 可写层 作为最上层。

仓库

仓库是放镜像的场所,注意区分 仓库仓库库注册服务器 ,仓库注册服务器上往往放着很多仓库,仓库中有包含很多镜像,每个镜像又会包含不同标签。

仓库分为公开仓库和私有仓库。

最大的公开仓库是 Dicker-Hub,国内又 Docker Pool 等,用户也可在本地创建一个私有户创建自己的镜像后,可以 push 到服务器,其他人可以 pull 使用

于 Git 类似。注册服务器类似于 Github

image-20220903002041232image-20220903002041232

镜像的基本操作

pull 拉取镜像

1
docker pull ubuntu:20.04

images 显示镜像列表

1
docker images 

结果:

1
2
3
仓库源			标签		唯一 ID		创建时间		镜像大小
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 11 months ago 13.3kB

使用镜像|创建容器

1
docker run -t -i ubuntu:20.04 /bin/bash

生成一个容器运行

-i : 交互

-t : 终端

/bin/bash 运行的命令

rmi 删除镜像

1
2
docker rmi hello-world # 使用 镜像名
docker rmi ID # 使用镜像 ID

创建镜像

3 个方式

  1. 从已创建镜像更新,并提交
  2. 使用 Dockerfile 指令创建新镜像
  3. 从本地导入

1. 更新已存在镜像

1.1 运行需要修改的容器
1
docker run -t -i ubuntu:20.04 /bin/bash
1.2 在镜像内进行修改

例如:进行升级操作

1
2
3
sudo apt update
sudo apt upgrade
exit # 最后退出
1.3 提交修改

使用 commit 语句

1
docker commit -m="commit comment sth." -a="aja" [容器ID] Ubuntu:20.04  
1.4 使用新的镜像

再次列出镜像, ID 会改变,使用其创建新的容器即可

2. Dockerfile 构建镜像

2.1 Dockerfile 基本语法

一个 Dockerfile 模板

1
2
3
4
5
6
7
8
9
FROM		centos:6.7
MAINTAINER aja "aja@aja.com"
RUN /bin/echo 'root:123456' | chpasswd
RUN useradd runoob
RUN /bin/echo 'cc:123456' | chpasswd
RUN /bin/echo =e "LANG=\"en_US.UTF-8\"" > /etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
  • 使用 # 注释

  • FROM 表示使用哪个镜像作为基础

  • RUN 指令会在创建时运行,可以安装软件包,更新初始化操作

2.2 使用 build 指令生成镜像, -t 添加 tag
1
docker build -t someinfo [file path to dockerfile]

3.从本地导入

image-20220903004327867image-20220903004327867

存出和载入镜像

存出

1
docker save -o ubuntu_20.04.tar ubuntu:20.04

载入

1
docker load --input ubuntu_20.04.tar

镜像的其他用法

docker tag

为镜像添加一个 tag

1
docker tag [镜像 ID] 用户名/镜像源名:新的tag

查找镜像

1
docker search httpd

docker pull

上传镜像至仓库

1
docker push [refers] 

详情看 help

镜像使用小结

image-20220903005050888image-20220903005050888

容器的概念与使用

Docker 基本组件

Docker 的核心组件

  1. Docker 服务端与服务器

    Docker 是 C/S 架构, 客户端向服务器和守护进程发起请求,服务端完成所有工作并返回结果。本地客户端可以连接到其他主机上的守护进程,也可在本地同时运行客户端和守护进程。

    image-20220908225359812image-20220908225359812

  2. Docker 镜像

    镜像是构建 Docker 的基石,体积小,便携,易分享、存储、更新。

    镜像是只读的。

  3. Docker 仓库(Registery)

    [仓库](# 仓库)

  4. Docker 容器

    容器时从镜像创建的运行实例。它可以被启动 、开始、停止、删除。每个容器是相互隔离的、保证安全的平台。

    可以把容器看作一个简易版的 Linux 环境

image-20220903005520393image-20220903005520393

Docker 容器的概念

容器类似一个小型的虚拟机,可读可写。

Docker 容器的使用

启动容器

  1. 新建容器启动 docker run
    1
    2
    3
    docker run -it ubuntu:20.04 /bin/bash
    # -t 让 docker 分配一个伪终端并绑定到容器的标准输入
    # -i 参数让容器的标准输入保持打开

使用 docker run 时, Docker 完成的标准操作包括:

  • 检查镜像是否存在
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读层外挂载一层可写层
  • 从宿主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池分配一个 ip 地址给 容器
  • 执行用户指定应用程序
  • 执行完毕后终止程序
  1. 启动停止的容器
    1
    2
    docker ps -a # 查看所有容器
    docker start [option] [container | id]

使docker后台运行

1
2
docker run -it -d [Container] [cmd]
# -d 参数表示后台运行

终止容器

1
docker stop [container]

当容器中运行的程序终止时,容器也终止

进入容器

1
docker attach [container]
1
docker exec -it [container] cmd

前一个在退出时会停止 docker 运行,后一个在退出后仍然可以运行

终止容器

1
docker stop / kill [container]

导出容器

1
docker export [container] > export_name.tar

image-20220908231117722image-20220908231117722

导入容器

image-20220908231225708image-20220908231225708

删除容器

删除前,需要容运行的容器停止,如果要删除一个正在运行的容器,使用 -f 参数

1
docker rm [container]

Docker 容器的技巧

绑定端口

1
2
docker run -it -d -p 8081:8080 [container]
# 主机的 8081 端口 映射到 docker 的 8080

四种方式:

image-20220908231634859image-20220908231634859

Author: 哒琳

Permalink: http://blog.jieis.cn/2022/82036ddd-81de-4198-aa2f-9369a77567e1.html

Comments