docker的常用命令汇总
目录
1.docker的启动、停止、重启
-
[[email protected] ~]# service docker restart
-
Redirecting to /bin/systemctl restart docker.service
-
[[email protected] ~]# service docker stop
-
Redirecting to /bin/systemctl stop docker.service
-
[[email protected] ~]# service docker start
-
Redirecting to /bin/systemctl start docker.service
2.创建一个新的容器并运行一个命令
语法 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
-
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-
-d: 后台运行容器,并返回容器ID;
-
-i: 以交互模式运行容器,通常与 -t 同时使用;
-
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-
-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镜像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
绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
-
[email protected]:~$ docker run -it nginx:latest /bin/bash
3-1.docker启动的容器列表
-
[[email protected] ~]# docker ps
-
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
-
724e7701f0d4 centos "/bin/bash" 4 minutes ago Up 4 minutes yufei_6
-
f9097691663e centos "/bin/bash" 5 minutes ago Up 5 minutes yufei_5
-
[[email protected] ~]#
3-2.查看docker创建的所有容器
-
[[email protected] ~]# docker ps -a
-
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
-
724e7701f0d4 centos "/bin/bash" 5 minutes ago Up 5 minutes yufei_6
-
f9097691663e centos "/bin/bash" 6 minutes ago Up 6 minutes yufei_5
-
e59a540fb979 centos "/bin/base" 6 minutes ago Created yufei_4
-
ff49dfedea4f centos "/bin/bash" 2 hours ago Exited (137) 10 minutes ago yufei_03
-
d2cc70abb5a5 centos "/bin/bash" 2 hours ago Exited (127) 2 hours ago yufei_02
-
2d48fc5b7c17 centos "/bin/bash" 2 hours ago Exited (127) 2 hours ago yufei_01
-
[[email protected] ~]#
docker ps 默认列表是正在启动的容器 -a是显示所有创建的容器
4.启动、停止、重启某个docker 容器
-
[[email protected] ~]# docker start yufei_01
-
yufei_01
-
[[email protected] ~]# docker stop yufei_01
-
yufei_01
-
[[email protected] ~]# docker restart yufei_01
-
yufei_01
-
[[email protected] ~]#
5.查看指定容器的日志记录
-
[[email protected] ~]# docker logs -f yufei_01
-
[[email protected] /]# ls
-
anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
-
[[email protected] /]# exit
-
exit
-
[[email protected] /]# ls
-
anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
-
[[email protected] /]#
-
[[email protected] /]#
-
[[email protected] /]#
-
[[email protected] /]#
-
[[email protected] /]#
-
[[email protected] /]#
-
[[email protected] /]#
-
[[email protected] /]# cd /
-
[[email protected] /]# ls
-
anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
-
[[email protected] /]# mkdir yufei
-
[[email protected] /]# ls
-
anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var yufei
-
[[email protected] /]# cd yufei
-
[[email protected] yufei]# ls
-
yufei
-
[[email protected] yufei]# cd yufei
-
[[email protected] yufei]# ls
-
application
-
[[email protected] yufei]# cd ../../
-
[[email protected] /]# rm -rf yufei
-
[[email protected] /]# eixt
-
bash: eixt: command not found
-
[[email protected] /]# exit
6.删除某个容器,若正在运行,需要先停止
-
[[email protected] ~]# docker rm yufei_01
-
Error response from daemon: You cannot remove a running container 2d48fc5b7c17b01e6247cbc012013306faf1e54f24651d5e16d6db4e15f92d33. Stop the container before attempting removal or use -f
-
[[email protected] ~]# docker stop yufei_01
-
yufei_01
-
[[email protected] ~]# docker rm yufei_01
-
yufei_01
-
[[email protected] ~]#
7.删除所有容器
-
[[email protected] ~]# docker rm $(docker ps -a -q)
-
Error response from daemon: You cannot remove a running container 724e7701f0d4a830167e21f75b470235a0e408fd6cc2913403426e96f69cba11. Stop the container before attempting removal or use -f
-
Error response from daemon: You cannot remove a running container f9097691663ee36f9d2ee56afbdcca0eeb8b63e5590ddf18c0c42954c93b9f06. Stop the container before attempting removal or use -f
-
[[email protected] ~]#
-
[[email protected] ~]#
-
[[email protected] ~]# docker stop yufei_6
-
yufei_6
-
[[email protected] ~]# docker stop yufei_5
-
yufei_5
-
[[email protected] ~]# docker rm $(docker ps -a -q)
-
724e7701f0d4
-
f9097691663e
-
[[email protected] ~]#
8.从Docker Hub查找镜像
语法 docker search [OPTIONS] TERM
OPTIONS说明:
-
--automated :只列出 automated build类型的镜像;
-
--no-trunc :显示完整的镜像描述;
-
-s :列出收藏数不小于指定值的镜像。
实例
从Docker Hub查找所有镜像名包含java,并且收藏数大于10的镜像
-
[email protected]:~$ docker search -s 10 java
-
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
-
java Java is a concurrent, class-based... 1037 [OK]
-
anapsix/alpine-java Oracle Java 8 (and 7) with GLIBC ... 115 [OK]
-
develar/java 46 [OK]
-
isuper/java-oracle This repository contains all java... 38 [OK]
-
lwieske/java-8 Oracle Java 8 Container - Full + ... 27 [OK]
-
nimmis/java-centos This is docker images of CentOS 7... 13 [OK]
9.从镜像仓库中拉取或者更新指定镜像
语法 docker pull [OPTIONS] NAME[:TAG|@DIGEST]
OPTIONS说明:
-
-a :拉取所有 tagged 镜像
-
--disable-content-trust :忽略镜像的校验,默认开启
实例
-
从Docker Hub下载java最新版镜像。
-
docker pull java
-
从Docker Hub下载REPOSITORY为java的所有镜像。
-
docker pull -a java
sudo docker pull image的名字和对应的版本号,如果不指定版本号,拉取的镜像的版本会默认为latest
拉指定版本如下:
-
docker pull mongo:3.2.4
-
docker pull redis:3.2
-
docker pull centos:6
10. 列出本地镜像。
语法 docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS说明:
-
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
-
--digests :显示镜像的摘要信息;
-
-f :显示满足条件的镜像;
-
--format :指定返回值的模板文件;
-
--no-trunc :显示完整的镜像信息;
-
-q :只显示镜像ID。
实例
查看本地镜像列表。
-
[email protected]:~$ docker images
-
REPOSITORY TAG IMAGE ID CREATED SIZE
-
mymysql v1 37af1236adef 5 minutes ago 329 MB
-
runoob/ubuntu v4 1c06aa18edee 2 days ago 142.1 MB
-
<none> <none> 5c6e1090e771 2 days ago 165.9 MB
-
httpd latest ed38aaffef30 11 days ago 195.1 MB
-
alpine latest 4e38e38c8ce0 2 weeks ago 4.799 MB
-
mongo 3.2 282fd552add6 3 weeks ago 336.1 MB
-
redis latest 4465e4bcad80 3 weeks ago 185.7 MB
-
php 5.6-fpm 025041cd3aa5 3 weeks ago 456.3 MB
-
python 3.5 045767ddf24a 3 weeks ago 684.1 MB
-
...
列出本地镜像中REPOSITORY为ubuntu的镜像列表。
-
[email protected]:~# docker images ubuntu
-
REPOSITORY TAG IMAGE ID CREATED SIZE
-
ubuntu 14.04 90d5884b1ee0 9 weeks ago 188 MB
-
ubuntu 15.10 4e3b13c8a266 3 months ago 136.3 MB
11.删除本地一个或多少镜像。
语法 docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS说明:
-
-f :强制删除;
-
--no-prune :不移除该镜像的过程镜像,默认移除;
实例
强制删除本地镜像runoob/ubuntu:v4。
-
[email protected]:~# docker rmi -f runoob/ubuntu:v4
-
Untagged: runoob/ubuntu:v4
-
Deleted: sha256:1c06aa18edee44230f93a90a7d88139235de12cd4c089d41eed8419b503072be
-
Deleted: sha256:85feb446e89a28d58ee7d80ea5ce367eebb7cec70f0ec18aa4faa874cbd97c73
12.在运行的容器中执行命令
语法 docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:
-
-d :分离模式: 在后台运行
-
-i :即使没有附加也保持STDIN 打开
-
-t :分配一个伪终端
实例
在容器mynginx中以交互模式执行容器内/root/runoob.sh脚本
-
[email protected]:~$ docker exec -it mynginx /bin/sh /root/runoob.sh
-
http://www.runoob.com/
在容器mynginx中开启一个交互模式的终端 这样可以得到多个shell 同时作用于一个容器
-
[email protected]:~$ docker exec -i -t mynginx /bin/bash
13.用于容器与主机之间的数据拷贝
语法 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
OPTIONS说明:
-
-L :保持源目标中的链接
实例
将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。
docker cp /www/runoob 96f7f14e99ab:/www/
将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。
docker cp /www/runoob 96f7f14e99ab:/www
将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。
docker cp 96f7f14e99ab:/www /tmp/
14.查看容器IP地址
-
#查看所有容器
-
docker inspect --format='{{.NetworkSettings.IPAddress}}' $(docker ps -a -q)
-
#查看单个容器
-
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-ID>
-
或
-
docker inspect <container id>
-
或
-
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
上一篇: docker的常用命令
下一篇: win7没有我的电脑图标怎么办