文档章节

Docker折腾笔记

首席吊炸天
 首席吊炸天
发布于 2015/06/23 22:00
字数 1083
阅读 532
收藏 19


Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖环境到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。

 

 


 

 

 



一、安装
1、安装准备 up kernel to 3.8
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
or
yum install epel-release

rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm

yum --enablerepo=elrepo-kernel install kernel-ml -y

http://elrepo.org/tiki/tiki-index.php:


sed -i.bak 's/default=1/default=0/' /boot/grub/grub.conf #以新内核启动
reboot


2、安装docker
yum install docker-io device-mapper-event-libs -y

service docker start #启动服务
chkconfig docker on

排错信息:
docker -d
INFO[0000] +job serveapi(unix:///var/run/docker.sock)
INFO[0000] WARNING: You are running linux kernel version 2.6.32-431.el6.x86_64, which might be unstable running docker. Please upgrade your kernel to 3.8.0.
docker: relocation error: docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference


二、常用命令选项
Usage: docker [OPTIONS] COMMAND [arg...]

docker search ubuntu #搜索镜像
docker pull ubuntu #获取镜像 (默认为lastest)
docker pull centos:6.6 #获取指定镜像tag

docker [-v]|version #版本信息
docker images #列出本地镜像

docker ps #查看容器信息
docker stats 18534ae7fbbc #容器运行状态
docker stop 0185e1cb9466 #终止指定容器
docker logs -f web-15 #查看指定容器log

docker rm 18534ae7fbbc #删除容器
docker rmi ubuntu #删除镜像

docker inspect 18534ae7fbbc |grep '"Pid"' #查看容器Pid
docker inspect 18534ae7fbbc |grep '"IPAddress":' #查看容器IP
docker inspect 18534ae7fbbc |grep '"Gateway":' #查看容器网关

docker rm $(docker ps -a |grep -v 'Up' |cut -d " " -f1) #删除所有未启动的容器
docker rm $(docker ps -a -q) #删除所有容器


三、启动容器的两种方式

1、一种是基于镜像新建一个容器并启动
docker run -it ubuntu +命令 #执行完就退出
docker run -it ubuntu "ps"
docker run -it ubuntu /bin/bash #启动一个容器的bash,-t分配伪终端、-i打开输入

docker run --help
man docker-run
docker run -dit --name Web01 ubuntu:14.04 /bin/bash #-d 后台运行

2、一种是用start选项启动终止状态的容器
docker start web-01


四、连接(进入)容器 :(attach,不推荐)

1、attach (自带选项, 不推荐)
docker attach web-01

2、 exec (在容器中开一个shell,容器启动,要添加--privileged=true,不然不能切换root)

docker exec -it jenkins /bin/bash


3、nsenter (进入命名空间,推荐)
yum install util-linux -y #安装nsenter所属软件包
docker ps #查看已启动容器

 

 

docker inspect --format "{{.State.Pid}}" 容器ID|容器名 #获取容器PID

 

echo "alias nsenter='nsenter -m -u -i -n -p -r -w'" >> ~/.bashrc

. ~/.bashrc

nsenter -t 9724   #进入容器

hostname Web01-3797 #给容器主机名加入PID,方便下次进入

3、SSH
docker run -t -i -c 100 -m 256MB -h Web-19 -p 2220:22 --restart="always" --name="web-19" centos:6.6 /bin/bash #之后自动进入容器bash
yum -y install openssh-server openssh-clients #安装SSH
chkconfig sshd on
service sshd start

ifconfig #查看容器IP
passwd root #修改root密码

ssh root@容器IP -p2220

docker commit web-16 centos/sshd #容器保存为镜像,方便下次调用


五、导出导入 :
1、容器
docker export 18534ae7fbbc > /opt/docker/ubuntu.tar #导出容器
cat /opt/docker/ubuntu.tar |docker import - test/ubuntu:v1.0 #导入容器

2、镜像
docker save -o ubuntu_14.04.tar ubuntu:14.04 #导出镜像
docker load --input ubuntu_14.04.tar #载入镜像


六、端口映射
docker run --help
docker run -tid -c 100 -m 512MB -h Web-14 -p 192.168.18.10:80:80 --name="web-14" centos:6.6 /bin/bash #绑定指定IP端口
docker run -tid -c 100 -m 512MB -h Web-15 -p 80:80 --name="web-15" centos:6.6 /bin/bash #绑定全部IP端口
docker run -tid -c 100 -m 256MB -h Web-16 -p 2222:22 --restart="always" --name="web-16" centos:6.6 /bin/bash #自启动,绑定SSH端口
docker run -tid -c 100 -m 512MB -h Web-117 -p 800:80 --name="web-117" centos:6.6 /bin/bash #绑定全部IP端口


七、创建和挂载本地数据卷
1、创建:
docker run -dit --name Web12 -v /webapp centos:6.6 /bin/bash
docker run -dit --name Web02 -v /webapp centos:6.6 /bin/bash
docker run -dit --name Web05 -v /webapp centos:6.6 /bin/bash

2、挂载
docker run -dit --name Web11 -v /opt/downloads:/mnt centos:6.6 /bin/bash
docker run -dit --name Web11 -v /opt/downloads:/mnt:ro centos:6.6 /bin/bash

3、数据卷容器:
docker run -d -v /dbdata --name dbdata training/postgres echo Data-only container for postgres #创建一个命名的数据卷容器 dbdata
docker run -d --volumes-from dbdata --name db1 training/postgres #其他容器中使用 --volumes-from 来挂载 dbdata 容器中的数据卷


更多参考:
http://dockerpool.com/books
https://docs.docker.com/installation/#installation

 

© 著作权归作者所有

首席吊炸天
粉丝 25
博文 30
码字总数 14991
作品 0
徐汇
运维
私信 提问
06-docker组件如何协作

容器启动过程如下: Docker 客户端执行 命令。 Docker daemon 发现本地没有 httpd 镜像。 daemon 从 Docker Hub 下载镜像。 下载完成,镜像 httpd 被保存到本地。 Docker daemon 启动容器。 ...

bwzbk
2018/12/19
0
0
docker折腾笔记(不定期更新)

前言 由于是笔记,就不像前面几个博文那样用大量的markdown语法修饰了,仅仅不定期更新,记录下遇到的问题。 用了一段时间的docker,感觉这玩意简直就是神器,无论开发还是测试环境都可以用的...

Feng_Yu
2014/03/20
0
2
Docker 组件如何协作?- 每天5分钟玩转Docker容器技术(8)

一个完整的例子 还记得我们运行的第一个容器吗?现在通过它来体会一下 Docker 各个组件是如何协作的。 容器启动过程如下: Docker 客户端执行 命令。 Docker daemon 发现本地没有 httpd 镜像...

cloudman6
2017/12/21
0
0
DeepLearning笔记:Docker 入门和用 Python 实现词频统计

一、神经网络简介 神经网络简史: 40年代:概念雏形(没有学习算法) 50年代:可用的学习算法 - 感知机 1969年:Minsky 泼冷水 70年代:BP 算法,训练多层神经网络 90年代:SVM 支持向量机「...

Kidult
2017/12/27
0
0
Docker简明手册

查看docker的子命令,直接敲或完整的就可以了: root@tankywoo-docker:~# docker [1/1617] Usage: docker [OPTIONS] COMMAND [arg...] -H=[unix:///var/run/docker.sock]: tcp://host:port to......

openthings
2016/03/28
98
0

没有更多内容

加载失败,请刷新页面

加载更多

Bash 和 Python 编程语言优缺点分析

Bash 和 Python 是大多数自动化工程师最喜欢的编程语言。它们都各有优缺点,有时很难选择应该使用哪一个。所以,最诚实的答案是:这取决于任务、范围、背景和任务的复杂性。 让我们来比较一下...

xiangyunyan
21分钟前
3
0
Kubernetes从懵圈到熟练:读懂这一篇,集群节点不下线

排查完全陌生的问题,完全不熟悉的系统组件,是售后工程师的一大工作乐趣,当然也是挑战。今天借这篇文章,跟大家分析一例这样的问题。排查过程中,需要理解一些自己完全陌生的组件,比如sys...

阿里云云栖社区
26分钟前
4
0
解决exe4打包出现的问题

https://blog.csdn.net/gem_yaorao/article/details/48626155

南桥北木
43分钟前
1
0
SpringBoot高级篇JdbcTemplate之数据更新与删除

前面介绍了JdbcTemplate的插入数据和查询数据,占用CURD中的两项,本文则将主要介绍数据更新和删除。从基本使用上来看,姿势和前面的没啥两样 <!-- more --> I. 环境准备 环境依然借助前面一...

小灰灰Blog
59分钟前
3
0
Filecoin 编译问题

https://github.com/filecoin-project/go-filecoin/issues/2503 Error go run ./build build command from root I've faced on this error Building go-filecoin...git log -n 1 --forma......

怎当她临去时秋波那一转
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部