首页 > 其他分享 >Docker教程

Docker教程

时间:2023-07-10 22:46:22浏览次数:38  
标签:容器 教程 5.2 ubuntu 镜像 docker Docker

目录

Docker教程

1. Docker是什么

Docker是Linux容器的一种封装,提供简单易用的容器使用接口。
Docker将应用程序与该程序的依赖打包在一个文件里,运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样,有了Docker就不用担心环境问题。

2. Docker的用途

  • 提供一次性的环境;
  • 提供弹性的云服务;
  • 组件微服务架构。

3. Docker的安装

安装流程详见官方文档;
安装完成之后,运行一下命令验证安装是否成功:

docker version  # 查看docker版本
docker info  # 查看docker信息

Docker需要用户具有sudo权限,为避免每次输入命令都输入sudo,可以把用户加入Docker用户组:

sudo usermod -aG docker $USER

Docker是一种C/S架构,启动Docker的命令:

sudo service docker start

sudo systemctl start docker

4. 运行Docker

4.1 Docker Hello World

Docker允许在容器内运行应用程序,使用docker run命令在容器中运行一个应用程序

# Docker 以ubuntu 15.10镜像创建一个新容器,并在容器中执行命令/bin/echo echo "Hello World!",然后输出结果
$ docker run ubuntu:15.10 /bin/echo "Hello World!"
Hello World!

4.2 运行交互式的容器

可以通过docker的两个参数 -i -t,运行一个可交互式的容器:

  • -t 在新容器中指定一个伪终端或者终端
  • -i 允许用户对容器内的标准输入(stdin)进行交互
$ docker run -i -t ubuntu:15.10 /bin/bash
root@0123ce118bd8:/# 
# 注意,此时已经进入了一个ubuntu 15.10系统的容器
root@0123ce118bd8:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

可以运行exit命令来退出容器:

root@0123ce118bd8:/# exit
exit
$
# 注意,此时已经退出了当前运行的容器,返回到了宿主主机中

4.3 后台模式启动容器

通过-d参数运行一个以进程方式运行的容器,该容器将会以后台模式运行:

$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

可以看到,在上面的输出里,输出了一串长串,这个长串是容器ID,每个容器的容器ID都是唯一的,可以通过容器ID来查看对应的容器发生了什么。

首先需要确认有容器正在运行,可以通过docker ps命令来查看:

$ docker ps
CONTAINER ID        IMAGE            COMMAND                      CREATED             STATUS        PORTS       NAMES
5917eac21c36        ubuntu:15.10     "/bin/sh -c 'while t...'"    5 months ago        Running                       

输出详解:

  • CONTAINER ID:容器ID
  • IMAGE:容器使用的镜像文件
  • COMMAND:启动容器时运行的命令
  • CREATED:容器的创建时间
  • STATUS:容器的状态,状态有7种:
    • created:已创建
    • restarting:重启中
    • running或up:运行中
    • removing:迁移中
    • paused:暂停
    • exited:停止
    • dead:死亡
  • PORTS:容器的端口信息和使用的连接类型
  • NAMES:自动分配的容器名称

在宿主主机中使用docker logs <容器ID>(或者使用docker logs <容器NAME>)命令,可以查看容器内的标准输出:

$ docker logs 2b1b7a428627
hello world
hello world
hello world
...

4.4 停止容器

可以使用docker stop <容器ID>(或者使用docker stop <容器NAME>)命令来停止容器:

$ docker stop 2b1b7a428627
2b1b7a428627

5. Docker容器使用

5.1 Docker客户端

可以直接输入docker来查看Docker客户端的所有命令选项
可以通过docker command --help 深入地了解某条Docker的命令的使用方法

5.2 容器使用

5.2.1 获取镜像

如果本地没有镜像,就需要使用docker pull命令来获取镜像:

docker pull ubuntu

5.2.2 启动镜像

可以通过docker run命令运行一个镜像:

# 以交互式终端的形式启动容器ubuntu并执行命令/bin/bash
$ docker run -it ubuntu /bin/bash
root@750bbbcfd88:/#

若要退出容器终端,则直接输入exit:

$ docker run -it ubuntu /bin/bash
root@750bbbcfd88:/# exit
exit

5.2.3 启动已经停止的容器

