Docker系列-基础入门


[ TOP ]

官网


https://www.docker.com
https://hub.docker.com/

常用命令


  • 帮助命令
# 查看run 命令的帮助信息
docker run --help
  • 显示 Docker 版本信息。
docker version
  • 显示 Docker 系统信息,包括镜像和容器数。
docker info

镜像相关


  • 查看镜像
docker images
  • 查看镜像详细信息
docker inspect <IMAGE ID>
  • 搜索镜像

可以到docker hub 或者命令行搜索
https://hub.docker.com/

alex@Alex  ~  docker search ubuntu
NAME                                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                                                 Ubuntu is a Debian-based Linux operating s...   6645      [OK]
dorowu/ubuntu-desktop-lxde-vnc                         Ubuntu with openssh-server and NoVNC            131                  [OK]
rastasheep/ubuntu-sshd                                 Dockerized SSH service, built on top of of...   105                  [OK]
ansible/ubuntu14.04-ansible                            Ubuntu 14.04 LTS with ansible                   87                   [OK]
  • 下载镜像
docker pull ubuntu
  • 删除镜像
docker rmi <IMAGE_ID>
  • 容器导出(保存当前的容器为一个镜像)

语法:

docker save [OPTIONS] IMAGE [IMAGE...]

容器相关


  • docker和宿主机之间复制文件
# 从主机复制到容器
sudo docker cp host_path containerID:container_path
# 从容器复制到主机
sudo docker cp containerID:container_path host_path
# 容器ID的查询方法想必大家都清楚:docker ps -a
  • 列出容器
docker ps - Lists containers.
-l:显示最后启动的容器
-a:同时显示停止的容器,默认只显示启动状态
  • 停止、启动、杀死一个容器
$docker stop  Name/CONTAINER_ID
$docker start Name/CONTAINER_ID
$docker kill  Name/CONTAINER_ID
  • 删除所有容器
$docker rm `docker ps -a -q`
  • 删除指定容器
$docker rm Name/CONTAINER_ID
  • 创建一个新的容器并运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS:

  • -a stdin : 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  • -d : 后台运行容器,并返回容器ID;
  • -i : 以交互模式运行容器,通常与 -t 同时使用;
  • -t : 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • --name=”nginx-lb” : 为容器指定一个名称;
  • --dns 8.8.8.8 : 指定容器使用的DNS服务器,默认和宿主一致;
  • --dns-search example.com : 指定容器DNS搜索域名,默认和宿主一致;
  • -h “mars” : 指定容器的hostname;
  • -e username=”ritchie” : 设置环境变量;
  • --env-file=[] : 从指定文件读入环境变量;
  • --cpuset=”0-2” or –cpuset=”0,1,2” : 绑定容器到指定CPU运行;
  • -m : 设置容器使用内存最大值;
  • --net=”bridge” : 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
  • --link=[] : 添加链接到另一个容器;
  • --expose=[] : 开放一个端口或一组端口;
  • --rm : 退出时删除容器
  • -v : 挂载目录,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径
  • --device /dev/ttyUSB0:/dev/ttyUSB0 : 指定了宿主机的串口设备以及容器的映射串口设备
  • --privileged : Docker将拥有访问主机所有设备的权限

例子

  • 1.使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
  • 2.使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest
  • 3.使用镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data映射到容器的/data。
docker run -p 80:80 -v /data:/data -d nginx:latest
  • 4.使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
runoob@runoob:~$ docker run -it nginx:latest /bin/bash
root@b8573233d675:/#
  • 进入一个开启的容器

    • 方法一:
      使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。 (适合个人开发)
docker attach <CONTAINER_ID>
    • 方法二:
      使用docker exec进入Docker容器
$ sudo docker ps
$ sudo docker exec -it <CONTAINER_ID> /bin/bash

网络管理


新的linux 没有带 ifconfig 命令,而是用ip 命令代替
如果想使员工__ifconfig___ 就要安装

apt-get install net-tools

网络命令介绍

  • iptables
# 进行安装
apt-get install iptables

新镜像创建


基于某个镜像运行起来之后,创建一个新的镜像

  • 运行某个镜像(ubuntu:v1)
docker run -it ubuntu:v1 /bin/bash-
  • 对镜像进行修改(安装ping 命令)
apt-get install inetutils-ping
  • 退出容器,查看容器ID
docker ps -a
  • commit docker 容器的修改(alexubuntu: 为修改后新的镜像名称)
docker commit -m "add hello.c" -a "AlexLin" 04727fbe69a3 alexubuntu
  • 查看新镜像信息
✘ alex@Alex  ~  docker images alexubuntu
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
alexubuntu          latest              780ea1933dc9        About a minute ago   163.5 MB
  • 导出最新的镜像(save 方式)
docker save -o alexubuntu.tar alexubuntu
  • 导入镜像(load 方式)
docker load<alexubuntu.tar
  • 查看
alex@Alex  ~  docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alexubuntu          latest              780ea1933dc9        3 minutes ago       163.5 MB
ubuntu              v1                  41269ec1cc87        23 minutes ago      163.5 MB
  • 使用 export 和 import 命令
  • 选择要导出的镜像 CONTAINER ID
alex@Alex  ~  docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                         PORTS               NAMES
65cd9e63d321        ubuntu:v1           "/bin/bash"         11 minutes ago      Exited (0) 11 minutes ago                          grave_panini
04727fbe69a3        ubuntu:v1           "/bin/bash"         About an hour ago   Up About an hour                                   elated_poincare
591034c72b82        ubuntu              "/bin/bash"         3 hours ago         Exited (0) About an hour ago                       nauseous_tesla
  • 导出镜像
alex@Alex  ~  docker export 65cd9e63d321>newubuntu.tar
alex@Alex  ~  ll newubuntu.tar
-rw-r--r--  1 alex  staff   128M 10  7 22:09 newubuntu.tar
  • 导入镜像(newubuntu:为镜像名称)
✘ alex@Alex  ~  cat newubuntu.tar | docker import - newubuntu
sha256:ecc200f7c4c3a6b1249708c46a627e54dc81ad5e3370ce9d57ad3b413e73e6c0
  • 查看
✘ alex@Alex  ~  docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
newubuntu           latest              ecc200f7c4c3        20 seconds ago      129.9 MB

Docker中export save 的区别

export : 是基于当前容器的最新状态,导出来的一个镜像,不会保留历史版本信息,所以体积会比较轻;
save : 是针对镜像images,导出来的,会把镜像的历史也一致导入到新的镜像中,可以回滚以前的配置 ,所以体积会比较大;

Dockerfile 制作镜像


dockerfile 制作镜像是更标准的方式

常见问题


docker commit

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

REPOSITORY : 不支持大写字母,不然会出现以下错误

alex@Alex  ~  docker commit -m "add hello.c" -a "AlexLin" 04727fbe69a3 AlexUbuntu
invalid reference format

文章作者: AlexLin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 AlexLin !
 上一篇
COAP系列-入门介绍 COAP系列-入门介绍
官网http://coap.technology/WiKihttps://en.wikipedia.org/wiki/Constrained_Application_Protocol开源库https://github.com/miri64/
2017-10-18
下一篇 
SPI协议 SPI协议
1. 一点基础介绍 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MISO(数据输入),MOSI(数据输出),SC
2017-08-17
  目录