我的环境是centos 6.5,要求必须6.5及以上版本可用
1、yum install -y docker-io
2、修改/etc/sysconfig/docker
other_args="--exec-driver=lxc --selinux-enabled"
3、service docker start
4、使用命令docker version报错
FATA[0000] Get dial unix /var/run/docker.sock: no such file or directory.
5、使用命令docker -d查看
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
6、升级yum upgrade device-mapper-libs
7、重启
常用命令:
1、
docker pull centos:latest获取最新的centos镜像
2、docker images centos查看最新镜像
3、docker run -i -t centos /bin/bash测试镜像
4、docker search ubuntu12.10搜索镜像
5、获取当前容器的id
-
[root@localhost ~]# docker ps -l
-
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
-
6ed36b88e860 centos:7 "/bin/bash" 4 minutes ago Exited (0) 2 minutes ago condescendi
6、在容器安装了新的软件后,docker run centos yum -y install net-snmp ,获取到新的id
-
[root@localhost ~]# docker ps -l
-
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
-
54fc324cff01 centos:7
7、保存对容器的修改,命名为install/snmp,镜像id发生变化
-
docker commit 54fc install/snmp
-
98ae87c1d7ed44066835d78b9c663fd223d6b416326f5e63a9b731867cc17710
8、使用新的镜像名运行
-
[root@localhost ~]# docker run install/snmp ping www.baidu.com
-
PING www.a.shifen.com (180.97.33.108) 56(84) bytes of data.
-
64 bytes from 180.97.33.108: icmp_seq=1 ttl=51 time=25.6 ms
-
64 bytes from 180.97.33.108: icmp_seq=2 ttl=51 time=25.8 ms
9、检查镜像,使用docker ps命令可以查看所有正在运行中的容器列表,使用docker inspect id 查看某一个容器的详细信息
10、发布自己的镜像到docker的index网站
docker images命令可以列出所有安装过的镜像。docker push命令可以将某一个镜像发布到官方网站。这个模拟器登录的帐号。(你得先注册)
11、
使用镜像创建容器
[root@localhost /]# docker run chug/ubuntu12.10x64 /bin/echo hello world
hello world
交互式运行
[root@localhost /]# docker run -i -t chug/ubuntu12.10x64 /bin/bash
root@2161509ff65e:/#
查看容器
docker ps :列出当前所有正在运行的container
docker ps -l :列出最近一次启动的container
docker ps -a :列出所有的container(包含历史,即运行过的container)
docker ps -q :列出最近一次运行的container ID
再次启动容器
docker start/stop/restart <container> :开启/停止/重启container
docker start [container_id] :再次运行某个container (包括历史container)
docker attach [container_id] :连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach 一个container实例)
docker start -i <container> :启动一个container并进入交互模式(相当于先start,在attach)
docker run -i -t <image> /bin/bash :使用image创建container并进入交互模式, login shell是/bin/bash
docker run -i -t -p <host_port:contain_port> :映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。
注:使用start是启动已经创建过得container,使用run则通过image开启一个新的container。
删除容器
docker rm <container...> :删除一个或多个container
docker rm `docker ps -a -q` :删除所有的container
docker ps -a -q | xargs docker rm :同上, 删除所有的container
[root@localhost /]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
chug/ubuntu12.10x64 latest 0b96c14dafcd 4 months ago 270.3 MB
[root@localhost /]# docker commit d0fd23b8d3ac chug/ubuntu12.10x64_2
daa11948e23d970c18ad89c9e5d8972157fb6f0733f4742db04219b9bb6d063b
[root@localhost /]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
chug/ubuntu12.10x64_2 latest daa11948e23d 6 seconds ago 270.3 MB
chug/ubuntu12.10x64 latest 0b96c14dafcd 4 months ago 270.3 MB
6.2 持久化容器
export命令用于持久化容器
docker export <CONTAINER ID> > /tmp/export.tar
6.3 持久化镜像
Save命令用于持久化镜像
docker save 镜像ID > /tmp/save.tar
6.4 导入持久化container
删除container 2161509ff65e
导入export.tar文件
[root@localhost /]# cat /tmp/export.tar | docker import - export:latest
af19a55ff0745fb0a68655392d6d7653c29460d22d916814208bbb9626183aaa
[root@localhost /]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
export latest af19a55ff074 34 seconds ago 270.3 MB
chug/ubuntu12.10x64_2 latest daa11948e23d 20 minutes ago 270.3 MB
chug/ubuntu12.10x64 latest 0b96c14dafcd 4 months ago 270.3 MB
6.5 导入持久化image
删除image daa11948e23d
导入save.tar文件
[root@localhost /]# docker load < /tmp/save.tar
对image打tag
[root@localhost /]# docker tag daa11948e23d load:tag
6.7 一些其它命令
docker logs $CONTAINER_ID #查看docker实例运行日志,确保正常运行
docker inspect $CONTAINER_ID #docker inspect <image|container> 查看image或container的底层信息
docker build <path> 寻找path路径下名为的Dockerfile的配置文件,使用此配置生成新的image
docker build -t repo[:tag] 同上,可以指定repo和可选的tag
docker build - < <dockerfile> 使用指定的dockerfile配置文件,docker以stdin方式获取内容,使用此配置生成新的image
docker port <container> <container port> 查看本地哪个端口映射到container的指定端口,其实用docker ps 也可以看到
7 一些使用技巧
7.1 docker文件存放目录
Docker实际上把所有东西都放到/var/lib/docker路径下了。
[root@localhost docker]# ls -F
containers/ devicemapper/ execdriver/ graph/ init/ linkgraph.db repositories-devicemapper volumes/
containers目录当然就是存放容器(container)了,graph目录存放镜像,文件层(file system layer)存放在graph/imageid/layer路径下,这样我们就可以看看文件层里到底有哪些东西,利用这种层级结构可以清楚的看到文件层是如何一层一层叠加起来的。
7.2 查看root密码
docker容器启动时的root用户的密码是随机分配的。所以,通过这种方式就可以得到容器的root用户的密码了。
docker logs 5817938c3f6e 2>&1 | grep 'User: ' | tail -n1
****************************************************************************************
阅读(1766) | 评论(0) | 转发(0) |