官方说明文档网址:
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。
使用代码仓库安装:
在新主机上首次安装 Docker Engine 之前,您需要设置 Docker 存储库。之后,您可以从存储库安装和更新 Docker。
设置存储库
更新 apt 包索引。
sudo apt-get update
安装 apt 依赖包,用于通过HTTPS来获取仓库:
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
下图是正确执行的结果
※※※※※※※如果你遇到了错误※※※※※※※※※※※
※※※※※※※可以执行下面的命令※※※※※※※※※※※
先卸载破损的包
sudo apt-get purge libcurl4
然后执行
sudo apt-get install curl
都执行完之后重新执行,安装命令
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 –
验证指纹秘钥
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。
sudo apt-key fingerprint 0EBFCD88
使用以下指令设置稳定版仓库
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(lsb_release -cs) \
stable"
安装 Docker Engine-Community
更新 apt 包索引。
sudo apt-get update
安装最新版本的 Docker Engine-Community 和 containerd ,或者转到下一步安装特定版本:
自动使用最新版本
sudo apt-get install docker-ce docker-ce-cli containerd.io
使用特定版本:
使用命令查询相应版本的版本号
apt-cache madison docker-ce
使用第二列中的版本字符串安装特定版本,例如 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
下图是你运行正确的结果:
※※※※※※※如果你遇到了错误※※※※※※※※※※※
不要慌,这是因为人家例子默认指定的下载路径是国外的,被国家给封禁了,你修改
/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
自定义镜像修改
可以使用Dockerfile对镜像进行修改
详见:Docker Dockerfile | 菜鸟教程https://www.runoob.com/docker/docker-dockerfile.html
二 如何使用Docker
主机下创建镜像
- 启动root权限 sudo su - 然后输入密码
- 使用docker pull ubuntu:18.04,完成ubuntu18.04版本镜像下载
- 使用docker images,用于下载完毕之后查看镜像情况
- 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
主机下查看所有镜像命令
docker images
简单来说,容器可以理解为一个虚拟机,镜像就是装在里面的系统。
如果想详细了解二者的区别,可以参考下面的文章:
使用attach/start/stop/exit命令进入/启动/停止/退出开启的test容器
启动
docker start test
进入(执行退出时,会关闭容器)
docker attach test
进入(执行退出时,不会关闭容器)
docker exec -it containerID /bin/bash
下图就是上面两个进入命令的区别,注意看在执行了exit退出之后的docker ps命令的结果
退出
exit
停止
docker stop test
重启
docker restart test
导出导入指定容器的镜像:
1.导出容器内的镜像
docker export 0da5273cb2af > ubuntu.tar
0da5273cb2af为container id
ubuntu.tar 为导出的container压缩包
2. 导入特定的镜像到容器内
docker import ubuntu.tar test2:v1
test2:v1 名称:标签
主机下连接容器
以桥接的形式创建网络test-net
docker network create -d bridge test-net
查看所有docker网卡信息,
docker network ls
创建一个容器并连接到网络
docker run -itd --name test1 --privileged=true --network test-net ubuntu:18.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:18.04 /bin/bash
然后启动两个终端,分别启动两个容器
docker start XXXXXXXXX
docker attach XXXXXXX
需要通过 ping 命令来证明 test1 容器和 test2 容器建立了互联关系。
那么我们就需要给test1、test2 容器内中安装 ping 命令。
安装ping (两个参与测试的容器都需要安装)
apt-get update
apt install iputils-ping
安装好之后
在容器1中使用ping去连接容器2名字。
例:ping test2
同理可以在容器2中,ping容器1.
例:ping test1
安装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/
本文内容到此结束。
下面的内容是作者自己留着使用的,
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