Docker 学习笔记

读书笔记,持续更新

核心概念

  1. 镜像
    类似虚拟机镜像,通常包含一个基本的操作系统环境。
  2. 容器
    类似于一个轻量级沙箱,docker利用容器来运行和隔离应用。
  3. 仓库
    docker仓库类似于代码仓库,集中存放镜像文件。

安装

Docker目前只支持64位平台

Mac

brew一把梭简单粗暴

brew install docker

Ubuntu

系统信息

Ubuntu 18.04
Linux VM-0-3-ubuntu 4.15.0-54-generic #58-Ubuntu SMP Mon Jun 24 10:55:24 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

安装命令

sudo apt-get install -y apt-transport-https

用官方自动脚本

sudo curl -sSL https://get.docker.com/ | sh

看下安装结果

配置服务

每次都要加sudo很麻烦
添加用户组

sudo usermod -aG docker ubuntu

管理服务:
sudo systemctl start docker.service

wget -qO- https://get.docker.com/ | sh

Docker镜像

DockerHub

常用命令

docker pull 获取镜像
    -a 获取所有
docker images 列出镜像
    -a 列出所有
    --digests 列处数字摘要
    -f 过滤
    --no-trunc 截断 默认为是
docker tag 添加标签
docker inspect 查看详细信息
docker history 查看镜像历史
docker search 搜索镜像
    --automated 仅显示自动创建的
    --no-trunc 输出不截断 
    -s 筛选评价星级
docker rmi 删除镜像

docker load 加载镜像
docker load --input demo.rar 
docker load < demo.rar

docker push 上传镜像

获取镜像:docker pull NAME[:TAG]
搜索镜像:docker search NAME

镜像的ID唯一标识镜像。可用ID前若干个字符替代完整ID。
docker inspect 查看详细信息

创建镜像

基于已有镜像的容器创建

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

-a, --author="":作者信息
-c, --change=[]:提交的时候执行Dockerfile命令
-m, --message="":提交消息
-p, --pause=true:提交时暂停容器运行

容器操作

创建容器

docker create
创建后用docker start启动。

也可以直接新建并启动
docker run ubuntu /bin/echo 'hello world'
启动终端
docker run -it ubuntu:14.04 /bin/bash

常见错误代码:

  • 125:docker daemon执行出错
  • 126:指定命令无法执行,如权限问题
  • 127:容器内命令无法找到

守护态运行

参数 -d
docker logs获取输出信息

端口映射

-P :是容器内部端口随机映射到主机的高端口。
-p : 是容器内部端口绑定到指定的主机端口。

终止容器

docker stop
也可用exitctrl+D退出容器终端同时终止容器

进入容器

attach

不方便 很少用

docker attach [--detach-keys][--no-stadin][--sig-proxy] CONTAINER

exec

docker exec -it CONTAINER /bin/bash

nsenter

之前用这个方法tcpdump抓docker的流量

docker ps | grep xxx 获取容器id/name
docker inspect --format "{{.State.Pid}}" container_id/name 获取PID
nsenter -n -t container_id/name 使用nsenter切换网络命名空间
tcpdump -i eth0 -w xxx.pcap

删除容器

docker ps -a查看处于终止状态的容器

使用docker rm删除,并不能删除正在运行的容器
可以加-f参数强行删除

导入导出容器

参考

《Docker技术入门与实战》

原文地址:https://www.cnblogs.com/twosmi1e/p/13303164.html