官方说明文档网址:

Install Docker Engine on Ubuntu | Docker Documentation

安装Docker

准备工作

要在 Ubuntu 上开始使用 Docker Engine,请确保满足先决条件,然后 安装 Docker。

先决条件:

要安装 Docker Engine,您需要以下 Ubuntu 版本之一的 64 位版本:

  • Ubuntu Impish 21.10
  • Ubuntu Hirsute 21.04
  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)

本操作说明以18.04版本的Ubuntu作为示例安装。

安装方法

您可以根据需要以不同方式安装 Docker Engine:

1.设置Docker的源码仓库,并从中安装,以便于安装和升级任务。

2.下载 DEB 包并 手动安装并完全手动管理升级。例如在无法访问互联网的系统上安装 Docker。

3.在测试和开发环境中,部分用户选择使用自动化便捷脚本来安装Docker。

安装方法一 使用自动脚本安装:

首先是更新Ubuntu:

sudo apt-get update

dockerfile添加apt下载源 apt install docker_Docker

安装 curl :

sudo apt install curl

dockerfile添加apt下载源 apt install docker_Docker_02

直接使用安装命令:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

dockerfile添加apt下载源 apt install docker_docker_03

 

dockerfile添加apt下载源 apt install docker_docker_04

方法二 :使用代码仓库安装:

在新主机上首次安装 Docker Engine 之前,您需要设置 Docker 存储库。之后,您可以从存储库安装和更新 Docker

设置存储库

更新 apt 包索引。

sudo apt-get update

dockerfile添加apt下载源 apt install docker_ubuntu_05

安装 apt 依赖包,用于通过HTTPS来获取仓库:

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

下图是正确执行的结果

dockerfile添加apt下载源 apt install docker_linux_06

※※※※※※※如果你遇到了错误※※※※※※※※※※※

dockerfile添加apt下载源 apt install docker_linux_07

※※※※※※※可以执行下面的命令※※※※※※※※※※※

先卸载破损的包

sudo apt-get purge libcurl4

 

dockerfile添加apt下载源 apt install docker_docker_08

然后执行

sudo apt-get install curl

dockerfile添加apt下载源 apt install docker_docker_09

都执行完之后重新执行,安装命令

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

添加 Docker 的官方 GPG 密钥:

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add –

dockerfile添加apt下载源 apt install docker_ubuntu_10

验证指纹秘钥

9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。

sudo apt-key fingerprint 0EBFCD88

dockerfile添加apt下载源 apt install docker_ubuntu_11

使用以下指令设置稳定版仓库

sudo add-apt-repository \

   "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \

  $(lsb_release -cs) \

  stable"

 

dockerfile添加apt下载源 apt install docker_linux_12

安装 Docker Engine-Community

更新 apt 包索引。

sudo apt-get update

 

dockerfile添加apt下载源 apt install docker_docker_13

安装最新版本的 Docker Engine-Community 和 containerd ,或者转到下一步安装特定版本:

自动使用最新版本

sudo apt-get install docker-ce docker-ce-cli containerd.io

使用特定版本:

使用命令查询相应版本的版本号

apt-cache madison docker-ce

 

dockerfile添加apt下载源 apt install docker_dockerfile添加apt下载源_14

使用第二列中的版本字符串安装特定版本,例如 5:20.10.12~3-0~ubuntu-bionic。

sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

测试 Docker 是否安装成功,输入以下指令,打印出以下信息则安装成功:

sudo docker run hello-world

下图是你运行正确的结果:

dockerfile添加apt下载源 apt install docker_dockerfile添加apt下载源_15

※※※※※※※如果你遇到了错误※※※※※※※※※※※

 

dockerfile添加apt下载源 apt install docker_docker_16

不要慌,这是因为人家例子默认指定的下载路径是国外的,被国家给封禁了,你修改

/etc/docker/key.json  里的地址就好了。

修改前注意改变一下key.json的权限。

文件修改成以下内容:

{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/","https://hub-mirror.c.163.com","https://registry.docker-cn.com"],
"insecure-registries": ["10.0.0.12:5000"]}

修改保存后再次执行

sudo docker run hello-world

然后你就会看到正确的执行结果了。

卸载 docker

删除安装包:

sudo apt-get purge docker-ce

删除全部的镜像、容器、配置文件等内容:

sudo rm -rf /var/lib/docker

删除容器:

docker rmi  容器的ID

删除镜像:

docker rm –f 镜像ID

自定义镜像修改

可以使用Dockerfile对镜像进行修改

二 如何使用Docker

主机下创建镜像

  1. 启动root权限 sudo su - 然后输入密码
  2. 使用docker pull ubuntu:18.04,完成ubuntu18.04版本镜像下载
  3. 使用docker images,用于下载完毕之后查看镜像情况

dockerfile添加apt下载源 apt install docker_dockerfile添加apt下载源_17

  1. docker rmi <IMAGE ID>,完成镜像删除

例如:docker rmi 0da5273cb2af

创建容器及容器的基本操作命令

主机下启动容器

以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:

docker run -it --name test ubuntu:18.04 /bin/bash

参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • ubuntu: ubuntu 镜像。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
  • 输入  exit  退出容器

主机下查看所有的容器命令如下:

docker ps -a

dockerfile添加apt下载源 apt install docker_Docker_18

主机下查看所有镜像命令

docker images

简单来说,容器可以理解为一个虚拟机,镜像就是装在里面的系统。


使用attach/start/stop/exit命令进入/启动/停止/退出开启的test容器

