Docker使用
基本部署
Docker允许你在容器内部运行应用程序,使用docker run命令来在容器内运行一个应用程序。
输出 Hello world
docker run ubuntu:15.10 /bin/echo "Hello world"
参数分析:
- docker: Docker的二进制执行文件
- run:与前面的docker组合来运行一个容器
- ubuntu:15.10:指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,然后不存在,Docker就会从镜像仓库Docker Hub下载公共镜像。
- /bin/echo "Hello world":启动的容器里面执行的命令。
以上命令完整的意思是:Docker以ubuntu 15.10镜像创建一个新容器,然后在容器里面执行bin/echo "Hello world",然后输出结果。
运行交互式的容器
我们通过docker的两个参数 -i -t,让docker运行的容器实现“对话”能力:
runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash
root@0123ce188bd8:/#
参数分析:
- -t:在新的容器内指定一个伪终端或终端;
- -i:允许你对容器内的标准输入(STDIN)进行交互;
注意第二行root@0123ce188bd8:/#,此时我们已进入一个ubuntu15.10系统的容器
我们尝试在容器中运行命令cat/proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表;
root@0123ce188bd8:/# cat /proc/version
Linux version 4.4.0-151-generic (buildd@lgw01-amd64-043) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #178-Ubuntu SMP Tue Jun 11 08:30:22 UTC 2019
root@0123ce188bd8:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@0123ce188bd8:/#
可以通过运行exit命令或者使用CTRL+D来退出容器
root@0123ce188bd8:/# exit
exit
root@runoob:~#
启动容器(后台模式)
使用以下命令创建一个进程方式运行容器
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
在输出中我们能看到一长串字符串:2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
这个字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。
首先,我们需要确认容器有在运行,可以通过docker ps来查看:
runoob@runoob:~$ docker ps
CONTAINER ID IMAGE COMMAND ...
5917eac21c36 ubuntu:15.10 "/bin/sh -c 'while t…" ...
参数分析:
- CONTAINER ID:容器ID
- IMAGE:使用的镜像
- COMMAND:启动容器时运行的命令
- CREATED:容器的创建时间
- PORTS:容器的端口信息和使用的连接类型(tcp\udp)
- NAMES:自动分配的容器名称
- STATUS:容器状态
状态有七种: - created(已创建)
- restaring(重启中)
- running或Up(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
在宿主机内使用docker logs命令,查看容器内的标准输出:
docker logs 2b1b7a428627
停止容器
使用docker stop命令来停止容器
docker stop 2b1b7a428627
使用
获取镜像
如果我们本地没有Ubuntu镜像,我们可以通关docker pull命令来载入Ubuntu镜像:
docker pull ubuntu
启动容器
以下命令使用ubuntu镜像启动一个容器:
docker run -it ubuntu /bin/bash
参数说明:
- -i:交互式操作
- -t:终端
- ubuntu:ubuntu镜像
- /bin/bash:放在镜像名后的是命令,这里我们希望有一个交互式shell,因此用的是/bin/bash。
启动已经停止的容器
查看所有的容器:
docker ps -a
使用docker start启动一个已经停止的容器
docker start 2b1b7a428627(容器ID)
后台运行
docker run -itd --name ubuntu-test ubuntu /bin/bash
停止一个容器
docker ps -a
docker stop <容器ID>
停止的容器可以通过docker restart重启
docker restart <容器ID>
进入容器
在使用-d参数时,容器会自动进入后台,此时想要进入容器,可以通过以下指令进入:
- docker attach
- docker exec(推荐):以此命令进入后,退出时不会导致容器的停止。
attach命令
docker attach <容器ID>
注意:如果从这个容器中退出会导致容器的停止。
exec命令
docker exec -it <容器ID> /bin/bash
注意:如果从这个容器中退出不会导致容器的停止。
导出和导入容器
导出容器
导出容器
docker export <ID> > ubuntu.tar
导入容器
将快照文件ubuntu.tar导入到镜像test/ubuntu:v1:
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
此外,也可以通过URL或者某个目录来导入:
docker import http://example.com/exampleimage.tgz example/imagerepo
删除容器
删除容器使用docker rm命令
docker rm -f <ID>
清理掉所有处于停止状态的容器
docker container prune
运行一个web应用
整起docker容器中运行一个Python Flask应用来运行一个web应用
docker pull training/webapp # 载入镜像
docker run -d -P training/webapp python app.py
参数说明:
- -d:让容器在后台运行
- -P:将容器内部使用的网络端口随记映射到我们使用的主机上。
查看web应用容器
使用docker ps查看我们正在运行的容器会发现多了PORTS(端口信息)
PORTS
0.0.0.0:32769->5000/tcp
Docker开放了5000端口,映射到主机端口32769上,这时我们可以通过浏览器访问Web应用:192.168.239.130:32769
我们也可以通过 -P 参数来设置不一样的端口:
docker run -d -P 5000:5000 training/webapp python app.py
再次使用 docker ps 来查看正在运行的容器,会发现端口设置成功:
PORTS
0.0.0.0:5000->5000/tsp
查看网络端口的设置情况
docker port <ID>
查看web应用程序日志
docker logs -f <ID>
-f:让 docker logs 像使用tail -f 一样来输出容器内部的标准输出
查看web应用程序的进程
docker top <ID>

浙公网安备 33010602011771号