docker-容器的基本操作(一)
Docker run 命令
docker run :创建一个新的容器并运行一个命令
语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端
启动容器:
docker run IMAGE[COMMAND][ARG…]
[root@izwz93cxtzylaaouqzjj4sz ~]# docker run ubuntu echo 'hello world'
Unable to find image 'ubuntu:latest' locally
Trying to pull repository docker.io/library/ubuntu ...
latest: Pulling from docker.io/library/ubuntu
8f7c85c2269a: Pull complete
9e72e494a6dd: Pull complete
3009ec50c887: Pull complete
9d5ffccbec91: Pull complete
e872a2642ce1: Pull complete
Digest: sha256:55c3bcbe279b387e344c3e8dddec74115dbb3b4f4c91f97f4d1827e2ab9aba17
hello world
启动交互式容器:
docker run -i -t IMAGE /bin/bash
-i –interactice=true | flase 默认是false
-t –tty=true|false 默认是false
[root@izwz93cxtzylaaouqzjj4sz ~]# docker run -i -t ubuntu /bin/bash
root@accfa265b7c6:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 12:34 ? 00:00:00 /bin/bash
root 9 1 0 12:34 ? 00:00:00 ps -ef
使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run –name mynginx -d nginx:latest
使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest
使用镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data映射到容器的/data。
docker run -p 80:80 -v /data:/data -d nginx:latest
使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
runoob@runoob:~$ docker run -it nginx:latest /bin/bash root@b8573233d675:/#
Docker ps 命令
docker ps : 列出容器
语法
docker ps [OPTIONS]
OPTIONS说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
实例
列出所有在运行的容器信息。
runoob@runoob:~$ docker ps
CONTAINER ID I MAGE COMMAND ... PORTS NAMES
09b93464c2f7 nginx:latest "nginx -g 'daemon off" ... 80/tcp, 443/tcp myrunoob
96f7f14e99ab mysql:5.6 "docker-entrypoint.sh" ... 0.0.0.0:3306->3306/tcp mymysql
列出最近创建的5个容器信息。
runoob@runoob:~$ docker ps -n 5
CONTAINER ID IMAGE COMMAND CREATED
09b93464c2f7 nginx:latest "nginx -g 'daemon off" 2 days ago ...
b8573233d675 nginx:latest "/bin/bash" 2 days ago ...
b1a0703e41e7 nginx:latest "nginx -g 'daemon off" 2 days ago ...
f46fb1dec520 5c6e1090e771 "/bin/sh -c 'set -x \t" 2 days ago ...
a63b4a5597de 860c279d2fec "bash" 2 days ago ...
列出所有创建的容器ID。
runoob@runoob:~$ docker ps -a -q
09b93464c2f7
b8573233d675
b1a0703e41e7
f46fb1dec520
a63b4a5597de
6a4aa42e947b
de7bb36e7968
43a432b73776
664a8ab1a585
ba52eb632bbd ...
查看正在运行的docker容器:
[root@izwz93cxtzylaaouqzjj4sz ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
查看所有容器:
[root@izwz93cxtzylaaouqzjj4sz ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
accfa265b7c6 ubuntu "/bin/bash" 10 minutes ago Exited (127) About a minute ago mad_williams
6b3a924ae442 ubuntu "echo 'hello world'" 14 minutes ago Exited (0) 14 minutes ago focused_payne
查看单独docker详细信息:
[root@izwz93cxtzylaaouqzjj4sz ~]# docker inspect accfa265b7c6
自定义容器名:
docker run --name=CONTAINER -i -t IMAGE /bin/bash
[root@izwz93cxtzylaaouqzjj4sz ~]# docker run --name=container01 -i -t ubuntu /bin/bash
[root@izwz93cxtzylaaouqzjj4sz ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
50e2a58d8727 ubuntu "/bin/bash" 19 seconds ago Exited (0) 15 seconds ago container01
accfa265b7c6 ubuntu "/bin/bash" 27 minutes ago Exited (127) 18 minutes ago mad_williams
6b3a924ae442 ubuntu "echo 'hello world'" 32 minutes ago Exited (0) 32 minutes ago focused_payne
重启停止的容器:
docker start [-i] 容器名
[root@izwz93cxtzylaaouqzjj4sz ~]# docker start -i container01
root@50e2a58d8727:/# exit;
删除停止的容器:
docker rm 容器名
[root@izwz93cxtzylaaouqzjj4sz ~]# docker rm container01
container01
以守护形式运行容器:
docker run -i -t IMAGE /bin/bash
ctrl+P OR ctrl+Q to create backstage container
root@izwz93cxtzylaaouqzjj4sz ~]# docker start -i accfa265b7c6
root@accfa265b7c6:/# [root@izwz93cxtzylaaouqzjj4sz ~]#
[root@izwz93cxtzylaaouqzjj4sz ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
accfa265b7c6 ubuntu "/bin/bash" 37 minutes ago Up 48 seconds mad_williams
附加到运行中的容器
docker attach 容器名字
[root@izwz93cxtzylaaouqzjj4sz ~]# docker attach accfa265b7c6
root@accfa265b7c6:/#
启动守护式容器:
docker run -d 镜像名【ACOMMAND】【ARG..】
[root@izwz93cxtzylaaouqzjj4sz ~]# docker run --name dc1 -d ubuntu /bin/sh -c "while true; do echo hello wolrd; sleep 1; done"
8a1e189477b4520906dd9398112697544f07b472728d2d7648e44b6a8ab5402f
查看容器日志:
dcoker logs 【-f】【-t】【-tail】 容器名
-f –follws=ture
-t –timestams=true
–tail = “ail“
[root@izwz93cxtzylaaouqzjj4sz ~]# docker logs -tf --tail 10 dc1
2018-01-16T13:21:01.789167000Z hello wolrd
2018-01-16T13:21:02.790285000Z hello wolrd
2018-01-16T13:21:03.791285000Z hello wolrd
2018-01-16T13:21:04.792358000Z hello wolrd
2018-01-16T13:21:05.793429000Z hello wolrd
2018-01-16T13:21:06.794718000Z hello wolrd
查看容器内进程:
docker top 容器名
[root@izwz93cxtzylaaouqzjj4sz ~]# docker top dc1
UID PID PPID C STIME TTY TIME CMD
root 19721 19697 0 21:18 ? 00:00:00 /bin/sh -c while true; do echo hello wolrd; sleep 1; done
root 20058 19721 0 21:21 ? 00:00:00 sleep 1
在运行中的容器内启动新进程:
docker exec [-d] [-i] [-t] 容器名 【command】【arg..】
[root@izwz93cxtzylaaouqzjj4sz ~]# docker top dc1
UID PID PPID C STIME TTY TIME CMD
root 19721 19697 0 21:18 ? 00:00:00 /bin/sh -c while true; do echo hello wolrd; sleep 1; done
root 20058 19721 0 21:21 ? 00:00:00 sleep 1
[root@izwz93cxtzylaaouqzjj4sz ~]# docker exec -i -t dc1 /bin/bash
root@8a1e189477b4:/# [root@izwz93cxtzylaaouqzjj4sz ~]#
[root@izwz93cxtzylaaouqzjj4sz ~]# docker top dc1
UID PID PPID C STIME TTY TIME CMD
root 19721 19697 0 21:18 ? 00:00:00 /bin/sh -c while true; do echo hello wolrd; sleep 1; done
root 20726 20714 0 21:31 pts/1 00:00:00 /bin/bash
root 20766 19721 0 21:32 ? 00:00:00 sleep 1
停止守护式容器:
docker stop 容器名
docker kill 容器名
区别:
stop是非强制关闭
kill是强制关闭
[root@izwz93cxtzylaaouqzjj4sz ~]# docker stop dc1
dc1
[root@izwz93cxtzylaaouqzjj4sz ~]# docker kill dc1
dc1