Docker容器命令

一、容器基本命令

新建容器并启动

docker run [可选参数] image

#参数说明
--name="Name"  容器名字
-d             后台方式运行
-it            交互方式运行,进入容器查看内容
-P(大写)       指定容器的端口
    -P ip:主机端口:容器端口
    -P 主机端口:容器端口
    -P 容器端口
-p             随机指定端口

列出所有运行的容器

docker ps    列出当前正在运行的容器

#参数说明
-a           列出当前正在运行的容器+历史运行过的容器
-n=?         显示最近创建的容器
-q           只显示容器的编号

退出容器

exit    #直接容器停止退出
Ctrl + p + q  #容器不停止退出

删除容器

docker rm 容器id                   #删除指定的容器,不能删除正在运行的容器
docker rm -f $(docker ps -aq)      #删除所有的容器
docker ps -a -q|xargs docker rm    #删除所有的容器

启动和停止容器

docker start 容器id    #启动容器
docker restart 容器id  #重启容器
docker stop 容器id     #停止当前正在运行的容器
docker kill 容器id     #强制停止当前容器

查看日志

docker logs -f -t --tail number 容器id

#参数说明
-f                #显示日志
-t                #显示时间戳
--tail number     #显示日志条数

查看容器中进程信息

docker top 容器id
UID    #当前用户id
PID    #父id
PPID   #进程id

查看容器的原数据

docker inspect 容器id

进入当前正在运行的容器

#方式一:请入容器后开启一个新的终端,可以在里面操作(常用)
docker exec 容器id bashShell
#方式二:进入容器正在执行的终端,不会启动新的进程
docker attach 容器id bashShell

从容器内拷贝文件到主机上

docker cp 容器id:容器内路径 目的主机路径

提交镜像

docker commit #提交容器成为一个新的副本
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[版本号]

二、容器数据卷

容器的持久化和同步操作,容器间也是可以数据共享的,Docker容器中产生的数据,同步到本地

好处:修改只需本地修改,容器内自动同步

使用数据卷

#方式一:直接使用命令挂载 -v
docker run -it -v 主机目录:容器内目录

查看所有卷(volume)的情况 

docker volume ls

 具名&匿名挂载&指定路径挂载

#匿名挂载
-v 容器内路径
docker run -d -p --name nginx01 -v /ect/nginx nginx
#具名挂载(常用)
-v 卷名:容器内路径
docker run -d -p --name nginx01 -v juming-nginx:/ect/nginx nginx
#指定路径挂载
-v /宿主机路径:容器内路径
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d mysql:tag

 所有docker容器内的卷,没有指定目录情况下都在 /var/lib/docker/volumes/****/_data

 实战:安装MySQL

#获取镜像
docker pull mysql:5.7

#运行容器,需要做数据挂载,安装启动mysql,需要配置密码
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d 
                           -v /home/mysql/data:/var/lib/mysql
                           -e MYSQL_ROOT_PASSWORD=密码 
                           --name 名字 mysql:tag

 拓展

#通过 -v 容器内路径:ro rw 改变读写权限
ro    readonly  #只读(只能通过宿主机操作,容器内部无法操作)
rw    readwrite #可读可写
docker run -d -p --name nginx01 -v juming-nginx:/ect/nginx:ro nginx
docker run -d -p --name nginx02 -v juming-nginx:/ect/nginx:rw nginx

两个或者多个容器之间数据共享 

docker run -d -P 3310:3306 --name mysql02 --volumes-form mysql01 mysql:5.7

 容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止

 删除容器时持久到本地的数据不会删除

三、Dockerfile

DockerFile:构建文件,定义了一切的步骤,源代码

DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品

Docker容器:容器就是为镜像运行起来提供的服务器

初识Dockerfile

# 创建一个dockerfile文件,名字可以随机,建议Dockerfile
# 文件中的内容 指令(大写) 参数
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end----"
CMD /bin/bash

 构建步骤

  1. 编写一个dockerfile文件
  2. docker build 构建成一个镜像
  3. docker run 运行镜像
  4. docker push 发布

Dockerfile指令说明

FROM            #基础镜像,一切从这里开始构建(scratch)
MAINTAINER      #镜像作者 姓名 + 邮箱
RUN             #镜像构建的时候需要运行的命令
ADD             #添加内容
WORKDIR         #镜像的工作目录 
VOLUME          #挂载的目录
EXPOST          #保留端口配置
CMD             #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT      #指定这个容器启动的时候要运行的命令,可以追加命令
RUN             #运行
ONBUILD         #当构建一个被继承DockerFile时运行ONBUILD指令(触发指令)
COPY            #类似ADD,将文件拷贝到镜像中
ENV             #构建的时候设置环境变量

 Demo:创建自己的centos

  • 编写Dockerfile文件(cat mydockerfile-centos)
FROM centos
MAINTAINER ma<111111@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yun -y install net-tools

EXPOSE 80
CMD echo $MPATH        
CMD echo "----end----"
CMD /bin/bash
  • 通过文件构建镜像
docker build -f dockerfile文件路径 -t 镜像名:[tag]
  •  测试运行

实战:Tomcat镜像

  1. 准备镜像文件 tomcat压缩包,jdk压缩包
  2. 编写dockerfile文件
  3. 构建镜像(docker build -t diytomcat .)
  4. 启动镜像
  5. 访问测试
  6. 发布项目
FROM centos
MAINTAINER ma<111111@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u11-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /user/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out

发布镜像-dockerHub

  1. 注册账号
  2. 服务器上提交自己的镜像
docker login -u username
docker push username/diytomcat:1.0

 发布镜像-阿里云镜像

  1. 登录阿里云
  2. 找到容器镜像服务
  3. 创建命名空间
  4. 创建容器镜像
docker login --username=*** registry.cn-beijing.aliyuncs.com
docker push ***/tomcat1.0

四、Docker 网络

每启动一个docker容器,docker就会给docker容器分配一个ip,只要安装了docker就会有一个网卡docker0

桥接模式,使用的技术是evth-pair技术(一对虚拟设备接口,成对出现,一端连着协议,一端彼此相连)

docker所有网络接口都是虚拟的(转发效率高),只要容器删除,对应网桥就没了

查看容器内网络地址

ip addr

 网络连通

--link    #在hosts配置中增加了***的映射(不建议使用)
docker network connect NETWORK CONTAINER

自定义网络

#查看所有的docker网络
docker network ls

  网络模式:

  bridge : docker(默认)

  none : 不配置网络

  host : 和宿主机共享网络

  container : 容器网络连通

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

#参数说明
--driver bridge                #桥接
--subnet 192.168.0.0/16        #子网地址
--gateway 192.168.0.1          #路由器地址

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值