Docker的简要介绍及使用

Docker是一种操作系统层面的虚拟化技术,应用进程直接运行于宿主的内核,没有自己的内核,而且也没有进行硬件虚拟。

优点

  • 没有硬件虚拟以及运行完整操作系统等额外开销,更高效的利用系统资源
  • 直接运行于宿主内核,无需启动完整操作系统,秒级、毫秒级的启动时间
  • 一致的运行环境
  • 更轻松的迁移
  • 更轻松的维护和扩展

基本概念

  • 镜像: 特殊的文件系统,是容器创建时的模板,相当于面向对象中的类
  • 容器: 镜像运行时的实体,相当于面向对象中的对象,可以创建、启动、停止、删除、暂停等
  • 仓库: 包含不同软件、不同版本的仓库

安装 docker-ce(CE:社区版 EE:企业版)

CentOS

1.卸载旧版本

sudo yum remove docker docker-common docker-selinux docker-engine

2.安装依赖包

sudo yum install-y yum-utils device-mapper-persistent-data lvm2

3.添加yum国内源

sudo yum-config-manager--add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.更新yum软件源缓存

sudo yum makecache fast

5.安装 docker-ce

sudo apt-getinstall docker-ce

6.启动 docker

sudo systemctl enable docker sudo systemctl start docker

镜像

获取镜像

docker pull[选项][DockerRegistry地址]<仓库名>:<标签>

  • 选项: 可通过 docker pull –help 了解option
  • Docker Registry 地址: 默认 Docker Hub
  • 仓库名: <用户名>/<软件名>,对于 Docker Hub ,默认 library,也就是官方镜像
  • 标签: 软件版本
更新镜像

1.在原镜像的容器内,进行更改或更新

2.提交docker commit -m='进行了XXX的更新' -a='更新人' e218edb10161 ubuntu:v2

3.通过 docker images,查看新镜像

创建镜像

1.编写 Dockerfile 文件

runoob@runoob:~$ cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

2.构建镜像

docker build-t ubuntu:v3.

  • -t:指定要创建的目标镜像名
  • . :指定Dockerfile文件目录

3.通过 docker images,查看新镜像

运行容器

docker run 只在不存在某个镜像的容器时使用,其他情况启动容器,docker start即可

运行容器,并执行 command

docker run ubuntu:15.10/bin/echo"Hello world"

运行交互式容器

docker run-i-t ubuntu:15.10/bin/bash

  • -i: 终端
  • -t: 交互式操作
进程方式运行容器(后台模式)
  • 后台运行容器,并返回容器id
    docker run-d ubuntu:14.04/bin/echo"hello lee"
  • 查找运行的容器
    docker ps
  • 查看容器的标准输出
    docker logs33fa4c2fc457
  • 停止容器
    docker stop33fa4c2fc457

命令汇总

1.查看本地主机的镜像

docker images

2.从 Docker Hub 查找镜像

docker search httpd

3.设置镜像标签

docker tag 860c279d2fec ubuntu:dev

4.删除镜像(必须先把镜像的所有容器删除)

docker rmi imageID

5.启动容器

docker start 7a38a1ad55c6

docker start determined_swanson

6.停止容器

docker stop 7a38a1ad55c6

docker stop determined_swanson

7.重启容器

docker restart 7a38a1ad55c6

docker restart determined_swanson

8.查看所有容器

docker ps -a

9.查看所有容器(只查找正在运行的容器)

docker ps

10.查询最后一次创建的容器

docker ps -l

11.删除容器(容器必须是停止状态)

docker rm determined_swanson

12.进入一个已经运行的容器

docker exec -it 860c279d2fec bash

13.查看容器配置信息和状态信息

docker inspect 7a38a1ad55c6

docker inspect determined_swanson

14.查看容器内运行的进程

docker top 7a38a1ad55c6

docker top determined_swanson

15.将容器内部的网络端口映射到宿主机

随机映射到主机端口 docker run -P training/webapp python app.py

映射到指定的主机端口 docker run -p 5000:5000 training/webapp python app.py

16.查看容器端口的映射情况

docker port 7a38a1ad55c6

docker port determined_swanson

    原文作者:Lee_DH
    原文地址: https://www.jianshu.com/p/e4d81e0dea03
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