轻量级虚拟机应用容器 Docker

本贴最后更新于 2190 天前,其中的信息可能已经事过境迁

docker 简介

定义:轻量级虚拟机 应用容器
优点
1.摆脱依赖库以及繁琐的配置
2.数据和内存控件相互隔离,保证一定的安全性
与 VM 区别
性能开销少,资源利用率高,启动速度快
VM 在 Hypervisor 将硬件设备虚拟化,每个容器需要安装自己的 os。

docker 安装

这个可以参考

Windows 安装方法

Windows Docker 安装 | 菜鸟教程

Ubuntu Docker 安装

Ubuntu Docker 安装 | 菜鸟教程

CentOS Docker 安装

CentOS Docker 安装 | 菜鸟教程

Windows Docker 安装

Windows Docker 安装 | 菜鸟教程

docker 命令

docker 容器的相关命令

1.查看运行的 docker 容器 docker ps
查看所有容器(包括已经停止运行的)

docker ps -a

2.查看某个容器的日志 docker logs 镜像名称/id
3.删除容器 docker rm

docker rm $(docker ps -a | awk '/training\/webapp/ {print $1}')
docker attach

4.在容器里执行命令 docker exec

docker exec -it <image id> /bin/bash

5.进入容器进行命令操作 docker attach < 容器 id>

使用 docker attach 命名进入 docker 容器后:

  • 如果要正常退出不关闭容器,请按 Ctrl+P+Q 进行退出容器。

  • 如果使用 exit 退出,那么在退出容器后会关闭容器

6.查看容器详细情况 docker inspect

查看容器 ip

docker inspect --format='{{.Path}}{{.NetworkSettings.IPAddress}}' $(docker ps -a -q) 

查看容器的挂载情况

docker inspect --format='{{.Path}}{{.Mounts}}' $(docker ps -a -q) 

7.容器打包成镜像 docker commit

命令把一个正在运行的容器保存为镜像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

docker commit <CONTAIN-ID> <IMAGE-NAME>

参数说明:
-a :提交的镜像作者;
-c :使用 Dockerfile 指令来创建镜像;
-m :提交时的说明文字;
-p :在 commit 时,将容器暂停。
8.启动已存在的容器

docker start	

9.查看 docker 状态 docker stats {容器名称}
10.docker 复制文件操作 docker cp

示例

docker cp /www/runoob 96f7f14e99ab:/www/

11.导出 docker export {docker 容器}

使用容器 nginx,现在要将这个容器保存为一个文件 nginx.tar

docker export nginx > /home/nginx.tar  

12.导入 docker import

docker import {tar 文件} {镜像名称}

docker import hello.tar.zg hello

13.查看端口映射 docker port {容器名称}

docker port php
9000/tcp => 0.0.0.0:9000

14.更改映射

iptables -t nat -A DOCKER -p tcp --dport host_port -j DNAT --to-destination docker_ip:$docker_port

比如 php-fpm 的 ip 172.17.0.2

sudo iptables -t nat -A DOCKER -p tcp --dport 2021 -j DNAT --to-destination 172.17.0.2:22

docker 镜像相关命令

1.查看镜像列表 docker images
2.删除镜像 docker rmi

移除所有的容器和镜像

docker kill $(docker ps -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q -a)   

3.搜索镜像 docker search
4.获取镜像 docker pull {镜像名称}

如果拉取时间过慢则需要增加中国源

6.创建容器并启动 docker run

docker run -p {容器的IP}:{主机的IP} --name {容器的名称} -v {主机目录}:{容器目录} -d {镜像名称 :版本}

参数:
-p 端口映射
-v 目录映射
-it 打开 stdin ,终端登录
-d 前台还是后台

win10 使用挂载
docker run -v f:/user:/data alpine ls /data

运行镜像 直接进入容器

docker run -t -i xxx /bin/bash 

附加:supervisord

docker run .... /usr/bin/supervisord

注:supervisor 是用 Python 开发的一套通用进程管理程序,能将一个普通的命令行进程变为后台 daemon,并监控进程状态,异常退出时能自动重启。可通过 supervisorctl status 查看 supervisord 当前管理的所有进程的状态

7.存出 docker save {镜像}

docker save -o quay.io-calico-node-1.tar quay.io/calico/node 

有一个基础镜像 centos,现在要将这个镜像保存为一个文件 centos-save-1204.tar

docker save centos > /home/centos-save-1204.tar  

8.载入 dokcer load

	dokcer load -i XXX.tar

导出 export 与 保存 save 的区别

1 .export 导出的镜像文件大小 小于 save 保存的镜像
2 .export 导出(import 导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史,所以无法进行回滚操作(docker tag );而 save 保存(load 加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。(查看方式:docker images --tree)

Dockerfile

1.使用 Dockerfile
文件名: Dockerfile
使用命令

sudo docker build -t {docker镜像的名字} .

docker 安装

    本人使用的环境:win10 家庭中文版
PS:为什么不直接升级 win10 专业版,这样就不需要安装 docker-toolbox,那是因为不管是什么版本的 windows,启动 docker 的本质来源(linux 系统)都是一样,只是一个使用的 visualbox 一个使用的是 hyper-V
最关键是:hyper-v 不稳定,而且 docker 挂载直接就是一个硬盘,很不方便

如何绿色安装 docker[持续更新]

image

将最新的镜像放到 C:\Users\用户名\.docker\machine\cache\
删除C:\Users\用户名\.docker\machine\machines\default

然后重新打开 Docker Quickstart Terminal
在启动命令上可以看到 默认会从 cache 中 iso 复制到 default\boot2docker.is

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    492 引用 • 926 回帖
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    574 引用 • 3533 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...