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

作者: 麦冬 锻石

基础部分

安装

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书

时间: 2024-12-03 10:58:41

Docker入门(一)————五叶草的相关文章

Docker安装和基础用法 Docker入门教程第二篇_docker

本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 (4)Docker 容器的隔离性 - 使用 cgroups 限制容器使用的资源 (5)Docker 网络 1. 安装 1.1 在 Ubuntu 14.04 上安装 Docker 前提要求: 内核版本必须是3.10或者以上 依次执行下面的步骤: sudo apt-get update sudo apt

什么是docker Docker入门教程第一篇_docker

Docker是个新生的事物,概念类似虚拟化.网上关于Docker入门的东西已经很多了.不过本文探讨了Docker的特点.特性.原理,还介绍了具有中国特色的安装测试过程,另外还谈到了Docker的社区生态和Dockerfile,并使用Dockerfile构建一个nginx环境. 缘起 在几个月前听说Docker,但是一直没有时间去研究,前一段时间趁着azure免费试用,赶紧实验一下,但是卡在了ubuntu基础镜像的下载上(由于国内网络的特殊原因),所以也就搁浅了,这里把经验和体会分享一下. Doc

我的碎碎念:Docker入门指南

本文讲的是我的碎碎念:Docker入门指南,[编者的话]之前曾经翻译过很多Docker入门介绍的文章,之所以再翻译这篇,是因为Anders的角度很独特,思路也很调理.你也可以看下作者的演讲稿<Docker, DevOps的未来>.本文介绍了Docker的一些基本概念.诱人的特性.Docker的工作原理.日常管理基本操作,以及一些Docker的问题的解决方案. 什么是Docker,你应该知道些什么? 相比很多人的解释,我相信说Docker是一个轻量级的虚拟机更容易理解.另外一种解释是:Docke

[Docker入门系列教程] 目录索引

  Docker是一个开源平台,使开发者和系统管理员可以构建.发布和运行分布式应用.Docker包括Docker引擎.可移植的轻量级运行环境和打包工具,Docker Hub提供了分享应用和自动化工作流的云服务,Docker可以使应用由多个组件快速装配起来,消除了开发.测试和生产环境的差异.因此,应用可以更快地发布,可以运行在本地.数据中心虚拟设备和任何云端,无需更改任何配置.  下面是我之前写的Docker入门系列文章的目录索引,感兴趣的朋友可以点击文章链接查看.   [Docker系列·0]

Docker入门教程(四)Docker Registry

本文讲的是Docker入门教程(四)Docker Registry,[编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它是Docker中的重要组件.本文通过情景演绎的方式对其进行了介绍,图文并茂,强烈推荐读者阅读. 在Docker系列教程的上一篇文章中,我们讨论了Dockerfile的重要性并提供了一系列Dockerfile的命令,使镜像的自动构建更加容易.在这篇文章中,我们将介绍Docker的一个重要组件

Docker入门教程(八)Docker Remote API

本文讲的是Docker入门教程(八)Docker Remote API,[编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote API. 在Docker系列教程的上一篇文章中,我们学习了Docker Hub 以及 Docker Registry API.在本文中,让我们来看看Docker Remote API. Docker Remote API Docker Remote API是一个取代远程命令行界面(rcl

Docker入门教程(六)另外的15个Docker命令

本文讲的是Docker入门教程(六)另外的15个Docker命令,[编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章中我们就介绍了一些基本的Docker命令,本文过后,你将会接触到所有的Docker常用命令.努力学习吧. 在之前的文章中,我们介绍了15个Docker命令,并分享了它们的实践经验.在这篇文章中,我们将学习另外的15个Docker命令.它们分别是: daemon: Docker daemon

大白话Docker入门(一)

大白话Docker入门(一) 随着docker现在越来越热门,自己也对docker的好奇心也越来越重,终于忍不住利用了一些时间把docker学习一遍.目前的资料不少,但是由于docker的发展较快,每个团队对docker的关注点也并不相同,大部分的文章还是不够完整和易懂,所以希望有这样一篇文章能让大家通过简单的阅读来客观全面的认识一下docker. (提前申明一下,文章内容不会涉及较深入的使用,主要为了阐述docker的概念和入门的使用.并且我也是docker的初学者,并没有过丰富的使用经验,所

大白话Docker入门(二)

大白话Docker入门(二) 上篇的大白话Docker入门(一)让我们认识了docker,知道docker大概是怎么玩的.初步的印象可能会让你觉得和现在的VM的部署方式也挺像的,比如docker image就是一个系统备份文件,docker container就是一个跑起来的vm,那docker到底又有什么特别的呢? 不一样的Docker 简单的列一下目前这个阶段我们很容易发现的几点: docker image的体积非常的小,注意看下之前我们用到的几个image的size,一个完整功能的ubun

Docker入门教程(七)Docker API

本文讲的是Docker入门教程(七)Docker API,[编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和Docker Hub API. 纵观我们的Docker系列教程,我们已经讨论了很多重要的Docker组件与命令.在本文中,我们将继续深入学习Docker:剖析Docker APIs. Docker提供了很多的API以便用户使用.这些API包含四个方面: Docker Registry AP