先使用docker ps -a命令查看所有的容器,再使用docker start命令启动一个已经停止的容器:

$ docker ps -a
CONTAINER ID        IMAGE            COMMAND                      CREATED             STATUS                    PORTS           NAMES
5917eac21c36        ubuntu:15.10     "/bin/sh -c 'while t...'"    5 months ago        Exited(0) 2 minutes ago

$ docker start 5917eac21c36

5.2.4 后台运行

大部分的场景下,我们希望docker的服务是在后台运行的,此时可以使用-d参数指定容器以后台模式运行:

$ docker run -it -d --name ubuntu-test ubuntu /bin/bash
# --name ubuntu-test 命名该容器为ubuntu-test

注意:加了-d参数默认不会进入容器,想要进入容器要使用指令docker exec

5.2.5 停止一个容器

停止容器的命令为docker stop <容器ID>,已经停止的容器可以通过docker restart <容器ID>重启:

$ docker stop 5917eac21c36 
5917eac21c36

$ docker restart 5917eac21c36
5917eac21c36

5.2.6 进入容器

使用-d参数时,容器启动后会进入后台运行,此时想要进入容器,可以使用一下命令进入:

  • docker attach <容器ID>
  • docker exec <容器ID>

两者的不同之处在于使用docker attach命令进入容器后,若此时从这个容器终端退出,会导致容器的停止,而使用docker exec命令则不会,因此一般推荐使用docker exec命令进入容器。

5.2.7 导出和导入容器

导出容器

如果要导出本地某个容器,可以使用docker export命令:

$ docker export 5917eac21c36 > ubuntu.tar
# 导出容器 5917eac21c36 快照到本地文件ubuntu.tar
导入容器

可以使用docker import命令从容器快照中再导入为镜像;
此外也可以通过指定URL或者某个目录来导入

$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1
# 导出容器 5917eac21c36 快照到本地文件ubuntu.tar

$ docker import http://example.com/exampleimage.tgz example/imagerepo

5.2.8 删除容器

删除容器可以使用docker rm命令,删除容器时容器必须是停止状态,否则会报错!

$ docker rm -f 5917eac21c36
5917eac21c36

可以使用命令docker container prune清理掉所有处于终止状态的容器。

5.2.9 端口映射

可以使用-p hostPort:containerPort参数来将容器的端口映射到对应的宿主主机端口:
-P参数将会把容器的端口随机映射到宿主主机的一个端口

$ docker run -d -p 8080:80 nginx:latest

6. Docker镜像使用

6.1 列出镜像列表

可以使用docker images命令来列出本地主机上的镜像:

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              15.10               90d5884b1ee0        5 days ago          188 MB

输出详解:

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

同一镜像源可以有多个TAG,代表这个仓库源的不同版本,比如Ubuntu仓库源里,有15.10、14.04、16.04等多个不同的版本,Docker使用REPOSITORY:TAG来定义不同的镜像,若要使用16.04版本的ubuntu镜像,则命令如下:

$ docker run -it ubuntu:16:04 /bin/bash

6.2 获取一个新的镜像

当想要获取下载一个新的镜像,可以使用docker pull命令来下载:

$ docker pull ubuntu:13.10
13.10: Pulling from library/ubuntu
6599cadaf950: Pull complete 
23eda618d451: Pull complete 
f0be3084efe9: Pull complete 
52de432f084b: Pull complete 
a3ed95caeb02: Pull complete 
Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Status: Downloaded newer image for ubuntu:13.10

6.3 查找镜像

可以从DockerHub网站来搜索镜像
也可以使用docker search命令来搜索镜像:

$ docker search mysql

输出详解:

  • NAME: 镜像仓库源的名称
  • DESCRIPTION: 镜像的描述
  • OFFICIAL: 是否 docker 官方发布
  • stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
  • AUTOMATED: 自动构建。

6.4 删除镜像

可以使用docker rmi命令来删除一个镜像:

$ docker rmi hello-world

6.5 创建镜像

当从 docker 镜像仓库中下载的镜像不能满足需求时,可以通过以下两种方式对镜像进行更改:

  • 从已经创建的容器中更新镜像,并且提交这个镜像
  • 使用 Dockerfile 指令来创建一个新的镜像

