02-Docker安装部署使用

    Docker需要安装在64位的x86平台或ARM平台上(如树莓派),并且要求内核版本不低于3.10。但实际上内核越新越好,过低的内核版本可能会出现部分功能无法使用,或者不稳定。        用户可以通过如下命令检查自己的内核版本详细信息:

    [root@ps2 run]# uname -a

    Linux ps2 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

    Docker的安装可以从Docker公司官网上取得安装包(https://www.docker.com/community-edition#/download),一键安装使用,也可以在不同操作系统上采用自动化安装工具进行安装,总体来说比较简单,下面列举两个操作系统在线安装的例子:

一、CentOS安装Docker

    Redhat Linux系列包括Redhat Enterprise Linux、Fedora Core、CentOS,此处以CentOS7为例安装 Docker 。

root用户登录系统

关闭防火墙

[root@ps1 ~]# systemctl stopfirewalld.service

[root@ps1 ~]# systemctl disablefirewalld.service

更新yum源

[root@ps1 ~]# yum clean all

[root@ps1 ~]#yum update

添加yum源 

[root@ps1 ~]# vi /etc/yum.repos.d/docker.repo

[dockerrepo]

name=Docker Repository

baseurl=https://yum.dockerproject.org/repo/main/centos/7/

enableid=1

gpgcheck=1

gpgkey=https://yum.dockerproject.org/gpg

安装docker引擎

[root@ps2~]# yum install docker-engine

已加载插件:fastestmirror,langpacks

...

已安装:

docker-engine.x86_64 0:17.05.0.ce-1.el7.centos

作为依赖被安装:

docker-engine-selinux.noarch:17.05.0.ce-1.el7.centos

完毕!

安装docker服务

[root@ps2 ~]# systemctl enabledocker.service

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.serviceto /usr/lib/systemd/system/docker.service.

启动docker引擎

[root@ps1 ~]# systemctl startdocker

测试docker是否启动成功

[root@ps1 ~]# docker info

Containers: 0

Running: 0

Paused: 0

Stopped: 0

Images: 0

Server Version: 17.05.0-ce

Storage Driver: overlay

Backing Filesystem: xfs

Supports d_type: true

Logging Driver: json-file

Cgroup Driver: cgroupfs

Plugins:

Volume: local

Network: bridge host macvlan nulloverlay

Swarm: inactive

Runtimes: runc

Default Runtime: runc

Init Binary: docker-init

containerd version:9048e5e50717ea4497b757314bad98ea3763c145

runc version:9c2d8d184e5da67c95d601382adf14862e4f2228

init version: 949e6fa

Security Options:

seccomp

Profile: default

Kernel Version:3.10.0-693.el7.x86_64

Operating System: CentOS Linux 7(Core)

OSType: linux

Architecture: x86_64

CPUs: 12

Total Memory: 62.64GiB

Name: ps1

ID:ITPP:IAGG:RLRD:6POX:2FLP:OFVU:BL67:25UZ:THQK:GNZH:SB54:TLJA

Docker Root Dir: /var/lib/docker

Debug Mode (client): false

Debug Mode (server): false

Registry: https://index.docker.io/v1/

Experimental: false

Insecure Registries:

127.0.0.0/8

Live Restore Enabled: false

WARNING: bridge-nf-call-iptables isdisabled

WARNING: bridge-nf-call-ip6tablesis disabled

[root@ps2 ~]# vim /etc/sysctl.conf

添加:

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.bridge.bridge-nf-call-arptables = 1

 重启

docker info  警告消失

升级centos 7内核

以下情况需要升级内核:

1. 使用 docker 的overlay 网络 (kernel >= 3.16)。

2. 使用 overlayfs 作为 docker 镜像的存储文件系统( kernel >= 3.18)

[root@ps2~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

[root@ps2~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

获取http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

获取http://elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

准备中...                          #################################[100%]

正在升级/安装...

...

已安装:

kernel-lt.x86_640:4.4.127-1.el7.elrepo

完毕!

[root@ps2~]# grub2-set-default 0

[root@ps2~]# reboot

设置docker开机自启动

[root@ps1 ~]# systemctl enabledocker

二、Ubuntu安装Docker

2.1 安装前检查:

内核版本的检查

$ uname -r

存储驱动的检查

$ ls -l/sys/class/misc/device-mapper/

如果以上两个条件不满足,则需要升级内核版本

2.2 安装Ubuntu维护的版本

$ sudo apt-get install -y docker.io

$ source/etc/bash_completion.d/docker.io

$ docker -version

2.3安装Docker 维护的版本

1)检查APT的HTTPS支持情况

$vi usr/lib/apt/methods/https文件是否存在

$apt-get update

$apt-get install -y apt-transport-https

2)添加

3)添加仓库的key

