首页 > 系统相关 >Ubuntu环境下docker的安装和基本使用

Ubuntu环境下docker的安装和基本使用

时间:2023-10-29 20:32:00浏览次数:29  
标签:容器 world Ubuntu 镜像 docker 安装 Docker

docker是一个基于GoLang的应用容器引擎,它轻量级的沙箱化特性让它在服务器运维方面不可或缺。 docker的优势和特性本篇不再赘述,着重记录Ubuntu环境下docker快速安装和基本使用。

docker引擎本身是跨平台的,在不同Linux、Mac和win环境有不同的实现,而win环境则依托于vbox和hyper-v的虚拟化环境来模拟Linux,本质上还是虚拟机,所以不太建议。而日常需要Android开发的则更不建议win环境,如果是win10环境则需要开启hyper-v,这个win10的这个虚拟化是和Android模拟器冲突的。

安装

docker官方针对Ubuntu环境提供了三套安装方法。

  • 配置apt源,使用apt install安装
  • 下载.deb安装文件进行安装
  • 使用安装脚本进行安装

在实际操作中,前两种方式都遇到了问题,可能会因为依赖或者其他原因造成安装失败, 所以这里仅记录使用第三种方式的安装,这也操作是相对简单的一种方式。

安装脚本其实是一个.sh的文件,它会自动的从官方下载当前环境下对应的最新安装文件,并自动安装docker所需要的各种依赖。

首先下载脚本文件,保存位置不限。

curl -fsSL get.docker.com -o get-docker.sh

得到名为get-docker.sh的脚本文件后使用root权限执行

sudo sh get-docker.sh

之后脚本文件会自动进行各项下载安装,完成安装后会有如下提示

<output truncated>

If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker your-user

Remember to log out and back in for this to take effect!

WARNING: Adding a user to the "docker" group grants the ability to run
         containers which can be used to obtain root privileges on the
         docker host.
         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
         for more information.

这个提示告诉我们docker命令需要使用root权限来执行,如果想要非root用户使用docker,则需要把用户加入docker用户组,使用命令

sudo usermod -aG docker your-user

之后重新登录让配置生效。

到此为止,docker环境以及安装配置完成。

Hello World

docker为我们提供了hellworld镜像来测试docker安装是否成功。
执行命令

docker run hello-world

这个命令的意思就是字面意思,告诉docker,启动运行一个叫hello-world的镜像,这时候docker会检测本地有没有这个镜像,因为这时候docker是初次安装,所以是没有hello-world镜像的,然后docker会从官方镜像库搜索然后下载,然后启动执行这个镜像。正常情况下,我们得到下面的输出。

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete
Digest: sha256:f5233545e43561214ca4891fd1157e1c3c563316ed8e237750d59bde73361e77
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

当然这个镜像的体积非常小,只有一个输出功能,在较短的时间内下载到本地,执行输出后,镜像就会退出,当然其他类型的镜像会根据具体的情况来决定立即退出还是后台持续运行。
当我再次运行docker run hello-world命令时,docker检测到本地已经存在镜像,就会直接启动运行,而并不会再次下载了。

基本使用

拉取(下载)镜像

当使用docker run命令来启动一个本地不存在的镜像时,docker会自动的从网络拉取镜像。
而docker也提供了独立的下载命令docker pull 镜像名称,使用这个命令会直接从网络拉取镜像,拉取完成后不会启动镜像。

查看本地镜像

使用docker images命令可以查看本地已经下载的镜像列表。

删除本地镜像

使用docker rmi 镜像名命令可以删除本地下载的镜像,当镜像被某个容器正在使用时是不能删除的。

启动镜像为容器

这里要区分镜像容器的概念,镜像相当于一个建筑图纸,类似于程序中的Class的定义;而容器则是根据图纸制造的房间,类似于程序中根据Class实例化出来的对象。
所以镜像的作用也就是用来实例化容器,在helloworld中已经了解到使用docker run hello-world来启动了一个打印完成后立即结束的容器,这里我们用一个不会立即结束的镜像来示例。
首先我们拉取一个5.7版本的mysql的镜像

docker pull mysql:5.7

然后使用如下命令来启动

docker run \
--name mysqldemo \
-e MYSQL_ROOT_PASSWORD=mypassword \
-d  \
-p 3307:3306  \
mysql:5.7

