docker简介
docker容器将一段软件包装在一个完整的文件系统中,该文件系统包含运行所需的所有内容:代码、运行时、系统工具、系统库—任何可以安装在服务器上的内容。这就保证了无论环境如何,软件都将始终以相同的方式运行。
使用docker的3步
- 在计算机或者远程系统上安装Docker
- 从docker hub中提取预编译的docker 镜像
- 每次工作时,将docker镜像作为一个新容器运行
ubutun 上 docker engine安装步骤
1. 操作系统要求
- Ubuntu Hirsute 21.04
- Ubuntu Groovy 20.10
- Ubuntu Focal 20.04 (LTS)
- Ubuntu Bionic 18.04 (LTS)
- Ubuntu Xenial 16.04 (LTS)
2. 旧版本卸载
旧版本的docker一般叫做docker,docker.io,或者docker-engine。如果已经安装,需要先将旧版本卸载
sudo apt-get remove docker docker-engine docker.io containerd runc
当前版本的docker中包含的内容(镜像,容器,卷和网络)放在/var/lib/docker中。
3. 安装步骤
目前有3种安装docker的方法:
3.1 推荐方法:设置docker的repository并从中安装,以遍于安装和升级任务
在新主机上首次安装Docker引擎之前,需要设置Docker repository。之后,可以从repository安装和更新Docker。
3.1.1 设置repository
更新apt程序包索引并安装程序包,并且允许apt通过HTTPS使用repository:
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
3.1.2 添加docker官方GPG秘钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
3.1.3 使用以下命令设置稳定的repository
x86-64/amd64
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
arm64
echo \
"deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
armhf
echo \
"deb [arch=armhf signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
添加nightly或者test repository时,在上面的命令中的单词stable后面添加单词nightly或test(或两者)。
3.1.4 安装docker engine
- 更新apt package 索引,安装最新版本的docker engine和contiainerd,或者进入下一步安装特定版本
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
- 安装特定版本的docker engine,在repo中选择可用版本,然后选择并安装。
a.列出你的repo中的可用版本
apt-cache madison docker-ce
b. 使用第二列中的版本字符串安装特定版本,例如5:18.09.1~3-0~ubuntu xenial。
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
- 通过运行hello world映像来验证Docker引擎安装是否正确。
sudo docker run hello-world
至此, Docker引擎已安装并运行。docker组已创建,但未添加任何用户。您需要使用sudo来运行Docker命令。继续Linux postinstall以允许非特权用户运行Docker命令和其他可选配置步骤。
3.1.4 升级Docker-Engine
要升级Docker引擎,首先运行sudo apt get update,然后按照安装说明,选择要安装的新版本。
3.2 在没有互联网接入的系统上安装docker:下载deb包并手动安装,完全手动管理引擎
如果不能使用Docker的存储库来安装Docker引擎,可以下载.deb文件并手动安装。每次升级Docker时都需要下载一个新文件。
- 去https://download.docker.com/linux/ubuntu/dists/,选择您的Ubuntu版本,然后浏览pool/stable/,选择amd64、armhf或arm64,并下载要安装的Docker引擎版本的.deb文件。
注意:要安装nightly或test(预发行版)软件包,请将上面URL中的单词stable更改为nightly或test。
- 安装Docker Engine,将下面的path更改为下载Docker包的路径。
sudo dpkg -i /path/to/package.deb
- 通过运行hello world映像来验证Docker引擎安装是否正确
sudo docker run hello-world
3.3 在测试和开发环境中:自动化的便利脚本安装docker
Docker在get.Docker.com和test.Docker.com上提供了方便的脚本,用于快速、非交互地将edge和testing版本的Docker Engine-community安装到开发环境中。脚本的源代码位于docker安装库中。不建议在生产环境中使用这些脚本,在使用它们之前,您应该了解潜在的风险:
-
这些脚本需要root或sudo权限才能运行。因此,在运行脚本之前,应该仔细检查和审计脚本。
-
这些脚本试图检测Linux发行版和版本,并配置包管理系统。此外,脚本不允许自定义任何安装参数。这可能导致不受支持的配置。
-
这些脚本安装包管理器的所有依赖项和建议,而无需进行确认。这可能会安装大量软件包,具体取决于主机的当前配置。
-
该脚本不提供指定要安装哪个版本的Docker的选项,而是安装在“edge”频道中发布的最新版本。
-
如果Docker已使用其他机制安装在主机上,请不要使用便利脚本。
本例使用get.docker.com上的脚本在Linux上安装最新版本的docker Engine-Community。要安装最新的测试版本,请改用test.docker.com。在下面的每个命令中,用test替换每次出现的get。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
4.uninstall docker engine
- 卸载docker engine,cil和 containerd packages:
sudo apt-get purge docker-ce docker-ce-cli containerd.io
- 在主机上的images,containers,volumes或者用户配置文件不会自动删除。通过运行以下命令删除
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
docker容器构建脚本
#/bin/bash
set -e
#Image name
MY_IMAGES="orion:latest"
#Docker container name
MY_CONTAINER=orion_test
#####Modify according to your development environment#####
#SDK path on the host
PATH_WORKSPACE_HOST="/home/xxy/orion"
PATH_WORKSPACE_HOST_DATA="/home/xxy/orion"
#Work path on the docker container
PATH_WORKSPACE_DOCKER="/home/xxy/orion"
PATH_WORKSPACE_DOCKER_DATA="/home/xxy/orion"
##########################################################<200b>
echo $MY_CONTAINER
num=$(docker ps -a|grep -w "$MY_CONTAINER$"|wc -l)
echo $num
if [ $num -eq 0 ];
then
#sudo xhost +
docker run --gpus device=0 -e DISPLAY=unix$DISPLAY --privileged=true \
-p 2255:22 \
--net=bridge --pid=host --ipc=host -v /tmp/.X11-unix:/tmp/.X11-unix \
-it -v $PATH_WORKSPACE_HOST:$PATH_WORKSPACE_DOCKER \
-v $PATH_WORKSPACE_HOST_DATA:$PATH_WORKSPACE_DOCKER_DATA \
-w $PATH_WORKSPACE_DOCKER \
--name $MY_CONTAINER $MY_IMAGES /bin/bash
else
docker start $MY_CONTAINER
docker exec -ti $MY_CONTAINER /bin/bash
fi