Docker学习 ----常用操作命令大全及例子[陆续更新中...]
最近在学习Docke容器技术,感觉这东西好玩强大,现将我学习到的命令记录在这里,方便自己日后查阅,也希望其余的初学者可以参考~
1、拉取第一个Docker镜像ubuntu到本地
Usage: ddocker pull [OPTIONS] NAME[:TAG|@DIGEST] #例子: docker pull ubuntu
2、运行ubuntu镜像
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] #例子: docker run -i -t ubunt /bin/bash
3、通过上一步,我们得到了一个容器,他是一个ubuntu的系统,让我们检查一下容器的/etc/hosts文件
root@865277181d2c:/# cat /etc/hosts
4、在容器中安装第一个软件包
root@865277181d2c:/# apt-get install vim
5、每次运行docker容器,系统会默认分配一个随机的名称,如果想指定容器名称为test当然也可以,方法如下:
docker run --name test -i -t ubuntu /bin/bash
6、退出容器
root@865277181d2c:/# exit
7、查看最后一次运行的容器
docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 865277181d2c ubuntu "/bin/sh -c 'while tr" 18 minutes ago Up 18 minutes test
8、重新启动刚刚退出的容器,两个办法,容器名称,或容器ID
docker start test docker start 865277181d2c
9、重启后发现一个问题,没有进入到shell交互模式,看不到之前的[root@865277181d2c:/#]对吧? 别担心同样有两个办法,执行下面命令,(只适用于交互式容器):
docker attach test docker attach 865277181d2c
10、上面我们运行容器都属于交互式运行(interactive container),这类的方式适合我们临时做一些测试,或者给镜像安装一些软件等操作,如果我们想在容器里面运行一个web服务或者程序,那么我们应该选择守护式来运行容器(daemonized container),我们来启动一个守护式容器:
docker run --name daemon_test -d ubuntu /bin/sh -c "while true;do echo I am studying docker, it is very interesting.;sleep 1;done"
这个容器运行后在控制台只返回了一个容器ID(e74427be6c8ce32eba6d6aec9d086774c60e78df71910d144e6440484112737f),我们需要看看他是不是在运行
docker ps
看到结果
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e74427be6c8c ubuntu "/bin/sh -c 'while tr" 27 seconds ago Up 27 seconds daemon_test
这个容器都干了啥?获取守护式容器日志
docker logs daemon_test I am studying docker, it is very interesting. I am studying docker, it is very interesting. I am studying docker, it is very interesting. I am studying docker, it is very interesting. I am studying docker, it is very interesting. I am studying docker, it is very interesting. I am studying docker, it is very interesting. I am studying docker, it is very interesting. ...
跟踪守护式容器日志
docker logs -f daemon_test
I am studying docker, it is very interesting. I am studying docker, it is very interesting. I am studying docker, it is very interesting. ...
ctrl+c退出日志
获取日志最后10条信息
docker logs --tail 10 daemon_test
跟踪守护式容器日志带时间
docker logs -ft daemon_test
11、查看容器内进程
docker top daemon_test PID USER COMMAND 6254 root /bin/sh -c while true;do echo I am studying docker, it is very interesting.;sleep 1;done 7199 root sleep 1
12、在容器内部运行进程docker exec,该命令是docker1.3之后才有的
1)在容器内部运行交互命令
docker exec -t -i daemon_test /bin/bash root@e74427be6c8c:/#
2)在容器中运行后台任务,创建一个new_file_test空文件
exec -d daemon_test touch /etc/new_file_test
13、停止守护式容器
docker stop daemon_test docker stop e74427be6c8c
14、自动重启容器(restart 1.2.0引入)
ocker run --restart=always --name daemon_test -d ubuntu /bin/sh -c "while true;do echo I am studying docker, it is very interesting.;sleep 1;done" ocker run --restart=on-failure:5 --name daemon_test -d ubuntu /bin/sh -c "while true;do echo I am studying docker, it is very interesting.;sleep 1;done"
15、停止容器
Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker stop daemon_test
16、删除容器,运行中的docker容器是无法删除的,必须先停止容器
Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...] docker rm daemon docker rm e74427be6c8c
#删除所有容器 docker rm `docker ps -a -q`
17、查看本机镜像
docker images
18、删除镜像,如果你本机只有一个镜像还是别删了
Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] docker rmi ubuntu
19、查找镜像
Usage: docker search [OPTIONS] TERM #例子 docker search puppet
20、构建镜像
注:这里说的构建镜像不是真正的“创建”镜像,而是基于一个已有的镜像构建新的镜像而已。如果你想从零构建一个镜像请移步这里。
1)docker commit(不推荐)
#第一步创建一个要修改的容器 sudo docker run -i -t ubuntu /bin/bash root@34ec8a9bdd35:/# #接下来我们在容器中进行几个简单改动 root@34ec8a9bdd35:/# apt-get update root@34ec8a9bdd35:/# apt-get -y install vim #退出容器 root@34ec8a9bdd35:/# exit #这回可以运行docker commit 命令了 sudo docker commit 34ec8a9bdd35 ashinliu/ubuntu #也可以指定更多的信息进行docker commit ,例如:容器信息、容器作者、tag等 sudo docker commit -m "描述提交信息,例如安装了vim" -a "作者名字" 34ec8a9bdd35 ashinliu/ubuntu:tags
2)Dockerfile构建镜像
在用Dockerfile前让我们看一下我们在执行docker commit前在容器(34ec8a9bdd35)内都做了啥?
1、创建一个要进行修改的定制容器
2、apt-get update
3、apt-get install vim
4、exit
5、docker commit
我们是做了上面五步后才产生了一个ashinliu/ubuntu镜像。好,现在我们通过dockerfile看看如何制作一个相同功能的容器
#1、在宿主机上创建一个文件夹,如:vim mkdir vim #2、进入到vim文件夹,并创建Dockerfile空文件 cd vim touch Dcokerfile #3、编辑Dockerfile vi Dockerfile # Version: 0.0.1 FROM ubuntu:latest MAINTAINER Ashin Liu "18645991023@163.com" RUN apt-get update RUN apt-get install -y vim EXPOSE 80 #4、运行构建命令 sudo docker build -t="ashinliu/ubuntu" .
查看images
docker images REPOSITORY TAG IMAGE ID CREATED SIZE ashinliu/ubuntu latest f8636a60b6c0 1 minutes ago 214.4 MB
通过dockerfile创建镜像OK