删除容器:

docker rmi  容器的ID

删除镜像:

docker rm –f 镜像ID

启动

docker start test

进入(执行退出时,会关闭容器)

docker attach test

进入(执行退出时,不会关闭容器)

docker exec -it containerID /bin/bash

下图就是上面两个进入命令的区别,注意看在执行了exit退出之后的docker ps命令的结果

dockerfile添加apt下载源 apt install docker_ubuntu_19

退出

exit

停止

docker stop test

重启

docker restart test

 

dockerfile添加apt下载源 apt install docker_linux_20

停止docker服务:

service docker stop

启动docker服务:

service docker start

导出导入指定容器的镜像:

1.导出容器内的镜像

docker export 0da5273cb2af > ubuntu.tar

0da5273cb2af为container id

ubuntu.tar 为导出的container压缩包

dockerfile添加apt下载源 apt install docker_linux_21

2. 导入特定的镜像到容器内

docker import ubuntu.tar test2:v1

test2:v1  名称:标签

 

dockerfile添加apt下载源 apt install docker_Docker_22

从主机复制到容器

sudo docker cp host_path containerID:container_path

例子:sudo docker cp /home/ly/Desktop/AOS.tar.gz f22e2636b12d:/

从容器复制到主机

sudo docker cp containerID:container_path host_path

例子:sudo docker cp f22e2636b12d:/cmake-3.15.0-rc1.tar.gz /home/ly/Desktop/

主机下连接容器

以桥接的形式创建网络test-net

docker network create -d bridge test-net

查看所有docker网卡信息,

docker network ls

dockerfile添加apt下载源 apt install docker_docker_23

创建一个容器并连接到网络

docker run -itd --name test1 --privileged=true --network test-net ubuntu:20.04 /bin/bash

-t: 在新容器内指定一个伪终端或终端。

-i: 允许你对容器内的标准输入 (STDIN) 进行交互。

-d: 后台运行(attach id 进入容器 exec id 退出容器)

/bin/bash:使用shell脚本进行交互

--name:表示创建container的名字

--privileged=true 用于开启root权限,否则进入container仅能够获取普通用户权限

--network用于连接网卡,此处指定了之前创建的test-net网卡

<ubuntu>:用于指定ubuntu镜像创建一个container

创建第二个容器

docker run -itd --name test2 --privileged=true --network test-net ubuntu:20.04 /bin/bash

然后启动两个终端,分别启动两个容器

docker start XXXXXXXXX

docker attach XXXXXXX

需要通过 ping 命令来证明 test1 容器和 test2 容器建立了互联关系。

那么我们就需要给test1test2 容器内中安装 ping 命令。

安装ping (两个参与测试的容器都需要安装)

apt-get update

apt install iputils-ping

安装好之后

在容器1中使用ping去连接容器2名字。

例:ping test2

dockerfile添加apt下载源 apt install docker_Docker_24

同理可以在容器2中,ping容器1.

例:ping test1

 

dockerfile添加apt下载源 apt install docker_ubuntu_25

安装ifconfig

apt-get update

apt-get install  net-tools

安装ip工具(用于vector ap中开启多播和ipv6地址)

apt-get update

apt-get install iproute2

从主机复制到容器

sudo docker cp host_path containerID:container_path

例子:sudo docker cp /home/ly/Desktop/AOS.tar.gz f22e2636b12d:/

从容器复制到主机

sudo docker cp containerID:container_path host_path

例子:sudo docker cp f22e2636b12d: /cmake-3.15.0-rc1.tar.gz /home/ly/Desktop/

启动

这里以作者创建的test1为例,各位在使用的时候记得更换为自己的容器ID

怎么查找容器ID,请往上翻看如何使用Docker

启动容器

参考命令

docker start f22e2636b12d

进入容器

参考命令

docker attach f22e2636b12d

解压缩所有的包,

参考命令

tar xvf AOS.tar.gz

tar xvf cmake-3.15.0-rc1.tar.gz

安装GCC编译器

apt install build-essential

进入Cmake的文件夹,执行下面的安装命令:

./bootstrap && make && make install

完成之后,在执行

apt-get install cmake

更新cmake的库

安装nano编辑器

apt-get install nano

修改容docker容器的shmsize共享内存大小

df -h 在容器中查看shm大小

service docker stop关闭docker, 否则下面的操作步骤会无效

用cd 进入到下面目录

/var/lib/docker/containers/XXX(容器号)

vim hostconfig.json 修改hostconfig.json中shmsize的大小

本文内容到此结束。

下面的内容是作者自己留着使用的,

apt-get update
apt-get install openjdk-8-jdk

tar zcf CD.tar.gz ./4_D00

docker run -it 0c06e39320a5 /bin/bash

docker rmi 5a214d77f5d7

docker rm -f 47ce6b4c3e55

#sh
 #docker pull centos
 #docker images
 #docker run -it centos:latest /bin/bash
 #download jdk gz
 from centos
 MAINTAINER stormsquirrel hs96.cn@gmail.com
 RUN mkdir /usr/local/java
 ADD jdk-8u261-linux-x64.tar.gz /usr/local/java/
 RUN ln -s /usr/local/java/jdk1.8.0_261 /usr/local/java/jdk
 ENV JAVA_HOME /usr/local/java/jdk
 ENV JRE_HOME ${JAVA_HOME}/jre
 ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
 ENV PATH ${JAVA_HOME}/bin:$PATH
 #docker build -t="centos-jdk" .
 #docker run -it centos-jdk /bin/bash