系列链接
Docker系列之一:Docker介绍及在Ubuntu上安装
Docker系列之五:Volume 卷的使用——以Redis为例
Docker系列之六:Volume 卷的使用——在Dockerfile中的用法
Docker系列之七:Docker 网络(内部网络、容器之间的连接)
Docker系列之八:在Dockerfile中使用多段构建Muti-stage build
Docker系列之九:Docker用于持续集成,构建Jenkins和Docker服务器
简介
这里只会讲一些日常我们可能会用的比较多的一些命令。
启动和停止Docker 服务
sudo service docker stop
systemctl stop docker.service
sudo service docker start
systemctl start docker.service
查看docker 的基本信息
docker info
运行容器,-i表示容器中STDIN是开启的,-t表示为容器分配一个伪终端,使用 -i -t来申请一个控制台同容器进行数据交互,-d表示Detached,容器将会运行在后台模式(Detached mode),--name表示容器的名称。
root@iZbp13z6cxj72rb7bxf0smZ:~# docker run -i -t -d -p 5001:80 --name mytest nginx
b652f143b1000414507d67e5ca61ef87ec7cdc2497e289be52b40f48396dc5b3
root@iZbp13z6cxj72rb7bxf0smZ:~# curl localhost:5001
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
查看当前运行的的容器,使用docker ps -a 查看所有的容器,包括停止运行的容器
root@iZbp13z6cxj72rb7bxf0smZ:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b652f143b100 nginx "nginx -g 'daemon of…" 23 seconds ago Up 22 seconds 0.0.0.0:5001->80/tcp mytest
停止正在运行的容器
root@iZbp13z6cxj72rb7bxf0smZ:~# docker stop mytest
mytest
启用已经停止的容器
root@iZbp13z6cxj72rb7bxf0smZ:~# docker start mytest
mytest
重新附着到容器的会话上,打开另一个命令行访问curl localhost:5001,会看到下面多出一条记录。
root@iZbp13z6cxj72rb7bxf0smZ:~# docker attach mytest
172.17.0.1 - - [26/Oct/2018:03:44:05 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" "-"
获取守护式容器的日志, 使用-f 参数来监控Docker的日志,这与tail -f命令很相似。-t为每条日志加上时间戳。
root@iZbp13z6cxj72rb7bxf0smZ:~# docker logs -f mytest
172.17.0.1 - - [26/Oct/2018:03:44:05 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" "-"
root@iZbp13z6cxj72rb7bxf0smZ:~# docker logs -ft mytest
2018-10-26T03:43:07.344823460Z
2018-10-26T03:44:05.704135551Z 172.17.0.1 - - [26/Oct/2018:03:44:05 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" "-"
查看容器内的所有进程
root@iZbp13z6cxj72rb7bxf0smZ:~# docker top mytest
UID PID PPID C STIME TTY TIME CMD
root 18313 18295 0 11:52 pts/0 00:00:00 nginx: master process nginx -g daemon off;
systemd+ 18353 18313 0 11:52 pts/0 00:00:00 nginx: worker process
在容器内运行交互命令
root@iZbp13z6cxj72rb7bxf0smZ:~# docker exec -it mytest /bin/bash
root@b652f143b100:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@b652f143b100:/# hostname
b652f143b100
root@b652f143b100:/# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 b652f143b100
root@b652f143b100:/#
从容器中退出,直接输入exit
自动重启容器,如果容器因某种错误导致容器停止,它会自动重启该容器。 --restart=on-failure:5 表示尝试自动重启该容器,最多重启5次。
root@iZbp13z6cxj72rb7bxf0smZ:~# docker run --restart=always --name daemon_dave -d ubuntu /bin/sh -c "while true;do echo hello world; sleep 1; done"
05d4714e972dc927d2df3b38518122fe4d21256f36c795ffcc5baa893b960d1c
查看容器详细信息
root@iZbp13z6cxj72rb7bxf0smZ:~# docker inspect daemon_dave
[
{
"Id": "05d4714e972dc927d2df3b38518122fe4d21256f36c795ffcc5baa893b960d1c",
"Created": "2018-10-26T04:00:58.713053368Z",
"Path": "/bin/sh",
"Args": [
"-c",
"while true;do echo hello world; sleep 1; done"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 18546,
"ExitCode": 0,
"Error": "",
"StartedAt": "2018-10-26T04:00:59.092799529Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:452a96d81c30a1e426bc250428263ac9ca3f47c9bf086f876d11cb39cf57aeec",
.......................
删除容器,后面加 -f 强制删除正在运行的容器。
root@iZbp13z6cxj72rb7bxf0smZ:~# docker rm mytest
mytest
删除所有容器, -a 表示所有容器,-q表示只返回容器的ID, -f表示强制删除。
root@iZbp13z6cxj72rb7bxf0smZ:~# docker rm $(docker ps -aq) -f
05d4714e972d
357ed7363dcf
5a1058f58d59