Docker触碰(一)
程序员文章站
2022-07-12 21:19:30
...
简介
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
容器与镜像的关系类似于面向对象编程中的对象与类。
通常场景
- web应用的自动化打包和发布;
- 自动化测试和持续集成、发布;
- 在服务型环境中部署和调整数据库或其他的后台应用;
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
安装Docker
- 在ubuntu上面安装docker:
root@ubuntu:~$ wget -qO- https://get.docker.com/ | sh
- 查看docker版本:
root@ubuntu:/etc/default# docker version
Client:
Version: 18.05.0-ce
API version: 1.37
Go version: go1.9.5
Git commit: f150324
Built: Wed May 9 22:16:25 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.05.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: f150324
Built: Wed May 9 22:14:32 2018
OS/Arch: linux/amd64
Experimental: false
- 镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的镜像地址(在/etc/default/docker文件末尾添加):
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
- 运行Helloworld:
root@ubuntu:/etc/default# docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world
各个参数解析:
- docker: Docker 的二进制执行文件。
- run:与前面的 docker 组合来运行一个容器。
- ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库
Docker Hub 下载公共镜像。 - /bin/echo “Hello world”: 在启动的容器里执行的命令。
启动容器(后台模式)
使用以下命令创建一个以进程方式运行的容器:
root@ubuntu:/etc/default# docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
49f3dfeb1a3da2c08610e64f6fd222123bf195bd97b6eb3c9b42ba00efd9a035
在输出中,看到期望的”hello world”,而是一串长字符
49f3dfeb1a3da2c08610e64f6fd222123bf195bd97b6eb3c9b42ba00efd9a035
这个长字符串叫做容器ID,对每个容器来说都是唯一的,可以通过容器ID来查看对应的容器发生了什么。
首先,需要确认容器有在运行,可以通过 docker ps 来查看:
root@ubuntu:/etc/default# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
49f3dfeb1a3d ubuntu:15.10 "/bin/sh -c 'while t…" 2 minutes ago Up 2 minutes elastic_visvesvaraya
CONTAINER ID:容器ID
NAMES:自动分配的容器名称
在容器内使用docker logs命令,查看容器内的标准输出:
停止容器:
root@ubuntu:/etc/default# docker stop 49f3dfeb1a3d
49f3dfeb1a3d
root@ubuntu:/etc/default# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@ubuntu:/etc/default#