Docker容器简用

一、安装

①RedHat/CentOS下的docker安装

RedHat/CentOS必须要6.6版本以上,或者7.x才能安装docker,建议在RedHat/CentOS 7上使用docker,因为RedHat/CentOS 7的内核升级到了kernel 3.10,对lxc容器支持更好。

# yum -y install docker
# systemctl start docker

②Ubuntu下docker安装

# sudo apt-get install docker.io
# service docker.io start

二、查看docker版本

# docker version
 Client:
 Version:      1.8.2-el7.centos
 API version:  1.20
 Package Version: docker-1.8.2-10.el7.centos.x86_64
 Go version:   go1.4.2
 Git commit:   a01dc02/1.8.2
 Built:        
 OS/Arch:      linux/amd64
Server:
 Version:      1.8.2-el7.centos
 API version:  1.20
 Package Version: 
 Go version:   go1.4.2
 Git commit:   a01dc02/1.8.2
 Built:        
 OS/Arch:      linux/amd64

三、查看docker安装的相关信息

# docker info
Containers: 1
Images: 6
Storage Driver: devicemapper
 Pool Name: docker-253:0-35256846-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 2.052 GB
 Data Space Total: 107.4 GB
 Data Space Available: 14.88 GB
 Metadata Space Used: 1.774 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.146 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.107-RHEL7 (2015-10-14)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-229.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 1
Total Memory: 475.7 MiB
Name: docker
ID: 22N4:5F3A:UW62:O5MQ:LVV2:RLQY:3YFU:AABC:DJFC:3HNV:UG3E:7OEK

四、列出、搜索镜像

# docker images                           ##列出本地已有的镜像
# docker  search cenots                   ##从默认镜像仓库搜索镜像

注:没有/分隔前缀的表示官方镜像,尽量选择官方镜像或者下载量较高的镜像使用

五、下载镜像并查看

①下载Ubuntu15.10

# docker  pull ubuntu:15.10
3e0c71ada2db: Download complete 
6cd64557b0fd: Download complete 
b53bfb363b42: Download complete 
7644a86243c4: Download complete 
Status: Downloaded newer image for docker.io/ubuntu:15.10

②下载CentOS7

# docker  pull centos:7
60e65a8e4030: Download complete 
47d44cb6f252: Download complete 
838c1c5c4f83: Download complete 
5764f0a31317: Download complete 
Status: Downloaded newer image for docker.io/centos:7

③查看镜像

# docker images                     
REPOSITORY           TAG       IMAGE ID      CREATED      VIRTUAL SIZE
  储存库             标签       镜像ID       创建时间         大小
docker.io/centos    7        60e65a8e4030  2 weeks ago         196.6 MB
docker.io/ubuntu    15.10    3e0c71ada2db  4 weeks ago         133.5 MB

六、启动一个docker容器

# docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

主要选项:

-d : 以后台进行方式运行容器

-t : 提供一个伪终端

-i : 提供交互输入,一般与“-t”一起使用,如只提供“-i”选项,则容器启动后无法退出

-v : 映射一个volume给容器,如:  -p /data/www:/var/www/html

-p : 将容器的端口映射给宿主机,如: -p 8080:80

实例1:

# docker run -it centos:7 /bin/bash       ##以交互方式启动一个容器
[[email protected] /]# ls
anaconda-post.log  dev  home  lib64       media  opt   root  sbin  sys  usr
bin                etc  lib   lost+found  mnt    proc  run   srv   tmp  var
[[email protected] /]# exit
exit
# docker commit -m "centos" -a "zhi" 12984bf5e533 zhi/centos:v1
016e8163a8b0dcc93c7ea651bb8e6f9490a1f4321e2c2df0be6d1b6b08c12ad3

注:commit命令用来将容器转化为镜像,-m参数用来指定提交的说明信息;

-a参数用来指定用户信息;12984bf5e533指容器的ID;

zhi/centos:v1指定目标镜像的用户名、仓库名及tag信息。创建成功后会返回该镜像的ID信息。

# docker images                     ##列出镜像列表
REPOSITORY     TAG      IMAGE ID      CREATED              VIRTUAL SIZE
zhi/centos     v1     016e8163a8b  About a minute ago       196.6 MB
docker.io/centos  7   60e65a8e4030        4 weeks ago          196.6 MB
docker.io/ubuntu 15.10  3e0c71ada2db        7 weeks ago          133.5 MB
# docker run -it zhi/centos:v1
[[email protected] /]# uname
Linux

实例2:

