【工作经验】ubuntu下docker初探

本文详细介绍了如何在Ubuntu系统上安装和配置Docker,包括安装步骤、设置国内镜像加速、创建和管理容器、镜像的使用及管理等核心内容,帮助读者快速掌握Docker的基本操作。

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

概述

我们常常使用虚拟机来搭建环境,然而,虚拟机比较笨重,对于有时需要同时虚拟多个环境(例如发布网站,做分布式实验等)创建多个虚拟机往往花大量时间且需要分配大量内存与硬盘空间(动则几十G)。Docker作为一个容器,真正解决了我们仅仅是需要一个运行环境的需求,一个容器可能只有1,200M,且新建与删除容器都十分简便,搭建好的环境可以做新的镜像方便异地部署,并且可以同时开许多个容器(共用宿主资源而不是重新单独分配)。下面,就ubuntu系统下探索docker。(因为ubuntu作为服务器端有更广泛的应用)。

安装docker

使用管理员帐号登录ubuntu系统,保证该管理员拥有 root 权限,或者可以执行sudo命令。

安装必要的一些系统工具

sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common 

安装 GPG 证书

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - 

写入软件源信息

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/dockerce/linux/ubuntu $(lsb_release -cs) stable 

更新并安装 Docker-CE

sudo apt-get -y update
sudo apt-get -y install docker-ce 

确认 Docker 是否安装成功。

sudo docker ps -a 

设置国内下载镜像

Docker 默认的 hub 服务器位于国外速度奇慢,推荐用国内的阿里云镜像或 daocloud 的镜像。 笔者注册在这两个网站都进行了注册,可选择使用。 经过实测,在下载大文件(超过 2G)的 docker 镜像时, 阿里云镜像更稳定一些,不会出现连接超时错误。

使用 daocloud 镜像:

echo "DOCKER_OPTS=\"--registry-mirror=http://2851a677.m.daocloud.io\"" | sudo tee -a /etc/default/docker 

使用阿里云镜像:

echo "DOCKER_OPTS=\"--registry-mirror=https://bqr1dr1n.mirror.aliyuncs.com\"" | sudo tee -a /etc/default/docker 

修改完成后,重启 docker 服务。

sudo service docker restart 

下载版 ubuntu 系统镜像并查看本地镜像

下载 14.04 版的 ubuntu 系统。此操作需要网络环境,实验用的机器中已经下载完成,

可直接使用。

sudo docker pull ubuntu:14.04 

查看已有本地镜像:

sudo docker images 

创建并启动容器

创建并启动容器

docker run -it --name=ubuntu_demo ubuntu:14.04 "/bin/bash 

这里,参数-it 代表启动交互式终端,新启动的容器名称为 ubuntu_demo, 使用刚下载
的 ubunt:14.04 镜像产生。

查看容器运行情况

运行以下命令, 可以查看已经运行的容器

sudo docker ps 

运行以下命令,查看全部容器:

Sudo docker ps -a 

执行以下命令, 创建一个新的容器,并按 ctrl+d 退出。

sudo docker run -ti --name=ubuntu_demo2 ubuntu:14.04 '/bin/bash 

删除容器

按ctrl+p+q退出容器登录,注意容器仍在后台运行

停止容器

sudo docker stop ubuntu_test

删除容器

sudo docker rm ubuntu_test

退出容器

退出容器且关闭

ctrl+d
// 或者
exit

后续若要使用这个容器,需要先重启,再连接连接。(start+attach)

退出容器但不关闭

ctrl+p+q

容器在后台继续运行。 后续继续使用容器, 只需要连接上去即可。(attach)

启动、 停止已有容器

重新启动已经关闭的容器

sudo docker start ubuntu_demo 

关闭容器

sudo docker stop ubuntu_demo 

连接到已启动容器

attach

可以连接到用启动时指定交互终端的容器,如前(已创建好)面的命令,这种命令执行完毕后会直接切换到容器终端

docker run -it --name=ubuntu_demo ubuntu:14.04 "/bin/bash" 

连接到已经启动的容器,命令输完后, 可能需要再次按 enter 键才能进入容器系统

sudo docker attach ubuntu_demo 

可以使用以下命令, 一次完成启动+连接两个操作

sudo docker start -i ubuntu_demo 

exec

当我们需要 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下,
可以使用-d 参数。 d 参数运行的容器为后台进程, 这种方式启动的好处在于不会用 ctrl+d误 停止掉容器, 要想停止容器,只能使用 sudo docker stop 命令。

sudo docker run -d --name centos7-d centos-hadoop 

这时不能使用 sudo docker attach master 命令进行连接(打开并连接状态但是在后台运行),可以使用

docker exec -it centos7-d /bin/bash 

修改容器并提交为镜像

镜像 image: docker 镜像从概念上讲类似于 vm 里面的 iso 文件,就是一个只读的模
板。一个镜像可以包含一个 Linux 操作系统,里面安装了一系列的软件。镜像可以拷到任
何装了 docker 的机器上运行。
仓库 Repository:存储 docker 镜像的地方就是镜像仓库, 全球最大的 docker 镜像仓库
docker.io, 里面有大量官方和民间的优秀镜像可以直接拿过来使用,如 mysql, centos
等等。阿里也有自己的 docker 仓库 docker.alibaba-inc.com
容器 container:容器与镜像的关系有点像进程与程序的关系,运行中的镜像就叫容器。
从原理上讲, 容器事实上是镜像上面加了一层读写层,以及一个被隔离的进程空间。这样
就可以在不更改镜像的基础上还能像普通 vm一样读写数据。

操作后提交为一个新的镜像

sudo docker run -it --name=centos_test centos7-ssh '/bin/bash' # 创建容器 
# 修改容器, 安装 hadoop、 spark 等, 做了一堆操作 
sudo docker commit centos_test centos7-hadoop_demo # 将容器提交为镜像

删除镜像

可以很方便的删除镜像。这里注意两点:
一是删除的镜像必须没有依赖它允许的容器,如果有,则需要删除依赖它的容器;
二是删除默认的 TAG 为 latest。 一个好的习惯是创建和删除镜像时都加上个性化(如
时间) 标签,一个镜像名下不同的标签值创建、删除等操作是独立的。

sudo docker rmi centos7-hadoop_demo 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值