ubuntu20从docker安装到制作自己的镜像使用记录

ubuntu20从docker安装到制作自己的镜像使用记录

第一章:配置环境

1.ubuntu20

2.docker镜像18.04

3.参考:https://www.runoob.com/docker/docker-tutorial.html

第二章:安装docker

一、安装docker

参考1:Ubuntu安装docker并运行测试【docker默认最新,虚拟机版本22.04】

目前docker的几个大的国内镜像站都嘎了,需要配置镜像文件。镜像网址参考:docker镜像加速源配置,目前可用镜像源列举

1.安装教程

python 复制代码
Step1:更新系统软件包
sudo apt update

Step2:安装依赖包【用于通过HTTPS来获取仓库】
sudo apt install apt-transport-https ca-certificates curl software-properties-common

Step3:添加Docker官方GPG密钥
sudo -i
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-ce.gpg

Step4:验证
sudo apt-key fingerprint 0EBFCD88
0EBFCD88 是公钥的指纹。执行这个命令后,系统会显示与该指纹相关的公钥信息。

Step4:添加Docker阿里稳定版软件源
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

Step5:再次更新软件包
sudo apt update

Step6:安装默认最新版
sudo apt install docker-ce docker-ce-cli containerd.io

Step7:测试,安装好后默认启动
sudo docker run hello-world
如果输出"Hello from Docker!"则表示Docker已经成功安装。

Step8:查看有哪些镜像
sudo docker images

Step9:配置用户组
sudo usermod -aG docker galaxfy
su - galaxfy  # 刷新shell状态
docker images # 验证

Step10:其他docker运行命令
查看状态:sudo systemctl status docker
启动:sudo systemctl start docker
开机自启:sudo systemctl enable docker
停止:sudo systemctl stop docker

其他:安装特定版docker
sudo apt-cache madison docker-ce  # 显示可用版本
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io # 将需要的版本替换VERSION_STRING进行安装,例如 5:20.10.17~3-0~ubuntu-focal

2.镜像网址配置

在pull拉取镜像时,如果拉不到文件,可以尝试修改daemon.json文件

依次输入如下指令:

python 复制代码
sudo nano /etc/docker/daemon.json

写入:

python 复制代码
{
  "registry-mirrors": [ "https://docker.registry.cyou",
  "https://hub.uuuadc.top",
  "https://docker.anyhub.us.kg",
  "https://dockerhub.jobcher.com",
  "https://docker.ckyl.me",
  "https://docker.awsl9527.cn",
  "https://docker-cf.registry.cyou",
  "https://dockercf.jsdelivr.fyi",
  "https://docker.jsdelivr.fyi",
  "https://dockertest.jsdelivr.fyi",
  "https://mirror.aliyuncs.com",
  "https://dockerproxy.com",
  "https://mirror.baidubce.com",
  "https://docker.m.daocloud.io",
  "https://docker.nju.edu.cn",
  "https://docker.mirrors.sjtug.sjtu.edu.cn",
  "https://docker.mirrors.ustc.edu.cn",
  "https://mirror.iscas.ac.cn",
  "https://docker.rainbond.cc"
  ]
}

使用的是 nano,可以通过按 Ctrl + O 保存文件,然后按 Enter 确认文件名,最后按 Ctrl + X 退出编辑器。

输入:

python 复制代码
sudo systemctl daemon-reload  
sudo systemctl restart docker

二、验证

终端输入:

python 复制代码
sudo docker run hello-world

出现:

python 复制代码
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:63421b18c1443a9a85139225293fae7541fb40b7832d9deff80b6a9a75ce3604
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

表示安装成功。

第三章:docker的使用

一、hello world

开始学习的第一步,必然是"hello world"!

终端输入:

python 复制代码
sudo docker run ubuntu:18.04 /bin/echo "Hello world"

会报错。

应该是权限问题,增加sudo即可。

python 复制代码
sudo docker run ubuntu:18.04 /bin/echo "Hello world"

输出:

各个参数解析:

  1. docker: Docker 的二进制执行文件。
  2. run: 与前面的 docker 组合来运行一个容器。
  3. ubuntu:18.04 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
  4. /bin/echo "Hello world": 在启动的容器里执行的命令

以上命令完整的意思可以解释为:Docker 以 ubuntu18.04镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。

二、运行交互式的容器

这句话有点拗口,个人理解就是和docker中的容器进行交互。

输入指令:

python 复制代码
sudo su
sudo docker run -i -t ubuntu:18.04 /bin/bash

出现root@3ba0a1b6cfce:字样

表示目前已经进入了新建的ubuntu18.04的docker中了。

再输入指令:

