Docker入门(一)————五叶草

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 入门 看Docker操作手册 写的很详细 程序是否正常 sudo docker info 运行容器 docker run命令提供了Docker容器的创建到启动的功能 如果要在命令行下创建一个我们能与之进行交互的容器,而不是一个运行后台服务的容器,则-i -t这两个参数是必不可少的基本参数。

作者: 麦冬 锻石

基础部分

安装

Docker操作手册
写的很详细

二进制安装

一般安装方法

这里说下二进制安装,按照官网方式Install static binaries

安装docker在Centos基本上就是yum install即可的一件事情(在ubuntu也是apt-get很容易安装),但是在实际环境中,可能遇到企业内网之内无法连接,或者安全合规审查等问题,加之下载增加了安装时间,因此二进制方式安装变成了一种实际的需要。下面是官网的安装方式

图片描述

有些时候会在sudo docker &时候出现错误
可以执行以下下面命令再试。

rm -rf /var/lib/docker 

脚本傻瓜式安装

这里提供写好的脚本,可以把脚本和下载的二进制文件放在同一目录下,然后运行sh install-docker.sh

项目 下载地址
二进制方式安装docker脚本 http://osgp88fat.bkt.clouddn.com/docker/install-docker.sh
二进制的docker安装文件 https://download.docker.com/linux/static/stable/x86_64/

程序是否正常

sudo docker info

运行容器

docker run命令提供了Docker容器的创建到启动的功能


如果要在命令行下创建一个我们能与之进行交互的容器,而不是一个运行后台服务的容器,则-i -t这两个参数是必不可少的基本参数。

apt-get update && apt-get install vim  //在容器中安装vim
exit //  推出容器,返回到Ubuntu容器的宿主机命令行提示符中

图片描述

查看当前系统中容器列表

sudo docker ps -a 

图片描述
加上-a 会显示正在运行的 和已经停止的所有容器

容器命名

一般docker会为创建的容器生成随机名称,生成指定名称用--name

sudo docker run --name jxtreehouse -i -t ubuntu /bin/bash

图片描述

附着到容器上

像上面那样,docker容器重新启动时候,会沿用docker run 命令的参数来运行,因此我们容器重新启动后会运行一个交互式会话shell。
当然,我们也可以用docker attach命令 重新附着到该容器的会话上

 sudo docker attach jxtreehouse

图片描述

创建守护式容器

除了交互式运行的容器,我们也可以创建长期运行的容器:守护式容器
特点:

  • 没有交互会话
  • 非常适合运行应用程序和服务
    所以,大多数时候我们都需要守护式运行我们的容器
sudo docker run --name jxbooks -d  ubuntu /bin/sh -c "while true;do echo hello jx;sleep 1; done"

图片描述
从上面运行结果我们可以看出,docker run命令并没有像上一个容器那样将主机的控制台附着到新的shell会话上,仅仅返回一个容器ID而已,我们还是在主机的命令中。

容器内部运行情况

### 查看日志

sudo docker jxbooks
sudo docker logs jxbooks  // 获取守护式容器日志
sudo docker logs -f jxbooks // 跟踪守护式容器的日志(-f 类似 tail -f)
sudo docker logs -ft jxbooks // 跟踪守护式容器的最新日志 (加上时间戳)

查看容器内的进程

 sudo docker top jxbooks

在容器内部运行进程

在Docker3.1之后,我们可以通过docker exec命令在容器内部额外启动新程序。
可以在容器内运行的进程有两种:

  • 后台任务
  • 交互式任务

后台任务例子:

 sudo docker exec -d jxbooks touch /etc/new_config_file

在jxbooks容器中启动一个如打开shell的交互任务:

 sudo docker exec -t -i jxbooks /bin/bash

和交互式容器一样,这里-t -i 标志为我们执行的进程创建TTY并捕捉STDIN。

停止守护式容器

sudo docker stop jxbooks

jxbooks也可用容器的ID来替代(查看id 可用 docker ps -a

自动重启容器

sudo docker run --restart=always --name jxbooks -d ubuntu /bin/sh -c "while true; do echo hello world; sleep1;done"

--restart=always 无论容器的退出代码是什么,docker都会自动重启容器
还可以设置成 on-failure (只有当容器退出代码为非 0 时候 才会自动重启)

--restart=on-failture:5 //重启次数参数

深入容器

sudo docker inspect jxbooks

删除容器

sudo docker rm  容器名或id //注意运行中的docker容器无法删除,必须先docker stop 或者 docker kill 停止容器

删除所有容器

docker rm `docker ps -a -q`

导入docker镜像并开发

在合作开发时候,我们拿到一个项目打包好的docker镜像(原开发环境为ubuntu,我们这里拿到镜像后 还用ubuntu做演示,实际开发时候,你可能是在windows 或者centos中拿到这个项目镜像来开发)
比如压缩包名datascreen.tar

我们在根目录/data文件夹中建一个docker文件夹,进入文件夹,新建tmp文件夹 ,在docker同级目录下新建 datascreen 文件夹 我们将把项目docker镜像文件映射到这里

图片描述

导入容器

sudo docker load < ${PATH}/datascreen.tar  //加载docker打包的镜像 到本宿主机   

运行Docker

sudo docker images //获取image ID
sudo docker run -d -it -p 7001:7001 -v /data/docker/tmp/:/tmp/ {image id} /bin/bash

/data/docker/tmp/ 映射到的宿主机上的目录
/tmp/ {image id} /bin/bash 镜像中的目录

启动容器

sudo docker ps  //查看运行中的容器
sudo docker start f1737f42f13b  //f1737f42f13b 是容器id
sudo docker exec -it f1737f42f13b /bin/bash

运行data-screen

cd data-screen/
nohup ./auto-run.sh &

图片描述
auto-run.sh脚本中的内容,主要是启动mongod 和用node启动入口文件index.js (这个项目是一个nodejs的后台项目)

停止docker 容器

(!危险) 如果是运行在应用上的程序和服务的守护式容器 注意不要随意停止

sudo docker ps
 sudo docker stop <CONTAINER ID>

图片描述

参考

Docker操作手册
第一本docker书

图片描述

lADPACOG83cYH_nM280Dzg_974_219_1_

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
28 2
|
1月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
84 5
|
1月前
|
Linux 持续交付 Docker
掌握Docker:从入门到实践
Docker 是一个开源容器引擎,允许开发者将应用及其依赖打包成可移植的容器,在任意 Linux 机器上运行。本文从基本概念入手,详细介绍 Docker 的安装、基本操作、镜像构建及 Docker Compose 的使用,并通过实战案例展示如何部署 Web 应用、构建微服务架构及实现 CI/CD。通过学习,你将掌握 Docker 的核心功能,提升应用开发和部署效率。
|
8天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
14天前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
52 2
|
21天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
33 3
|
26天前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
45 2
|
1月前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
1月前
|
Kubernetes Cloud Native Docker
云原生入门:Kubernetes和Docker的协同之旅
【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!
|
1月前
|
Ubuntu Linux 虚拟化
Docker入门实践(一)
Docker入门实践(一)