4)安装

简单过程:

$ sudo apt-get install -y curl

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

$ sudo docker version

$ sudo docker run ubuntu echo‘hello world’

三、Docker基本命令

3.1 镜像相关操作

对于镜像的操作就是操作image对象的,包括以下常用命令:  

docker search      #从镜像仓库搜索一个镜像

docker pull        #从仓库中拉一个镜像

docker images     #显示本地所有的镜像列表

dockerrmi        #删除一个镜像,正在被使用的镜像不能被删除的

dockersave       #将一个镜像保存为一个tar包,带layers和tag信息

$docker save nginx  >/home/chen/chensuozhangdaochu.tar

dockerload       #从一个tar包创建一个镜像,和save配合使用

$docker load   >/home/chen/chensuozhangdaochu.tar

dockerhistory     #显示生成一个镜像的历史命令,说明该镜像是怎么产生的

dockertag        #为镜像起一个别名

dockerimport     #从一个tar包创建一个镜像,往往和export结合使用

dockerbuild       #使用Dockerfile创建镜像(推荐) 

dockercommit     #从容器创建镜像               

3.2 容器的相关操作

对于容器的操作就是操作container的,包括以下常用命令:  

docker create        #创建一个容器但是不启动它

例子:$ docker create -i -t--name=create_by_chen hub.c.163.com/library/centos  /bin/bash

docker run           #创建并启动一个容器

docker stop          #停止容器运行,发送信号SIGTERM

docker start          #启动一个停止状态的容器

docker restart        #重启一个容器

docker rm           #删除一个容器

docker kill           #发送信号给容器,默认SIGKILL

docker attach        #连接(进入)到一个正在运行的容器

docker exec         # Run a command in a runningcontainer  在已经运行的容器中运行一个命令,进入bash交互模式

docker wait         #阻塞到一个容器,直到容器停止运行

docker ps           #显示状态为运行(Up)的容器

docker ps -a         #显示所有容器,包括运行中(Up)的和退出的(Exited)

docker inspect       #深入容器内部获取容器所有信息,可以查看一个运行的和没有运行的容器,过滤(grep)看一下IP地址

docker logs          #查看容器的日志(stdout/stderr)

docker events        #得到docker服务器的实时的事件

docker port          #显示容器的端口映射

docker top           #显示容器的进程信息

docker diff           #显示容器文件系统的前后变化

docker rename       #重命名docker容器名

docker cp         #从容器里向外拷贝文件或目录

示例:从宿主机到容器$ docker cp /root/123.shtest:/root/123.sh

示例:从容器到宿主机 $ docker cp

test:/root/123.sh /root/123.sh

docker export      #将容器整个文件系统导出为一个tar包,不带layers、tag等信息

$ docker export  45d3e7388ccd > testchensuozhang.tar  

注意:用户在哪个目录,导出的文件就在哪个目录,可以ls  看一下么 ,想导出导一个固定目录,加上目录就行了。如:$ docker export  45d3e7388ccd > /home/chen/testchensuozhang.tar

3.3 Dockerfile小例子

1)创建一个dockerfile文件

$ touch dockerfile

$ vi dockerfile

FROM hub.c.163.com/library/nginx

MAINTAINER chensuozhagn @qq.com

RUN echo "hello chen this  is the first try by ChenSuozhang" >/usr/share/nginx/html/index.html

EXPOSE 80

#CMD 'nginx'

2)利用dockfile创建一个新镜像

$docker build -t web1.0:1.0  .

备注:这里的. 表示使用当前目录的dockerfile

3)检查是否创建了这个镜像

$ docker images

4)利用刚才创建的容器运行一个容器

$ docker run  -it -p 8080:80 --name=chensuozhanggerenwangyef64d4b645d43  /bin/bash

5)运行一下nginx

$ root@5d317f7c19a9:/# nginx

6)浏览器访问nginx服务

 

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容