拉取镜像后,就会安装参数来启动mysql的镜像,--name代表容器的名称,-e是容器中的环境变量,这里指定了root账号的密码,-d指定容器是后台运行,-p参数将容器中的3306端口映射到了本机的3307端口。
这样我们就得到了一个3307端口运行的mysql服务,通过修改docker命令的参数,我们甚至可以同时启动多个不同版本号和端口的mysql服务,这种体验是非docker环境不能比拟的,在实际运维中的优势瞬间就提现出来了。

查看容器

使用docker ps命令,可以查看正在运行的容器情况。 使用docker ps -a命令,可以查看包含已经停止运行的所有的容器。

停止/删除容器

使用docker stop 容器名或容器id,停止正在运行的容器 使用docker rm 容器名或容器id,删除已经停止运行的容器 使用docker rm -f 容器名或容器id,强制删除包含正在运行的指定的容器

重启容器

使用docker restart 容器名或容器id 重启容器

标签:容器,world,Ubuntu,镜像,docker,安装,Docker
From: https://blog.51cto.com/NightFarmer/8081633

相关文章

  • centos7安装mysql5.7(转)
    https://cloud.tencent.com/developer/article/2226207安装步骤https://www.cnblogs.com/key-l731/p/9551400.html查看本机安装情况  1.下载MySQLyum包wgethttp://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm复制2.安装MySQL源rpm-Uvhmysql5......
  • 克隆自己的ubuntu系统并在其它开发板还原
    背景最近接手了一个项目需要在友善之臂的NanoPi-M1-PLUS的开发板上运行一个小型的web程序。开发版跑的系统是ubuntu16.04的一个定制版本内核4.14.111。ubuntu系统上需要安装配置,nginx,tomcat,mysql,串口驱动,等等一系列的环境。一个开发版的环境配置下来至少3-4小时,然而我这里有24个......
  • ubuntu中vi编辑器的一个细节
    但是这样回车就会默认给你//......
  • python 安装包时 ERROR: Failed building wheel for webrtcvad
    报错信息:error:subprocess-exited-with-error×Buildingwheelforwebrtcvad(pyproject.toml)didnotrunsuccessfully.│exitcode:1╰─>[9linesofoutput]runningbdist_wheelrunningbuildrunningbuild_pycreatingbuildcre......
  • windows安装redis
    下载链接:https://pan.baidu.com/s/1x8TrhU8flw-K7TtdBuGvZQ?pwd=e3o9提取码:e3o9安装双击打开安装文件Redis-x64-3.2.100.msiredis安装好后便会自动启动服务,且默认是自启动的(每次开机都会启动)测试redis运行是否正常在桌面搜索cmd打开命令提示符,执行命令redis-cli提示符变成......
  • 【问题复盘】在Ubuntu 20.04下安装OFED驱动
    复盘:在Ubuntu20.04下安装OFED驱动起因最近收到两台服务器,都搭载了ConnectX-5EX网卡。由于供应商预装了Ubuntu20.04操作系统,而我们的后端代码也是基于Ubuntu开发的,因此需要在Ubuntu上安装ConnectX-5网卡的驱动。问题尽管供应商已经预装了驱动,但运行我们的服务时出现以下错误......
  • VMware虚拟机安装Linux教程(2023最新版)
    一、准备工作1.VMware软件(注意:如过不会安装此软件教程地址VM安装教程),常见的虚拟机软件有VMwareWorkstation(简称VMware)、VirtualBox、MicrosoftVirtualPC等,其中VMware市场占有率最高,所以本节以VMware为例来讲解Linux的安装。2.镜像:CentOS-6.4-i386-bin-DVD1(注意:如果没......
  • VMware虚拟机安装教程(2023最新版)
    一、准备工作系统:win10VMWare版本:VMware-workstation-full-15.5.1-15018445二、VMware下载与安装1.进入VMware官网(地址:https://www.vmware.com/cn.html),点击上方导航栏中的下载,再点击图中标记的WorkstationPro,如下图所示:2.根据操作系统选择合适的产品,在这里以Windows系统为例,点击......
  • nexus3 作为docker仓库与镜像缓存的记录
    因为搞k8s拉取镜像太慢,不同版本每次都要等待半天,用nexus3作为docker镜像的缓存与仓库镜像,虽然权限控制弱一些,够用,记录用法及踩坑。1作为镜像缓存,唯一的坑,就是第一次拉取及后续拉取镜像,没有缓存,也不晓得为啥配置了 insecure-registries和 registry-mirrors没生效,iftop观察流......
  • 【1】Anaconda3 和jupter安装与配置
    1、Anacond的介绍Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,Anaconda的下载文件比较大(约531MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和Python)。......