6.6 为镜像设置标签

可以使用docker tag命令为镜像添加一个新的标签:

$ docker tag 860c279d2fec centos:dev

标签:容器,教程,5.2,ubuntu,镜像,docker,Docker
From: https://www.cnblogs.com/N1rv2na/p/17542562.html

相关文章

  • Git教程
    Git教程目录Git教程1.安装Git1.1在Linux上安装Git1.2在windows上安装Git2.创建版本库2.1创建一个版本库:2.2添加文件到版本库3.版本管理3.1查看代码仓库的状态3.2版本穿梭3.3工作区和暂存区3.4管理修改3.5撤销修改3.6删除文件4.远程仓库4.1创建和添加SSH秘钥4.2添......
  • Docker - DockerFile
      DockerFile的介绍DockerFile的指令DockerFile构建过程      DockerFile的介绍 狂神:dockerfile是用来构建docker镜像的文件命令参数脚本。狂神:dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件狂神:Docker镜像逐渐成为企业交付......
  • Centos7.9系统docker部署plexServer,打造个人影音服务器
    1.准备工作1.1部署docker安装依赖包yum-yinstallgccgcc-c++yum-utilsdevice-mapper-persistent-datalvm2设置stable镜像仓库yum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo或yum-config-manager--add-repohttp://mirrors.al......
  • 腾讯T3-3级资深架构师呕心整理:10万字节springboot教程全解!
    前言:可以毫不夸张地说,这篇文章介绍的SpringBoot教程基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个springboot的用法,文中都会都会有详细的教程解释。本文总共从29个章节,248页PDF,阐述springboot在各种环境下的各种用法,文中给大家列举出部分的springboot教程,需要这份10......
  • 解决Docker -v 挂载单文件问题
    问题描述下面命令挂载文件看着没有什么问题吧? dockerrun--namexxxx-p8001:80-v/docker/appsettings.json:/app/appsettings.json-dxxxx:v1.1.0但当我们执行完就会发现文件并没有挂载过来而是给我们创建了一个文件夹 解决方案 官方的建议是挂载文件夹,而不是......
  • Zephyr入门教程 2 线程
    RTOS的必要性当你开始增加你的嵌入式应用的功能时,在单一的主循环和一些中断例程中做所有的事情变得越来越难。通常情况下,下一级的复杂性是某种状态机,你的电子设备的输出会根据这个(内部)状态而改变。如果你需要能够同时操作多个复杂的输入和输出呢?一个很好的例子是TCP/IP连接,通过这......
  • 第2章信息技术发展|软考高项信息系统项目管理师-教程伴读脑图
    第2章信息技术发展,一共30页的内容,篇幅中等,难度也是偏高(四颗星),毕竟相比第1章,增加了很多技术术语,对于非技术的同学可能会感觉更难一些。不过你真的没有必要针对技术打破砂锅问到底,你的目标是通过考试拿证,对拿证而言,技术不会考的深,而是会考的广,而且会紧扣教程中的原话,所以对于一些你经......
  • JSP环境搭建教程(保姆级!!)
    简介JavaServerPages(JSP)是一种由SunMicrosystems开发的用于创建动态网页的技术。它是JavaEE(JavaEnterpriseEdition)技术的一部分,允许开发者在HTML中嵌入Java代码,从而实现动态内容的生成。JSP主要由两部分组成:静态数据和JSP元素。静态数据可以是任何类型......
  • 技术讲解文字教程
    连接设备,将4G摄像头直接连接到电脑上。设置电脑网络,将电脑的网络设置为192.168.1网段。在浏览器中输入192.168.1.100,打开摄像头登录页面。使用用户名和密码"admin"登录。如果提示错误,可以查看摄像头上方的标签获取正确的用户名和密码。在高级设置-FTP设置中设置FTP服务器地址、......
  • ZBrush 3D游戏建模教程:创建女武士模型
    推荐:将NSDT场景编辑器加入你的3D工具链3D工具集:NSDT简石数字孪生介绍 在本教程中,演示创建实时武士角色的流程,该流程基于 KatiSarinS 的原始概念。我将使用各种各样的软件,如ZBrush,Maya,SubstancePainter和Marmoset。在ZBrush,Maya和SubstancePainter中创建风格化的角色参......