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

简介: 入门 看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日志并进行多维度分析。
相关文章
|
2月前
|
关系型数据库 MySQL Java
Docker Compose详细教程(从入门到放弃)
Docker Compose详细教程(从入门到放弃)
205 0
|
3月前
|
运维 虚拟化 开发者
Docker-全面详解(学习总结---从入门到深化)
Docker-全面详解(学习总结---从入门到深化)
49 1
|
4月前
|
大数据 数据管理 Docker
【Datahub系列教程】Datahub入门必学——DatahubCLI之Docker命令详解
【Datahub系列教程】Datahub入门必学——DatahubCLI之Docker命令详解
260 0
|
5天前
|
存储 虚拟化 数据中心
|
4天前
|
安全 Linux 数据库
Docker 入门详解
通过遵循这些步骤,你将能够快速入门 Docker 并开始探索容器化的世界,关注 V 哥,技术之路一起成长。
|
9天前
|
存储 Apache Swift
无限套娃_docker入门(镜像、容器、仓库)
无限套娃_docker入门(镜像、容器、仓库)
17 0
|
9天前
|
Linux 虚拟化 Docker
docker入门
docker入门
19 2
|
10天前
|
存储 运维 Docker
Docker从入门到精通:Docker 容器数据卷详解
Docker 数据卷是持久化容器数据的关键机制,允许跨容器或主机共享,即使容器删除数据仍保留。创建数据卷可通过命令行或容器启动时指定,挂载到容器目录以读写。使用 `docker volume` 命令可管理数据卷,适用于持久化存储、数据共享及备份场景。了解和善用数据卷能优化 Docker 应用程序的运维。
20 0
|
10天前
|
监控 Docker 容器
Docker从入门到精通:Docker log 命令学习
了解 Docker 日志管理对容器监控至关重要。`docker logs` 命令用于查看和管理容器日志,例如,`docker logs &lt;container_name&gt;` 显示容器日志,`-f` 或 `--follow` 实时跟踪日志,`--tail` 显示指定行数,`--timestamps` 添加时间戳,`--since` 按日期筛选。Docker 支持多种日志驱动,如 `syslog`,可通过 `--log-driver` 配置。有效管理日志能提升应用程序的稳定性和可维护性。
13 0
|
14天前
|
机器学习/深度学习 数据挖掘 Docker
《Docker 简易速速上手小册》第1章 Docker 基础入门(2024 最新版)
《Docker 简易速速上手小册》第1章 Docker 基础入门(2024 最新版)
24 1