探索云原生技术之基石-Docker容器入门篇(2)

这篇具有很好参考价值的文章主要介绍了探索云原生技术之基石-Docker容器入门篇(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

探索云原生技术之基石-Docker容器入门篇(2)

本博文一共有6篇,如下

  • 探索云原生技术之基石-Docker容器入门篇(1)
  • 探索云原生技术之基石-Docker容器入门篇(2)
  • 探索云原生技术之基石-Docker容器入门篇(3)

等你对Docker有一定理解的时候可以看高级篇,不过不太建议。

  • 探索云原生技术之基石-Docker容器高级篇(1)
  • 探索云原生技术之基石-Docker容器高级篇(2)
  • 探索云原生技术之基石-Docker容器高级篇(3)-视情况而定

剧透:未来将出云原生技术-Kubernetes(k8s),此时的你可以对Docker进行统一管理、动态扩缩容等等。

看完之后你会对Docker有一定的理解,并能熟练的使用Docker进行容器化开发、以及Docker部署微服务、Docker网络等等。干起来!

什么是云原生

Pivotal公司的Matt Stine于2013年首次提出云原生(Cloud-Native)的概念;2015年,云原生刚推广时,Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、扛脆弱性;到了2017年,Matt Stine在接受InfoQ采访时又改了口风,将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质;而Pivotal最新官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器

总而言之,符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。

此处摘选自《知乎-华为云官方帐号》

探索云原生技术之基石-Docker容器入门篇(2)

什么是Docker

  • Docker 是一个开源的应用容器引擎,基于Go语言开发。
  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化
  • 容器是完全使用沙箱机制(容器实例相互隔离),容器性能开销极低(高性能)。

总而言之:

Docker是一个高性能的容器引擎;

可以把本地源代码、配置文件、依赖、环境通通打包成一个容器即可以到处运行;

使用Docker安装软件十分方便,而且安装的软件十分精简,方便扩展。

docker命令

docker start命令
docker start命令参数与格式
[root@aubin /]# docker start --help

Usage:  docker start [OPTIONS] CONTAINER [CONTAINER...]

Start one or more stopped containers

Options:
  -a, --attach               Attach STDOUT/STDERR and forward signals
      --detach-keys string   Override the key sequence for detaching a container
  -i, --interactive          Attach container's STDIN
  • 命令格式:docker start 容器id

  • 作用:开启一个或多个状态为Exited(已经退出)的容器实例

  • 先查询退出的容器:

[root@aubin ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
2c49a87af8c9   ubuntu    "bash"        18 seconds ago   Exited (0) 8 seconds ago              cranky_ride
  • 使用docker start启动容器
docker start 2c49a87af8c9
  • 启动成功后就可以用docker exec去进入容器了。
docker restart命令
docker restart命令参数与格式
[root@aubin /]# docker restart --help

Usage:  docker restart [OPTIONS] CONTAINER [CONTAINER...]

Restart one or more containers

Options:
  -t, --time int   Seconds to wait for stop before killing the container (default 10)
  • 命令格式:docker restart 容器id
  • 作用:重新启动容器实例
docker restart 2c49a87af8c9
docker stop命令
docker stop命令参数与格式
[root@aubin /]# docker stop --help

Usage:  docker stop [OPTIONS] CONTAINER [CONTAINER...]

Stop one or more running containers

Options:
  -t, --time int   Seconds to wait for stop before killing it (default 10)
  • 命令格式:docker stop 容器id
  • 作用:停止容器实例,把容器实例状态变成Exited
docker stop 2c49a87af8c9
docker kill命令
docker kill命令参数与格式
[root@aubin /]# docker kill --help

Usage:  docker kill [OPTIONS] CONTAINER [CONTAINER...]

Kill one or more running containers

Options:
  -s, --signal string   Signal to send to the container (default "KILL")
  • 命令格式:docker kill 容器id
  • 作用:杀死一个或多个正在运行的容器实例
docker kill 2c49a87af8c9
docker rm命令
docker rm命令参数与格式
[root@aubin /]# docker rm --help

Usage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]

Remove one or more containers

Options:
  -f, --force     Force the removal of a running container (uses SIGKILL)
  -l, --link      Remove the specified link
  -v, --volumes   Remove anonymous volumes associated with the container
  • 命令格式:docker rm -f 容器id
  • -f:force(强制移除容器),可选项
  • 作用:移除一个或多个容器实例
docker rm -f 5b474c2309d9
docker run -d命令
docker run -d命令参数与格式
[root@aubin /]# docker run -d --help

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Run a command in a new container

Options:
      --add-host list                  Add a custom host-to-IP mapping (host:ip)
  -a, --attach list                    Attach to STDIN, STDOUT or STDERR
      --blkio-weight uint16            Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
      --blkio-weight-device list       Block IO weight (relative device weight) (default [])
      --cap-add list                   Add Linux capabilities
      --cap-drop list                  Drop Linux capabilities
      --cgroup-parent string           Optional parent cgroup for the container
      --cgroupns string                Cgroup namespace to use (host|private)
                                       'host':    Run the container in the Docker host's cgroup namespace
                                       'private': Run the container in its own private cgroup namespace
                                       '':        Use the cgroup namespace as configured by the
                                                  default-cgroupns-mode option on the daemon (default)
                                                  
省略......
  • 命令格式:docker run -d REPOSITORY镜像仓库名
  • -d:后台模式(守护模式)
  • 作用:后台启动一个容器
docker run -d redis
docker logs命令
docker logs命令参数与格式
[root@aubin /]# docker logs --help

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
  -n, --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
  • 命令格式:docker logs 容器id
  • 作用:获取容器日志
[root@aubin ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS      NAMES
0e1b9afb7322   redis     "docker-entrypoint.s…"   About a minute ago   Up About a minute   6379/tcp   recursing_faraday
[root@aubin ~]# docker logs 0e1b9afb7322
  • 输出
1:C 06 Apr 2022 07:22:51.888 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 06 Apr 2022 07:22:51.888 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 06 Apr 2022 07:22:51.888 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
1:M 06 Apr 2022 07:22:51.889 * monotonic clock: POSIX clock_gettime
1:M 06 Apr 2022 07:22:51.890 * Running mode=standalone, port=6379.
1:M 06 Apr 2022 07:22:51.890 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 06 Apr 2022 07:22:51.890 # Server initialized
1:M 06 Apr 2022 07:22:51.890 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:M 06 Apr 2022 07:22:51.890 * Ready to accept connections
  • 可以看到Redis已经启动与Redis版本等信息。
docker inspect命令
docker inspect命令参数与格式
[root@aubin /]# docker inspect --help

Usage:  docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Return low-level information on Docker objects

Options:
  -f, --format string   Format the output using the given Go template
  -s, --size            Display total file sizes if the type is container
      --type string     Return JSON for specified type
  • 命令格式:docker inspect 容器id/镜像id
  • 作用:获取容器或者镜像的元数据。
docker inspect 0e1b9afb7322
  • 输出:
[
    {
        "Id": "0e1b9afb7322c6f6f91684b5e97f3fc4bb826d56c2ed82c621f60973ea991cc9",
        "Created": "2022-04-06T07:22:51.498243986Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "redis-server"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 6614,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-04-06T07:22:51.839540264Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:7614ae9453d1d87e740a2056257a6de7135c84037c367e1fffa92ae922784631",
        "ResolvConfPath": "/var/lib/docker/containers/0e1b9afb7322c6f6f91684b5e97f3fc4bb826d56c2ed82c621f60973ea991cc9/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/0e1b9afb7322c6f6f91684b5e97f3fc4bb826d56c2ed82c621f60973ea991cc9/hostname",
        "HostsPath": "/var/lib/docker/containers/0e1b9afb7322c6f6f91684b5e97f3fc4bb826d56c2ed82c621f60973ea991cc9/hosts",
        "LogPath": "/var/lib/docker/containers/0e1b9afb7322c6f6f91684b5e97f3fc4bb826d56c2ed82c621f60973ea991cc9/0e1b9afb7322c6f6f91684b5e97f3fc4bb826d56c2ed82c621f60973ea991cc9-json.log",
......
]
docker exec命令
docker exec命令参数与格式
[root@aubin /]# docker exec --help

Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Run a command in a running container

Options:
  -d, --detach               Detached mode: run command in the background
      --detach-keys string   Override the key sequence for detaching a container
  -e, --env list             Set environment variables
      --env-file list        Read in a file of environment variables
  -i, --interactive          Keep STDIN open even if not attached
      --privileged           Give extended privileges to the command
  -t, --tty                  Allocate a pseudo-TTY
  -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])
  -w, --workdir string       Working directory inside the container
  • 命令格式:docker exec -it 容器id
  • 作用:进入一个状态为Up的容器(这个容器一定不能被关闭,不然进不去)
docker exec -it 0e1b9afb7322 /bin/bash
docker cp命令
docker cp命令参数与格式
[root@aubin /]# docker cp --help

Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
	docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

Use '-' as the source to read a tar archive from stdin
and extract it to a directory destination in a container.
Use '-' as the destination to stream a tar archive of a
container source to stdout.

Options:
  -a, --archive       Archive mode (copy all uid/gid information)
  -L, --follow-link   Always follow symbol link in SRC_PATH
  • 命令格式:docker cp 容器id:容器文件路径 主机路径

  • 作用:当我们不在容器内,可以用docker cp把指定容器内的文件拷贝到主机路径中。

docker cp  5e464b07dd68:b.txt  /var
docker export命令
docker export命令参数与格式
[root@aubin /]# docker export --help

Usage:  docker export [OPTIONS] CONTAINER

Export a container's filesystem as a tar archive

Options:
  -o, --output string   Write to a file, instead of STDOUT
  • 命令格式:docker export 容器id > xxx.tar
  • 作用:把指定容器导出成tar包。
[root@aubin /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED             STATUS             PORTS     NAMES
5e464b07dd68   ubuntu    "bash"    About an hour ago   Up About an hour             heuristic_elbakyan
[root@aubin /]# docker export 5e464b07dd68 > abc.tar
docker import命令
docker import命令参数与格式
[root@aubin /]# docker import --help

Usage:  docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

Import the contents from a tarball to create a filesystem image

Options:
  -c, --change list       Apply Dockerfile instruction to the created image
  -m, --message string    Set commit message for imported image
      --platform string   Set platform if server is multi-platform capable
  • 命令格式:docker import tar包名 自定义镜像名:自定义tag名
  • 作用:把tar包导入成镜像
docker import abc.tar myubuntu:5.2
docker commit命令
docker commit命令参数与格式
[root@aubin /]# docker commit --help

Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Create a new image from a container's changes

Options:
  -a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
  -c, --change list      Apply Dockerfile instruction to the created image
  -m, --message string   Commit message
  -p, --pause            Pause container during commit (default true)

安装vim命令

探索云原生技术之基石-Docker容器入门篇(2)

apt-get update

apt-get -y install vim

探索云原生技术之基石-Docker容器入门篇(2)

commit提交成镜像
  • 命令格式:docker commit 容器id 自定义镜像仓库名:自定义tag

  • 作用:把容器提交成镜像

docker commit f82b9b4f63b0 myubuntu:6.6
[root@aubin ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
myubuntu     6.6       5a035af5ac0c   5 seconds ago   176MB
mbuntu       1.3       b31fa70be935   3 hours ago     72.8MB
tomcat       latest    fb5657adc892   3 months ago    680MB
redis        latest    7614ae9453d1   3 months ago    113MB
mysql        5.7       c20987f18b13   3 months ago    448MB
rabbitmq     latest    d445c0adc9a5   3 months ago    220MB
ubuntu       latest    ba6acccedd29   5 months ago    72.8MB
  • 可以看到我们只添加一个vim命令后的Ubuntu比docker hub拉取的Ubuntu大了差不多100MB
  • 由于可见docker hub里面的镜像都是精简版的。

❤️💛🧡本章结束,我们下一章见❤️💛🧡文章来源地址https://www.toymoban.com/news/detail-412727.html

到了这里,关于探索云原生技术之基石-Docker容器入门篇(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【深入探索Docker】:开启容器化时代的技术奇迹

    🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞🙌收藏✍️留言 🎉系列专栏:小智带你闲聊 🎉代码仓库:小智的代码仓库 在当今快节奏的软件开发和部署环境中,Docker作为一种容器化平台已经成为备受关注的技术奇迹。它革新了应用程序的交付方式,为开发人员和运维团

    2024年02月16日
    浏览(42)
  • 探索云原生容器编排技术:如Kubernetes如何为大数据处理和AI模型的自动化部署带来便利

    🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:云原生 ✨文章内容: 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 Kubernetes是一个强大的容器编排和自动化部署工具,它为大数据处理和

    2024年02月10日
    浏览(59)
  • Docker:探索容器化技术,重塑云计算时代应用交付与管理

            在云计算时代,随着开发者逐步将应用迁移至云端以减轻硬件管理负担,软件配置与环境一致性问题日益凸显。Docker的横空出世,恰好为软件开发者带来了全新的解决方案,它革新了软件的打包、分发和管理方式,让开发人员能够运用先进的自动化运维工具和理念,

    2024年04月09日
    浏览(50)
  • 【云原生进阶之容器】第一章Docker核心技术1.1节——Docker综述

          《重识云原生系列》专题各章首节索引: 第一章——不谋全局不足以谋一域 第二章计算第1节——计算虚拟化技术总述 第三章云存储第1节——分布式云存储总述 第四章云网络第一节——云网络技术发展简述 第六章容器6.1.1节——容器综述    《云原生进阶之容器》

    2023年04月16日
    浏览(51)
  • 【云原生|Docker系列第4篇】Docker的容器的入门实践

    欢迎来到云原生系列的第4篇博客!在前面的两篇博客中,我们已经学习了Docker镜像的基本概念和入门实践。本篇博客将带您深入了解Docker容器,探索如何使用Docker容器来构建、运行和管理应用程序。无论您是新手还是有一定经验的开发者,通过本篇博客的实践指导,您将能够

    2024年02月17日
    浏览(50)
  • 入门Docker1: 容器技术的基础

    目录 服务器选型 虚拟机 基于主机(物理机或虚机)的多服务实例 基于容器的服务实例 Docker Docker三要素 Docker安装 Docker基本使用 基本操作 仓库+镜像 容器 在选择服务器操作系统时, Windows 附带了许多您需要付费的功能。 Linux 是开放源代码,可让用户免费使用。 对比 Linux 是开

    2024年01月16日
    浏览(45)
  • Docker入门指南: 创新的容器化技术

    Docker,一种创新的容器化技术,其主要目标是实现\\\"一次开发,到处运行\\\"。通过使用Docker,开发者可以在标准化的环境中进行工作,确保应用运行的一致性。 Docker是一个能够把开发的应用程序与它们所需要的环境进行打包,形成一个独立的、可移植的容器(Container)。然后,开

    2024年03月11日
    浏览(59)
  • Docker基础入门:从0开始学习容器化技术

    💖The Begin💖点点关注,收藏不迷路💖 Docker起源于2013年,由Docker公司(前身为dotCloud公司)创造和推广。它是一个开源的容器化平台,旨在简化应用程序的部署和管理。 在过去,应用程序的部署和运行环境往往存在着依赖关系和配置差异,这导致了许多问题,例如运行环境

    2024年02月12日
    浏览(35)
  • 【探索 Kubernetes|容器基础进阶篇 系列 4】理解现代云原生时代的引擎

    【云原生|探索 Kubernetes-1】容器的本质是进程 【云原生|探索 Kubernetes-2】容器 Linux Cgroups 限制 【云原生|探索 Kubernetes 系列 3】深入理解容器进程的文件系统 大家好,我是秋意零。 😈 CSDN作者主页 😎 博客主页 👿 简介 👻 普通本科生在读 在校期间参与众多计算机相关比赛,

    2024年02月08日
    浏览(48)
  • 云原生技术中的容器技术有哪些?

    在现今的安全行业中云原生安全技术中的容器安全技术有哪些呢,很多用户都不知道具体的含义以及到底容器技术中含有哪些内容,现在接下来一起跟着小编来了解下吧。 1、云原生的含义 ​ 云原生,云的意思就是云端,云端服务器相对本地服务服务器而言,通俗理解就是租

    2024年02月04日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包