docker命令快速入门
docker快速入门系列
Docker hello world
hello world
$ docker run ubuntu:15.10 /bin/echo "Hello world"
Unable to find image 'ubuntu:15.10' locally
15.10: Pulling from library/ubuntu
7dcf5a444392: Pull complete
759aa75f3cee: Pull complete
3fa871dc8a2b: Pull complete
224c42ae46e7: Pull complete
Digest: sha256:02521a2d079595241c6793b2044f02eecf294034f31d6e235ac4b2b54ffc41f3
Status: Downloaded newer image for ubuntu:15.10
Hello world
docker
docker的二进制可执行文件run
与前面的docker组合来运行一个容器ubuntu:15.10
指定要运行的镜像,docker首先从本地查找镜像是否存在,如果不存在,Docker就会从镜像仓库hub下载公共镜像/bin/echo "hello world"
在启动的容器执行的命令
以上命令完整的意思就是可以解释为:Docker 以ubuntu15.10镜像创建一个新容器,然后在容器执行 bin/echo “hello world”
运行交互式容器
通过docker 的两个参数 -i -t
,让docker运行的容器实现对话的能力
[cjt@VM_0_2_centos ~]$ docker run -it ubuntu:15.10 /bin/bash
root@0c5c933112b9:/#
-i
允许宿主机和容器内的标准输入(STDIN)进行交互-t
在新容器内指定一个伪终端或终端
注意第二行
root@0c5c933112b9:/#
,此时我们已进入一个 ubuntu15.10 系统的容器
exit 命令或者使用 CTRL+D 来退出容器
启动容器
使用以下命令创建一个以进程方式运行的容器
$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
04bba0b111c0432d92b8ef2bb70abe38e6d316b74c86440cd8f5e753dff0e515
在输出中,输出了一串长字符。这个长字符叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。
需要确认容器有在运行,可以通过 docker ps 来查看:
$ docker ps
CONTAINER ID IMAGE COMMAND ...
5917eac21c36 ubuntu:15.10 "/bin/sh -c 'while t…" ...
- CONTAINER ID: 容器 ID
- IMAGE: 使用的镜像
- COMMAND: 启动容器时运行的命令
- CREATED: 容器的创建时间
- STATUS: 容器状态,状态有7种:
- created(已创建)
- restarting(重启中)
- running(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)
NAMES: 自动分配的容器名
在宿主主机内使用 docker logs 命令,查看容器内的标准输出:
$ docker logs 04bba
hello world
hello world
hello world
...
停止容器
使用docker stop
来停止容器
docker stop ID/name
Docker 容器使用
docker客户端
docker客户端非常的简单,我们可以直接输入docker命令来查看docker客户端的所有命令选项
docker
可以通过命令 docker commmand --help
更深入的了解指定的Docker命令使用方法
比如 docker stats --help
$ docker stats --help
Usage: docker stats [OPTIONS] [CONTAINER...]
Display a live stream of container(s) resource usage statistics
Options:
-a, --all Show all containers (default shows just running)
--format string Pretty-print images using a Go template
--no-stream Disable streaming stats and only pull the first result
--no-trunc Do not truncate output
容器使用
获取镜像
使用docker pull命令来加载镜像
docker pull <image name>
docker pull ubuntu
启动容器
docker run -it ubuntu /bin/bash
参数说明:
-i
: 交互式操作-t
: 终端ubuntu: ubuntu
镜像/bin/bash
:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
退出终端,直接输入exit 或者 ctrl+D
启动已停止运行的容器
查看所有容器命令
docker ps -a
使用docker start启动一个已停止的容器
docker start <ID>
后台运行
很多时候,我们希望docker的服务是在后台运行的,可以通过 -d
指定容器的运行模式
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
b3e5baeb39bcfece0ebf57f4c1ed02cdba795b7831f8bc4535761b5382aece14
加了 -d
参数默认不会进入容器,想要进入容器需要使用指令docker exec
停止一个容器
docker stop <ID>
停止之后,也可以使用restart重启容器
docker restart <ID>
进入容器
在使用 -d
参数时,容器启动后会进入后台,此时想要进入容器,可以通过以下指令进入:
docker attach <ID>
docker exec //推荐使用,此命令推出容器终端,不会导致容器的停止
docker attach df09
root@df09891647ab:/#
docker exec -it e456 /bin/bash
root@e456ea68b87e:/#
导出和导入容器
导出容器
导出本地容器,使用docker export命令
$ docker export e456 > ubuntu.tar
$ ls
ubuntu.tar
导入容器快照
使用docker import从容器快照文件中再导入为镜像,以下实例将快照文件ubuntu.tar导入到镜像test/ubuntu:v1
docker import ubuntu.tar test/ubuntu:v1
sha256:524cf96593ecb4e5d50a1c64311af7c554b97f471a60feaec4fd5fd4b11646e7
删除容器
使用docker rm
-f
是强制删除
docker rm -f <ID>
下面的命令可以清理掉所有处于终止状态的容器。
$ docker container prune
运行web应用
尝试使用docker构建一个web应用程序,接下来将在docker容器中运行一个python flash应用来运行一个web应用
$ docker pull training/webapp
Using default tag: latest
latest: Pulling from training/webapp
Image docker.io/training/webapp:latest uses outdated schema1 manifest format. Please upgrade to a schema2 imag
e for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema
-v1/
e190868d63f8: Pull complete
909cd34c6fd7: Pull complete
0b9bfabab7c1: Pull complete
a3ed95caeb02: Pull complete
10bbbc0fc0ff: Pull complete
fca59b508e9f: Pull complete
e7ae2541b15b: Pull complete
9dd97ef58ce9: Pull complete
a4c1b0cb7af7: Pull complete
Digest: sha256:06e9c1983bd6d5db5fba376ccd63bfa529e8d02f23d5079b8f74a616308fb11d
Status: Downloaded newer image for training/webapp:latest
docker.io/training/webapp:latest
$ docker run -d -P training/webapp python app.py
11ff0a880f2b8ecc59961df30d6d41db6dde603ed14efa3c063a8a86db73e673
若未指定版本,docker会自动下载latest版本
参数说明:
-d
让容器在后台运行-P
将容器内部使用的网络端口映射到我们使用的主机上
查看web应用容器
docker ps 来查看我们正在运行的容器:
runoob@runoob:~# docker ps
CONTAINER ID IMAGE COMMAND ... PORTS
d3d5e39ed9d3 training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp
这里多了端口信息。
PORTS
0.0.0.0:32768->5000/tcp
Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768上。这时我们可以通过浏览器访问WEB应用
IP:32768
也可以通过 -p 参数来设置不一样的端口:
runoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py
网络端口的快捷方式
通过 docker ps 命令可以查看到容器的端口映射,docker 还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号
$ docker port e35
5000/tcp -> 0.0.0.0:5000
查看 WEB 应用程序日志
docker logs [ID或者名字] 可以查看容器内部的标准输出。
$ docker logs -f e35
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出
查看web应用程序
使用docker inspect来查看docker底层信息。会返回一个json文件记录着docker容器的配置和状态信息
$ docker inspect e35
[
{
"Id": "e35b1e7efab3112941958924dfd2a6815ba7f86239b6b1475247272fa8950872",
"Created": "2020-05-15T09:40:38.611719555Z",
"Path": "python",
"Args": [
"app.py"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 4938,
"ExitCode": 0,
"Error": "",
"StartedAt": "2020-05-15T09:40:38.94795368Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
...
停止 WEB 应用容器
$ docker stop e35
e35
重启web应用容器
$ docker restart e35
e35
移除web应用容器
$ docker rm -f e35
e35
Docker镜像使用
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载
本节主要会学习:
- 管理和使用本地Docker主机镜像
- 创建镜像
docker命令快速入门的更多相关文章
- 【MATLAB】常用命令快速入门,国赛加油
矩阵运算 矩阵的基本生成 m1 = 1:5 % 生成行矩阵[1,2,3,4,5] m2 = 1:2:10 % 起点:步长:终点 [1,3,5,7,9] linspace(x1,x2,n) % 生成 n ...
- Docker三十分钟快速入门(下)
一.背景 上篇文章我们进行了Docker的快速入门,基本命令的讲解,以及简单的实战,那么本篇我们就来实战一个真实的项目,看看怎么在产线上来通过容器技术来运行我们的项目,来达到学会容器间通信以及dock ...
- Git命令行之快速入门
从头开始创建一个版本库,添加一些内容,然后管理一些修订版本. 有两种建立 Git版本库 的基础技术.第一:从头开始创建,用现有的内容填充它.第二:可以克隆一个已有的版本库.这里选择从一个空的版本库开始 ...
- Docker(2):快速入门及常用命令
什么是Docker? Docker 是世界领先的软件容器平台.开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题.运维人员利用 Docker 可以在隔离容器中并行运行和管理 ...
- Docker入门教程(六)另外的15个Docker命令
Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...
- Docker三十分钟快速入门(上)
一.背景 最近,Docker技术真是一片火热,它的出现也弥补了虚拟机资源消耗过高的问题,直接让虚拟化技术有了质的飞跃.那么本文我们来聊一聊Docker,和大家一起认识Docker,简单入门Dock ...
- Docker快速入门(二)
上篇文章<Docker快速入门(一)>介绍了docker的基本概念和image的相关操作,本篇将进一步介绍image,容器和Dockerfile. 1 image文件 (1)Docker ...
- Docker学习系列(二):Docker三十分钟快速入门(上)
一.背景 最近,Docker技术真是一片火热,它的出现也弥补了虚拟机资源消耗过高的问题,直接让虚拟化技术有了质的飞跃.那么本文我们来聊一聊Docker,和大家一起认识Docker,简单入门Dock ...
- 一文快速入门Docker
Docker提供一种安全.可重复的环境中自动部署软件的方式,拉开了基于与计算平台发展方式的变革序幕.如今Docker在互联网公司使用已经非常普遍.本文用十分钟时间,带你快速入门Docker. Dock ...
随机推荐
- html转png
/*海报弹窗2018-3-14*/.diglogimg{position: fixed;top:0;left:0;z-index: 99;width: 100%;height: 100%;backgr ...
- 死磕Spring之IoC篇 - Bean 的“前身”
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- call、apply和bind的实现
call方法 基础版, 只能修改指向,不能传参 Function.prototype.myCall = function(context) { // 获取调用者,这里为bar context.fn = ...
- EFCodeFirst Migrations数据库迁移
EFCodeFirst Migrations数据库迁移 数据库迁移 1.生成数据库 修改类文件PortalContext.cs的静态构造函数,取消当数据库模型发生改变时删除当前数据库重建新数据库的设置 ...
- Zeebe服务学习3-Raft算法与集群部署
1.背景Zeebe集群里面保证分布式一致性问题,是通过Raft实现的,其实这个算法用途比较广泛,比如Consul网关,也是通过Raft算法来实现分布式一致性的. 首先简单介绍一下Raft: 在学术界, ...
- Linux:使用systemd管理进程
Blog:博客园 个人 概述 systemd是目前Linux系统上主要的系统守护进程管理工具,由于init一方面对于进程的管理是串行化的,容易出现阻塞情况,另一方面init也仅仅是执行启动脚本,并不能 ...
- Java 集合框架 03
集合框架·HashSet 和 TreeSet HashSet存储字符串并遍历 * A:Set集合概述及特点 * 通过API查看即可 * 无索引,不可以重复,无序 * B:案例演示 * HashSet存 ...
- 进阶Java多线程
一.多线程创建方式 1.1.继承Thread类创建线程类 1.实现步骤 定义一个继承Thread类的子类,并重写该类的run()方法: 创建Thread子类的实例,即创建了线程对象: 调用该线程对象的 ...
- 几大BSD 区别
OpenBSD 侧重于安全,软件包较少,较陈旧,比如 KDE 才 3.5,为了安全舍弃了 sudo 和 linux 兼容层: FreeBSD 是开发者最多用户最多软件包最多的,有 ZFS 和 Linu ...
- ClickHouse元数据异常-MySQLHandlerFactory:Failed to read RSA key pair from server
Clickhouse版本:20.3.6.40-2 clickhouse集群三个节点,一分片,三副本,三个节点数据完全一样 1. 问题描述 在使用连接工具操作时,发现其中一个节点连接拒绝,无法操作,另外 ...