Docker 的常用命令

501 阅读3分钟

基础命令

docker ps -l 查看最近创建的容器

docker ps -aq 只是返回容器的id

docker inspect 容器名/容器ID 查看容器的配置信息

docker stop / docker kill 关闭正在运行的容器 stop会报错kill不会

docker start 启动容器

docker rm 容器ID /容器名 删除容器(只能删除已关闭的)

docker rm -f 容器ID/容器名 强制删除

docker rm $(docker ps -aq) 删除所有容器

docker run -it 镜像名 /bin/bash 启动交互样式容器/守护容器

    exit 退出容器【此时代表已经关闭了容器】

    ctrl +p ctrl+q 【退出但不关闭】

docker attach 容器ID/容器名 重新进入容器【正在运行的容器】

docker exec -it 容器ID/容器名 /bin/bash 重新进入容器【正在运行的容器】

docker top 容器名 查看容器内部进程情况

docker cp 源文件 容器id:目标目录 将我们宿主机的文件复制到容器里面


构建镜像

基于容器commit 提交成进行可以推送远程 docker login 登录docker push 推送镜像

 docker commit -a 'dapangyu0702' -m 'commit nginx image'  nginx-test dapangyu0702/my_nginx
     _image 

使用Dockerfile方式构建镜像

FROM 镜像名 ===》 构建镜像的时候基于哪个镜像构建的

MAINTAINER 作者姓名 联系方式 ===》定义Dockerfile作者的联系方式,对镜像没有添加任何内容

RUN 命令 ====》 基于前一个中间镜像,创建对应的容器,执行run的命令,提成构建新的镜像,把上一步创建的容器删除

RXPOSE 端口 ===》这个Dockerfile构建出来的镜像需要开放哪些端口,但是并没有真正开放,

CMD/ENTRYPOINT 启动命令 ===》 在镜像构建好之后,通过docker run镜像 启动命令,默认启动命令cmd可以被覆盖,另一个不允许

ADD/CPOY 从宿主机的文件存放到镜像的目录 ==》构建镜像的时候,将宿主机的文件复制到镜像中

WORKDIR 指定你的工作目录 ===》标识运行的时候的工作目录,可以理解cd到某个个目录,然后在执行这个目录后续的命令

EVN key value ===》 给镜像定义一个环境变量

ONBUILD 指令 ===》当我们dockerfile定义一个文件构成一个镜像A之后,启动Dockerfile文件基于镜像A构建新的镜像时候会触发ONBUILD指令


端口映射

docker run -it -p 80 镜像 /bin/bash 在宿主机中挑选随机端口映射到容器中的80端口

docker run -it -p 8088:80 镜像 /bin/bash 在宿主机中8088端口映射到容器中的80端口

默认网桥模式,在宿主机中docker0网卡,会给每一个容器分配一个ip 172 .17.0.2 。。。。

修改网络模式 docker run -it --net host 镜像 /bin/bash ==》把网络模式修改为host 意味着宿主机和容器共享一个网卡


容器之间互联

容器之间互联 可以给容器定义一个名称,然后在其他的容器中可以通过这个容器进行链接

docker run --name=web1 centos /bin/bash 因为web1的ip不是固定的 由于启动顺序的不同,ip可能不一样

docker run --nameweb2 --link=web1:web1IP centos /bin/bash 在web2 容器中定义一个web1的变量,这个变量指向web1的容器,可以在web2容器使用web1IP标识web1的IP地址


数据共享

docker run -it -v ~/data:/~data centos /bin/bash ===》宿主机中的/data和容器中data进行共享,好处是,容器中的日志可以通过这种方式通过宿主机看到

数据卷容器

docker run -it --name cvt5 -volumes-from dvt4 centos /bin/bash dev定义了宿主机和dev4 的目录的共享(多个) ,ctv5 可以直接通过--vloumes-from dvt4 可以获取到dvt4 所有的共享目录