# docker run -it ubuntu:15.10
[email protected]:/# apt-get update
[email protected]:/# sudo apt-get -y install nginx
[email protected]:/# nginx -v
nginx version: nginx/1.9.3 (Ubuntu)
[email protected]:/# exit
exit
# docker ps                             ##查看当前运行的容器
# docker ps -a                   ##查看所有容器,包括已停止容器
# docker commit -m "Nginx in Ubuntu" -a "zhi" c340d2ffb0a0 zhi/ubuntu-nginx:v1
ceb3f407b6c4959514d72a420e4c0d3ade47d6b401eb6d2b5cbfd51f58918918
# docker images
REPOSITORY         TAG     IMAGE ID   CREATED VIRTUAL   SIZE
zhi/ubuntu-nginx    v1   ceb3f407b6c4 53 seconds ago   237.7 MB

# docker run -it zhi/ubuntu-nginx:v1

[email protected]:/# nginx -v

nginx version: nginx/1.9.3 (Ubuntu)

六、推送镜像到 Docker Hub

# docker login              ##创建docker hub帐号(也可网页注册)
Username: wangzhijian
Password: 
Email: [email protected]
WARNING: login credentials saved in /root/.docker/config.json
Account created. Please use the confirmation link we sent to your e-mail to activate it.
# docker login                    ##进行登录
Username (wangzhijian): wangzhijian
WARNING: login credentials saved in /root/.docker/config.json
Login Succeeded
# docker push zhi/ubuntu-nginx     ##推送镜像到 Docker Hub
# docker rmi user/ubuntu:docker          ##移除镜像
Untagged: user/ubuntu:docker
Deleted: 6373a9f4d5704ea80ad7d1d93e98f1094341b038ef266ef0ba332c5878f28ded
Deleted: cfeb58b1dc4e657387dc0495f651e0771b6079870f259548f86f01d77652a187

七、使用 Dockerfile 构建镜像

①编写dockerfile文件

# mkdir docker
# cd docker/
# touch dockerfile
# vi dockerfile
# This is a comment
FROM ubuntu
MAINTAINER zhi&j <[email protected]>
RUN apt-get update && apt-get install -y nginx

注:

第一行为注释同时每一个指令的前缀都必须是大写的;

第二行FROM告诉Docker所使用的镜像源;

第三行使用 MAINTAINER 指令来指定谁在维护这个新镜像;

第四行指定了两个 RUN 指令,RUN 指令在镜像内执行一条命令,这里更新

APT缓存并安装nginx

②通过 docker build 命令来构建一个镜像

# docker build -t wangzhijian/ubuntu:one .
Sending build context to Docker daemon 2.048 kB
Step 0 : FROM ubuntu
 ---> d55e68e6cc9c
Step 1 : MAINTAINER zhi&j <[email protected]>
 ---> Running in a8e92a582884
 ---> cfeb58b1dc4e
Removing intermediate container a8e92a582884
Step 2 : RUN apt-get update && apt-get install -y nginx
 ---> Running in aeba1f533058

解释:

-t标示属于wangzhijian,镜像名称为ubuntu,标签是one,"."指定dockerfile所在

八、设置镜像标签

# docker images
REPOSITORY  TAG     IMAGE ID         CREATED         VIRTUAL SIZE
<none>     <none> 6373a9f4d570   About an hour ago     227.6 MB
# docker tag 6373a9f4d570 user/ubuntu:docker
# docker images
REPOSITORY     TAG     IMAGE ID       CREATED        VIRTUAL SIZE
user/ubuntu   docker 6373a9f4d570  About an hour ago   227.6 MB

Image Digests

内容定位标示符叫做 digest。只要用于生成镜像的镜像源不更改,digests 值就是可以预料的。使用 --digests 标识来列出镜像 digests 的值

# docker images --digests | head
REPOSITORY         TAG   DIGEST    IMAGE ID      CREATED     VIRTUAL SIZE
docker.io/centos latest  <none>  14dab3d40372  2 weeks ago     194.7 MB
docker.io/ubuntu latest  <none>  d55e68e6cc9c  3 weeks ago     187.9 MB

九、在Docker中运行Reids服务

# mkdir docker
# cd docker/
# touch dockerfile
# vi dockerfile
FROM        ubuntu
RUN         apt-get update
RUN         apt-get -y install redis-server
EXPOSE      6379
ENTRYPOINT  ["/usr/bin/redis-server"]
# docker build -t redis/ubuntu .
时间: 2024-11-10 00:18:50

Docker容器简用的相关文章

理解Docker(4):Docker 容器使用 cgroups 限制资源使用

