关于docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Ubuntu下载安装docker

apt install docker.io

Docker构建一个自己的Ubuntu镜像

  1. 查看可以pull的docker镜像

    docker search ubuntu

image.png

  1. pull一个镜像

    docker pull ubuntu docker images

image.png

  1. 以前台的方式为刚刚下载的ubuntu创建容器,并进入shell

    docker run -it ubuntu /bin/bash

image.png

  1. 给容器换源

先查看当前ubuntu版本

cat /etc/issue

image.png
先删除原来国外的源文件source.list

rm /etc/apt/sources.list

创建一个新的文件,文件名还是source.list。因为Docker下的Ubuntu系统无vim和gedit等编辑器,需要我们使用cat命令批量写入多行内容到指定文件,如下所示。

cat>/etc/apt/sources.list<<EOF

上面这条命令表示输入了EOF三个字符后才结束输入。
执行完成上面的语句后就可以复制阿里云的源信息,然后以EOF这三个字符作为最后一行

Ubuntu20.04 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

image.png
然后使用cat /etc/apt/sources.list输出文件信息,过程如下。
image.png

  1. 更新apt

使用如下命令更新apt

apt update

  1. 安装build-essential

使用如下命令安装build-essential

apt install build-essential

查看以下gcc版本,如果输出gcc版本则说明安装成功

gcc —version

image.png

  1. 生成镜像

我们需要基于当前已经配置好的容器生成镜像,方便后面操作。
不要退出当前容器,再新建一个终端,一下操作均在新终端下完成。
生成镜像命令

docker commit -m “description” -a “author” <容器id> repository:tag

  • “description”:描述信息。
  • “author”:作者名
  • <容器id>:可以在旧终端那里看到,形如root@b4b27d66570a:/#。可以看到<容器id>是b4b27d66570a。
  • reposiory:镜像仓库名,任取即可。
  • tag:镜像标签名,任取即可。

本例中使用命令为:

docker commit -m “ubuntu 20.04 with aliyun and build-essential” -a “hyx” b4b27d66570a ying:Ubuntu20.04

执行完成后查看是否生成镜像

docker images

可以看到镜像ying在输出结果中。
image.png

Docker常见命令

docker命令 作用
docker search XXX 查找XXX命令
docker pull XXX 获取XXX镜像,默认是latest
docker images 查看当前的镜像
dockers rmi $(docker images -q) 删除所有镜像
docker ps -a 查看所有容器(包括已经停止的)
docker run -t -i centos /bin/bash 启动某个镜像
docker start/stop/rm CONTAINER ID 开始/停止/删除某个容器
docker stop $(docker ps -aq) 停止所有容器
docker rm $(docker ps -aq) 删除所有容器
docker export 导出docker export imageld > ubuntu.tar
docker import 导入镜像 docker import ubuntu.tar ubuntu:1.8丢弃所有的历史记录和元数据信息
docker load 同 docker import 但保存所有的历史记录和元数据信息
docker login 登录
docker logout 登出
docker pause 容器名/容器ID 暂停
docker unpause 容器名/容器ID 从暂停继续
docker commit 容器名/容器ID 将容器生成新的镜像
docker kill 容器名/容器ID 强行停止容器
docker rename 容器名/容器ID 重命名容器
docker push 镜像名/镜 像ID 把镜像推到远程仓库便于使用