python 复制代码
cat /proc/version
ls

可以看到新建的容器中该文件夹下的目录。

输入指令退出该容器,回到本机环境。

python 复制代码
exit

三、启动容器

创建一个以进程方式运行的容器

python 复制代码
sudo docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

意思是创建一个容器,每秒刷一次hello world,出现

确认容器有在运行,可以通过 docker ps 来查看,输入:

python 复制代码
sudo docker ps

输出

1.CONTAINER ID为容器的ID

2.IMAGE:容器的镜像

3.COMMAND:执行的命令
查看容器内的标准输出

输入

python 复制代码
sudo docker logs ec3075c464ece03d

ec3075c464ece03d:为当前容器的ID,截取前面一部分就行。

停止当前容器

输入:

python 复制代码
sudo docker stop ec3075c464ece03d

使用命令查看

python 复制代码
sudo docker ps

第四章、构建镜像

这一节目标是在第三节拉取的ubuntu18.04中构建python环境,以及运行一个代码示例。

一、确认基础镜像

终端输入:

python 复制代码
sudo docker images

后面将使用ubuntu18.04做为基础镜像,如果没有的话,可以使用如下指令进行pull:

python 复制代码
sudo docker pull ubuntu:18.04

二、构建自己的镜像

1.dockerfile文件编写

为了构建一个带有python3的镜像,编写dockerfile文件如下:

cpp 复制代码
# Dockerfile

# Base images 基础镜像

FROM ubuntu:18.04

# MAINTAINER 维护者信息
maintainer chenjun_1241370589@qq.com
# 设置超时
ENV PIP_DEFAULT_TIMEOUT=100 


#RUN 执行以下命令
RUN apt update
RUN apt install python3 python3-pip -y
RUN pip3 install --upgrade pip setuptools
RUN pip3 cache purge
RUN pip3 install opencv-python==4.5.5.62 -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装 OpenCV  
RUN apt-get update && apt-get install -y \   
    libgl1-mesa-glx  # 安装 OpenGL 库  
# 其他依赖和设置


RUN pip3 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple 
RUN apt install libgl1-mesa-glx
RUN mkdir -p /data/code/

#拷贝文件至工作文件夹
COPY test.py /data/code/test.py

#工作目录
WORKDIR /data/code/

#容器启动时执行的命令
CMD ["python3","test.py"]

2.编写测试文件

在dockerfile同级文件夹下,编写test.py文件,test.py文件中写入:

python 复制代码
import numpy as np
import cv2
print("Useing Opencv")
# 创建一个200x200的黑色图像,默认数据类型是uint8,范围是0-255
# 这里使用0作为颜色值,表示黑色
blank_image = np.zeros((200, 200, 3), dtype="uint8")

print("blank_image",blank_image)


3.构建指令

在dockerfile文件夹下,开启终端,输入如下指令

python 复制代码
sudo docker build -t cj-python3:v2.0 . -f Dockerfile

接下来docker将会按照dockerfile中的内容进行构建。

等待构建完成。

4.测试

输入指令:

python 复制代码
sudo docker run -i -t cj-python3:v2.0

将会输出:

输入指令:

python 复制代码
sudo docker run -i -t cj-python3:v2.0 /bin/bash

cd到工作文件夹下(data/code/),输入指令:

python 复制代码
ls

可以查看到工作文件夹下的文件情况

输入"exit"即可退出当前镜像。
5.删除镜像

删除镜像指令:

python 复制代码
docker rmi <镜像ID或名称>

强制删除镜像指令:

python 复制代码
docker rmi -f <镜像ID或名称>
相关推荐
梁萌8 分钟前
Linux安装Docker
linux·运维·docker·helloworld·容器化部署
翱翔-蓝天10 分钟前
在 CentOS 系统上安装 ClickHouse
运维·docker·容器
SRExianxian2 小时前
kubernetes存储架构之PV controller源码解读
容器·架构·kubernetes
cdg==吃蛋糕4 小时前
docker代理配置
docker·容器·eureka
web135085886354 小时前
使用docker compose安装gitlab
docker·容器·gitlab
IT机器猫5 小时前
Docker完整技术汇总
运维·docker·容器
董健正5 小时前
Docker安装
docker·容器·docker-compose
gs801405 小时前
替换 Docker.io 的 Harbor 安全部署指南:域名与 IP 双支持的镜像管理解决方案
docker·harbor
coco_1998_25 小时前
nvidia docker, nvidia docker2, nvidia container toolkits区别
docker·容器
团儿.6 小时前
Docker服务发现新纪元:探索Consul的无限魅力
运维·docker·云计算·服务发现·consul