首页 > 其他分享 >Docker教程

Docker教程

时间:2024-07-01 11:46:47浏览次数:15  
标签:容器 教程 命令 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

标签:容器,教程,命令,ubuntu,镜像,docker,Docker
From: https://www.cnblogs.com/N1rv2na/p/18277721

相关文章

  • CMake教程
    CMake教程1.运行CMake1.1构建项目在构建项目前建议创建一个build目录,以下是一个经典的Cmake构建过程:~/package$mkdirbuild~/package$cdbuild~/package/build$cmake..~/package/build$makemake命令也可以使用cmake--build来代替以下任何一条命令都可以执......
  • 前端vue/react通用工程化eslint prettier stylelint husky项目规范(新手入门详细教程)
    前言本文章内的项目基于vite+react+ts搭建,但通篇并未涉及react的东西,所以可以通用。适合新手入门的工程化项目规范,最小化的完成代码规范和git提交规范,开发工具使用vscode。为什么是最小化?本意是为了让大家都能看懂入手这些规范,很多文章中,都长篇进行自定义的配置,其......
  • Linux上的Vim编辑器教程
    当谈到Linux上的Vim编辑器时,以下是一个最全面的教程,涵盖了Vim的基本使用、模式、命令以及高级功能。一、Vim简介Vim(ViIMproved)是一个在Linux和其他类Unix系统上广泛使用的文本编辑器。它提供了一套强大的命令和快捷键,使用户能够高效地编辑文本。Vim有三种主要模式:正常模......
  • 全网最适合入门的面向对象编程教程:06 类和对象的Python实现-自定义类的数据封装
    全网最适合入门的面向对象编程教程:06类和对象的Python实现-自定义类的数据封装摘要:本文我们主要介绍了数据封装的基本概念和特性,如何设置自定义类的私有属性和私有方法,protect属性的概念和特点。往期推荐:学嵌入式的你,还不会面向对象??!全网最适合入门的面向对象编程教程:00......
  • QQ机器人开发教程:智能群聊助手
    随着社交媒体的普及,QQ群已成为人们日常生活中重要的交流平台。本文将介绍如何开发一款智能的QQ机器人,作为群聊助手,提供便捷的服务和娱乐功能。一、开发环境搭建首先,需要搭建开发环境。安装Python解释器,并配置好相关的开发工具和库。同时,需要申请一个QQ号作为机器人的登录账......
  • 初识Docker容器
    前言:Docker容器技术是一个强大而灵活的工具,用于构建、发布和运行分布式应用程序。以下是从入门到精通Docker容器的详细指南: 一、Docker容器基础Docker概述Docker是一个开源的应用容器引擎,它基于Go语言开发并遵循Apache2.0协议。Docker允许开发者将应用程序及其依赖打包到一个......
  • 3分钟手把手教Parallels Desktop for Mac 19中文破解版安装激活图文教程
    ParallelsDesktopforMac 19专为最新的Apple硬件和最新版macOS14Ventura设计,改进了基于ARM运行的Windows11的兼容性并始终保持最新状态,让用户能够不间断地完成更多工作。据介绍,Parallels最新版本旨在优化最新Apple硬件的可用性,同时还支持性能和游戏更新,为用......
  • 关于docker-compose up -d 出现超时情况处理
    由于要搭建一个ctf平台,用docker一键搭建是出现超时情况用了很多办法,换源,等之类的一样没办法,似乎它就是只能用官方那个一样很怪。只能用一种笨办法来处理了,一个个pull。打个比如:打开相对应docker-compose.yml文件可以看到image就是需要去下载的。那么此时你就可以通过手动指......
  • 【Effective Python教程】(90个有效方法)笔记——第3章:函数——24:用None和docstring来描
    文章目录第3章:函数第24条用None和docstring来描述默认值会变的参数函数默认值的坑(函数的默认参数值只在定义函数时计算)解决方法:将函数默认参数值设为None,然后再在函数体中判断并初始化函数默认参数值设置为None的其他应用示例“函数默认参数值设置为None”与“函数参数......
  • 超详细Python教程—— 进程
    进程Python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在Python中大部分情况需要使用多进程。Python提供了非常好用的多进程包multiprocessing,只需要定义一个函数,Python会完成其他所有事情。借助这个包,可以轻松完成从单进程到并发执行的转......