【Linux】Linux for Ubuntu 18.04 安装Docker

本文详细介绍了如何在 Ubuntu 18.04 上安装 Docker,包括 Docker 的基本概念、优点及应用场景。通过官方教程和实践步骤演示了 Docker 的安装过程,并提供了容器的创建、管理、镜像操作以及 TensorFlow 环境的搭建。此外,还解答了 Docker 使用中常见的问题,如容器环境的保存和恢复,以及解决无法停止容器的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker简介

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

Docker的应用场景

  1. Web 应用的自动化打包和发布。
  2. 自动化测试和持续集成、发布。
  3. 在服务型环境中部署和调整数据库或其他的后台应用。
  4. 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Docker 的优点

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
1.快速,一致地交付您的应用程序
2.响应式部署和扩展
3.在同一硬件上运行更多工作负载

Linux for Ubuntu 18.04 安装Docker

官方安装教程:https://docs.docker.com/engine/install/ubuntu/
实践教程:

  1. 在 Linux 机器上打开一个新的 Shell。
  2. 使用wget从 https://get.docker.com 获取并运行 Docker 安装脚本,然后采用 Shell 中管道(pipe)的方式来执行这个脚本。
$ wget -qO- https://get.docker.com/ | sh
  1. 最好通过非 root 用户来使用 Docker。这时需要添加非 root 用户到本地 Docker Unix 组当中。
    下面的命令展示了如何把名为 wanji 的用户添加到 Docker 组中,以及如何确认操作是否执行成功。
$ sudo usermod -aG docker wanji
$ cat /etc/group | grep docker
docker:x:999:wanji

如果当前登录用户就是要添加到 Docker 组中的用户的话,则需要重新登录(重启),组权限设置才会生效。
4) 至此 Docker 已经在 Linux 上安装成功。运行下面命令来确认安装结果。

$ docker --version
Docker version 18.03.0-ce, build 0520e24
$ docker-compose --version
docker-compose version 1.20.1, build 5d8c71b
$ docker-machine --version
docker-machine version 0.14.0, build 89b8332
  1. Docker image
  • 将 image(镜像)文件从仓库抓取到本地
docker image pull hello-world
  • 列出本机的所有 image 文件。
$ docker image ls
  • 删除 image 文件
$ docker image rm [imageName]
  1. 测试docker,国际惯例
docker run -it hello-world

在这里插入图片描述

FAQ

保存原有容器环境

1.停止docker

 docker stop [container ID/ name]

2.列举已存在的container

 docker ps -l

3.重启某个container

 docker restart [name]

4.进入container

 docker exec -it [name] /bin/bash

【PS.切忌docker run [image],这样是以这个镜像重新创建一个新的容器,环境恢复为默认】

docker中文社区

https://www.docker.org.cn/

抓取TensorFlow images

docker pull daocloud.io/daocloud/tensorflow:latest
【PS.镜像仓库daocloud.io/daocloud,速度较快】

docker安装TensorFlow2.0 + jupyter lab

https://blog.csdn.net/weixin_41668848/article/details/106625140
(创建新的容器后,可以关闭,但是不能删除。若删除了,配置的环境就清空了。)

更改镜像仓库

https://www.php.cn/docker/447165.html

容器的相关操作

容器的创建、查看、删除

docker run [-it] some-image 创建某个镜像的容器。注意,同一个镜像可以通过这种方式创建任意多个container. 加上-it之后,可以创建之后,马上进入交互模式。
docker ps列出当前运行的容器
在这里插入图片描述
docker ps -a列出所有的容器,包括运行的和不运行的
在这里插入图片描述
docker rm container-id删除某个容器

容器的启动、进入、退出

docker start [-i] [container-id]启动某个容器,必须是已经创建的。 加上-i 参数之后,可以直接进入交互模式;
进入交互模式之后,怎么退出呢: - 想退出但是保持容器运行,按CTRL+Q+P三个键 - 退出,并关闭停止容器,按CTRL+D或者输入exit再回车

注:Ctrl+P+Q按的时候有时候会不灵,多按几次!

容器的停止、重启: docker stop [container-id] docker restart [container-id]

Docker jupyter lab 服务

创建配置文件

cd /home/wanji/lxy/tensorflow/work #进入work
mkdir config  #再建一个文件夹
cd config     #进入config
touch config.json  #建立一个.json格式的文件

config.json

{
    "NotebookApp":{
            "ip":"*",
            "port":8888,
            "password":"",
            "open_browser":false,
            "token":"",
            "allow_root":true
    }
}

挂载

docker run -it -p 8888:8888 --ipc=host -v /home/wanji/lxy/tensorflow/work:/work daocloud.io/daocloud/tensorflow:latest --name [container name] /bin/bash

其中:
-it为直接进入交互式
-p 8888:8888是把主机的8888端口映射到容器的8888端口
--ipc=host可以让容器与主机共享内存
--name xxxxx给容器定义一个个性化名字
-v /home/wanji/lxy/tensorflow/work:/work 可以将主机上的/home/wanji/lxy/tensorflow/work地址挂载到容器里,并命名为/ work文件夹,这样这个文件夹的内容可以在容器和主机之间共享了。因为容器一旦关闭,容器中的所有改动都会清除,所以这样挂载一个地址可以吧容器内的数据保存到本地。 daocloud.io/daocloud/tensorflow:latest则是镜像.
经过上面的操作,直接进入容器了,用ls命令,可以看到产生了 work文件夹!
在这里插入图片描述

安装jupyter lab

pip3 install jupyterlab

在这里插入图片描述

work文件

在这里插入图片描述
这里你会看到 work文件下,有一个config文件夹。能cd进入work文件下,就证明该容器挂载本地文件成功了。

开启jupyter lab

在work 文件下开启
在这里插入图片描述
命令行里有config.json ,相当于一个启动前的预读文件。包含了IP,端口号,密码,token, 等命令.
有了这个config.json后我们就不用每次启动时都要在jupyter lab 后面敲一串 端口号,IP 什么的。省了很多事情。

开启后模式

在这里插入图片描述
红色框的链接复制到浏览器打开。

jupyter lab导入tensorflow

在这里插入图片描述

容器备份

Q:服务器需要重装,于是将配置好的环境进行备份,后面重新加载。
A:
先通过docker ps或者docker ps -a来查看你想备份的容器的id, 然后通过:

docker commit -p [your-container-id] [your-backup-name]

将id为your-container-id的容器创建成一个镜像快照。
在这里插入图片描述
接着,你通过docker images就可以查看到刚刚创建好的镜像快照了。
在这里插入图片描述
然后,通过:

docker save -o [path-you-want-to-save/your-backup-name.tar]] [your-backup-name]

在这里插入图片描述
把那个镜像打包成tar文件,保存到服务器上。 后面就可以把服务器上打包好的tar文件,下载到本地了。
恢复: `

docker load -i [your-backup-name.tar] docker run -d -p 80:80 [your-backup-name]`

docker cannot stop container问题解决

Docker容器在启动时出现异常,删除容器或者暂停容器时出现cannot stop container

sudo aa-remove-unknown
docker stop [container name/id] 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值