Docker的使用
什么是docker
Docker
是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs
(虚拟机)、bare metal
、OpenStack
集群和其他的基础应用平台。
Docket通常用于如下场景:
- web应用的自动化打包和发布
- 自动化测试和持续集成、发布
- 在服务型环境中部署和调整数据库或其他后台应用
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境
安装
Docker
有很多种安装的选择,我们推荐您在Ubuntu
下面安装,因为docker
是在Ubuntu
下面开发的,安装包测试比较充分,可以保证软件包的可用性。
- 使用管理员账号登录系统,或者确保有
root
权限。 检查
curl
包有没有安装:1
which curl
如果没有安装,更新
apt
源后安装curl
包1
2sudo apt update
sudo apt install curl获得最新的docker安装包
1
curl -sSL https://get.docker.com/ | sh
shell
会提示你输入sudo
密码,然后开始执行安装过程确认Docker是否安装成功
1
sudo docker run hello-world
这个命令会下载一个测试用的镜像并启动一个容器运行它
入门
Docker
系统有两个程序:docker
服务端和docker
客户端。其中docker
服务端是一个服务进程,管理着所有的容器。docker
客户端则扮演者docker
服务器的远程控制其,可以用来控制docker
的服务端进程。大部分情况下,docker
服务端和客户端运行在一台机器上。
搜索可用docker镜像
Docker
官方网站专门有一个页面来存储所有可用的镜像,网址是:Docker镜像。你可以通过浏览这个网页来查找你想要使用的镜像,或者使用命令行工具来检索。
命令为:1
2
3
4
5 docker search tutorial
mistacker@mistacker-Mai-II:~$ docker search tutorial
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
learn/tutorial 40
...
下载容器镜像
通过docker
命令下载tutorial
镜像1
docker pull learn/tutorial
在docker容器中运行hello world
1 | docker run learn/tutorial echo "hello world" |
在容器中安装新的程序
在learn/tutorial
镜像里面安装ping
程序。值得注意的是在执行apt
命令时,要带上-y
参数。如果不指定该参数,apt
命令会进入交互模式,需要用户输入命令来进行确认,但在docker
环境中是无法响应这种交互的。1
docker run learn/tutorial apt-get install -y ping
保存对容器的修改
当你对某一容器做了修改后,可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker
中保存状态的过程称之为committing
,它保存的新旧状态之间的区别,从而产生一个新的版本。
首先使用docker ps -l
命令获得安装完Ping
命令之后容器的id
。然后把这个镜像保存为learn/ping
。
提示:
- 运行
docker commit
,可以查看命令的参数列表 - 你需要指定提交保存容器的
ID
。(通过dicker ps -l
命令获得) - 无需拷贝完整的
id
,通常来讲最开始的三至四个字幕即可区分1
2
3
4
5docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c85d7e24a6b3 hello-world "/hello" 39 minutes ago Exited (0) 39 minutes ago boring_goldberg
docker commit c85d learn/ping
effb66b31edb
执行完docker commit
命令之后,会返回新版本镜像的ID
号。
运行新的镜像
到目前为止,你已经建立一个完整的。自成体系的docker
环境,并且安装了Ping
命令在里面。它可以在任何支持docker
环境的系统中运行啦。
提示:一定要使用新的镜像名learn/ping来运行ping命令 1
2 docker run learn/ping ping www.baidu.com
...
检查运行中的镜像
现在已经运行了一个Docker
容器,让我们来看看正在运行的容器。
使用docker ps
命令可以查看所有正在运行中的容器列表,使用docker inspect
命令我们可以查看更详细的关于某一个容器的信息
提示:可以使用镜像id的前面部分,不需要完整的id 1
2
3 docker ps
...
docker inspect id...
如果要查看所有容器,包括停止的容器可以使用-a
参数如:1
2
3
4
5 docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d5ae2f937b8b nginx "nginx -g 'daemon of…" 59 seconds ago Exited (0) 6 seconds ago musing_booth
cd54e77506cc nginx "nginx -g 'daemon of…" About a minute ago Exited (0) About a minute ago eager_williams
8aa759f43b59 nginx "nginx -g 'daemon of…" 17 minutes ago Exited (0) 6 minutes ago elegant_bell
删除容器
如果我们考虑删除上面结果显示的8aa759f43b59容器可采用参数rm
:1
docker rm 8aa759f43b59
查看本地镜像
我们下载了很多镜像,如果要确定某个镜像本地是否存在就要查看本地所有的镜像,就用到images
参数。1
2
3
4
5
6
7
8 docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx-fun latest 0368e194ab9d 13 minutes ago 109MB
nginx latest be1f31be9a87 6 days ago 109MB
hello-world latest 4ab4c602aa5e 4 weeks ago 1.84kB
ubuntu latest cd6d8154f1e1 4 weeks ago 84.1MB
mysql 5.6 1f47fade220d 4 weeks ago 256MB
training/webapp latest 6fae60ef3446 3 years ago 349MB
删除本地镜像
如果我们觉得有些镜像已经不用了,那我们可以考虑删除它,就用到rmi
参数:1
docker rmi -f ubuntu
-f
参数意思是强制删除。
进入运行中的容器
有时候我们需要进入容器中运行一些脚本,这时我们就用到了-it参数:1
2 docker run -it --name test ubuntu /bin/bash
...
-i:交互式界面,默认是false
-t:伪终端,默认是false
–name:容器别名,默认随机命名
停止容器
我们可以用stop
参数来停止镜像容器1
docker stop id
id:容器的id号
保存修改后的容器内容
当我们运行容器,往往会对容器中的内容进行修改,该内容不会保存到镜像中,我们还需要下次使用该容器,那么就可以把该容器制作成镜像,以便保存修改后的内容;1
docker commit id name
id:容器的id号
name:镜像的名字
发布自己的镜像
现在新镜像可以正常工作,我们下一步将其发布到官方的索引网站。一方面可以自己重用,另一方面也可以分享给其他人使用。
提示:
- docker images命令可以列出所有暗转过得镜像
- docker push命令可以讲某一个镜像发布到官方网站
- 你只能将镜像发布到自己的控件下面。这个模拟器登录的是learn账号
1
2
3
4docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 4ab4c602aa5e 4 weeks ago 1.84kB
docker push hello-world
以上只是docker的简单使用,更多有关docker的命令请访问Docker命令大全