一、开始基本操作:
1、查看镜像:
[root@app-dev-yunying yunying]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
yunying-image latest 4caddf8a46bc 4 hours ago 310MB
nginx latest 568c4670fa80 9 days ago 109MB
frolvlad/alpine-oraclejdk8 slim 3ee5e1ce00fc 6 weeks ago 164MB
##一个镜像的标识由仓库信息价tag构成
比方说我们启动可以用Image ID来标识,或者lnmp/nginx:0.2这样标识,不写后面默认是lastest
2、有镜像之后我们可以启动一个容器:
[root@app-dev-yunying yunying]# docker run -dit -P nginx
73e3830ce7955b3ebab22bb8c19f5602cc7121ba3486842774fff97221885902
##docker run 后面常用选项:
- --name:指定容器名称(未指定则随机取名)
- -P:随机映射端口
- -v:实现文件或者目录挂载
- -i:交互
- -t:tty
- -p: 宿主机端口:容器端口
-it常一起使用,以一个新的伪终端开启一个容易,使用后就能新开一个容器中的终端,相当于新开了一个虚拟机,接着在终端中的命令就是在容器中执行命令
如果加上-P无法打开docker,打开防火墙服务即可
[root@app-dev-yunying yunying]# docker run -itd -P nginx
ff89a83b8fc32962f9e8afe3879da054518f63006d6bb6e0e8e9a35eb7dd5d2e
docker: Error response from daemon: driver failed programming external connectivity on endpoint admiring_mestorf (f13d182567aaf075fa403e53e6f2880c7e41c450d8480eb57ee7562914548cb9): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 32827 -j DNAT --to-destination 172.17.0.4:80 ! -i docker0: iptables: No chain/target/match by that name.
打开防火墙:
[root@app-dev-yunying yunying]# sudo systemctl startfirewalld.service
端口映射
docker run -itd -p 9999:80 --name test02 nginx
本机端口9999映射到容器80
docker映射端口查看
[root@app-dev-yunying yunying]# docker port test02
80/tcp -> 0.0.0.0:9999
##我们启动一个容器,默认没有指定后面的tag标签就是变成:nginx:latest,然后我们可以看到本地没有镜像的话就会去远端的Docker hub下载。
3、查看docker镜像:
[root@app-dev-yunying yunying]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
yunying-image latest 4caddf8a46bc 5 hours ago 310MB
nginx latest 568c4670fa80 9 days ago 109MB
frolvlad/alpine-oraclejdk8 slim 3ee5e1ce00fc 6 weeks ago 164MB
4、查看docker容器:
[root@app-dev-yunying yunying]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
73e3830ce795 nginx "nginx -g 'daemon of…" 12 minutes ago Up 12 minutes 0.0.0.0:32769->80/tcp happy_turing
da273b044326 yunying-image "sh -c 'java $JAVA_O…" 2 hours ago Up 2 hours 0.0.0.0:8080->8080/tcp serene_chebyshev
ba82761001b8 nginx "nginx -g 'daemon of…" 2 hours ago Exited (0) 2 hours ago vibrant_feynman
[root@app-dev-yunying yunying]# docker ps --help
Usage: docker ps [OPTIONS]
List containers
Options:
-a, --all 全部显示所有容器
-l, --latest 最新显示最新创建的容器(包括所有状态)
-q, --quiet 只显示容器id
-s, --size 显示文件的总大小
4、测试一下容器是否启动成功:
[root@test ~]# curl 127.0.0.1:9999
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
查看镜像信息
systemctl status docker 查看docker启动位置
docker info 查看本机docker的版本、镜像等基本信息
docker inspect test02 查看某个镜像的详细信息
5、我们可以查看相关容器的日志:
[root@app-dev-yunying yunying]# docker logs 2b5a158c8c3d
10.1.71.1 - - [11/Mar/2017:08:54:26 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
6、当然我们也可以登录容器:
[root@app-dev-yunying yunying]# docker exec -it 73e3830ce795 /bin/bash
root@73e3830ce795:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
7、当然也可以用来执行command模式,给容器执行一个命令:
[root@test ~]# docker run nginx uname -a
Linux 0136fbefaa24 4.10.0-1.el7.elrepo.x86_64 #1 SMP Sun Feb 19 19:12:49 EST 2017 x86_64 GNU/Linux
8、容器删除和重启
启动容器: docker start ID/NAME
停止容器: docker stop ID/NAME
重启容器: docker restartID/NAME
删除一个容器: dockr rm ID/NAME
删除运行中的容器: docker rm -f ID/NAME
删除正在运行的容器 : docker rm -f $(docker ps -q)
删除一个镜像: dockr rmi ID/NAME
删除包括运行中的所有容器
docker rm -f $(docker ps -q -a)