上一篇文章将到 Docker 容器使用 linux namespace 来隔离其运行环境,使得容器中的进程看起来就像爱一个独立环境中运行一样.但是,光有运行环境隔离还不够,因为这些进程还是可以不受限制地使用系统资源,比如网络.磁盘.CPU以及内存 等.为了让容器中的进程更加可控,Docker 使用 Linux cgroups 来限制容器中的进程允许使用的系统资源. 1. 基础知识:Linux control groups 1.1 概念 Linux Cgroup 可???让???您???为???系

Gitlab CI 自动部署 asp.net core web api 到Docker容器

为什么要写这个? 在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效.稳定.可扩展,有时候还不得不考虑成本的问题.我希望能找到比较完整的开源解决方案来解决持续集成.监控报警.以及扩容和高可用性的问题.是学习和探索的过程分享给大家,也欢迎同行的人交流. 先来一个三步曲,我们将完成通过GitLab CI 自动部署 net core web api 到Docker 容器的一个示例.这是第一步,通过此文您将了解如何将net core web api 运行在Docker

[转]Docker容器可视化监控中心搭建

[原文链接]https://www.jianshu.com/p/9e47ffaf5e31?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 概述 一个宿主机上可以运行多个容器化应用,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率.内存占用.网络状况以及磁盘空间等等一系列信息,而且这些信息随时间变化,我们称其为时序数据,本文将实操 如何搭建一个可视化的监控中心 来收集这些承载着具体应用的容器的时

Docker容器运行ASP.NET Core

原文:Docker容器运行ASP.NET Core 最近要学习的知识太多,都不知道先学哪些了,原本计划这篇博客是写xamarin.forms中的listview用法,关于listview的用法简书上有一篇介绍的也比较详细,所以暂时先缓一缓,属于次要任务,等以后再写.本周在万能的淘宝找了写关于区块链的教程,同时了解了下.net core.最近一两年对C#技术跟进不多,侧重点是Java,之前出.net core1.0的时候觉得.net core还不完善,所以就没学,没想到.net core这么快已经

菜鸟系列docker——docker容器(7)

docker 容器 1. docker 守护进程daemon Daemon是Docker的守护进程,Docker Client通过命令行与Docker Damon通信,完成Docker相关操作,Docker daemon通过位于/var/run/docker.sock的本地IPC/Unix socket来实现Docker远程API:在Windows中,Docker daemon通过监听名为npipe:////./pipe/docker_engine的管道来实现.通过配置,也可以借助网络来实现Do

关于自动化部署之docker容器的折腾小记

docker的英文本意是码头工人,也就是搬运工,这种搬运工搬运的是集装箱(Container),集装箱里面装的可不是商品货物,而是任意类型的App,Docker把App(叫Payload)装在Container内,通过Linux Container技术的包装将App变成一种标准化的.可移植的.自管理的组件,这种组件可以在你的latop上开发.调试.运行,最终非常方便和一致地运行在production环境下. 具体什么是docker,你们自己找资料吧,应该好理解.   可以说是个运维的利器,可以把

Docker容器基本知识

一.Docker 简介 1.1什么是Docker 简单的说Docker是一个构建在LXC之上的,基于进程容器(Processcontainer)的轻量级VM解决方案: 1.2为什么要用Docker而不是用虚拟机 在公司中的一个很大的用途就是可以保证线下的开发环境.测试环境和线上的生产环境一致.当年在 Baidu 经常碰到这样的事情,开发把东西做好了给测试去测,一般会给一坨代码和一个介绍上线步骤的上线单.结果代码在测试机跑不起来,开发就跑来跑去看问题,一会儿啊这个配置文件忘了提交了,一会儿啊这个上

Docker容器管理

创建容器: docker create -it [NAME]:[TAG] 启动容器: docker start ID 创建并启动容器: docker run -it [NAME]:[TAG] COMMAND [PARAMS] -i:让容器的标准输入保持打开. -t:让Docker分配一个伪终端. -d:让Docker容器在后台以守护态形式运行. 停止容器: docker stop ID 首先向容器发送SIGTERM信号,等待一段时间后再发送SIGKILL信号终止容器. docker kill I

Docker 网络之pipework 工具(3)单主机Docker容器VLAN划分

pipework不仅可以使用Linux bridge连接Docker容器,还可以与OpenVswitch结合,实现Docker容器的VLAN划分.下面,就来简单演示一下,在单机环境下,如何实现Docker容器间的二层隔离.为了演示隔离效果,我们将4个容器放在了同一个IP网段中.但实际他们是二层隔离的两个网络,有不同的广播域. 安装openvswitch 安装基础环境 [[email protected] ~]# yum -y install gcc make python-devel opens