Docker常用命令
Docker配置阿里云镜像仓库
1,登录进入阿里云镜像服务中心,获取镜像地址
2,在/etc/docker目录下找到在daemon.json文件(没有就新建),将下面内容写入
{
“registry-mirrors”: [“https://xxxxxxx.mirror.aliyuncs.com”]
}
3,重启daemon
systemctl daemon-reload
4,重启docker服务
systemctl restart docker
Docker基本命令
启动Docker
systemctl start docker
停止Docker
systemctl stop docker
重启Docker
systemctl restart docker
开机启动Docker
systemctl enable docker
查看Docker概要信息
docker info
查看Docker帮助文档
docker --help
查看Docker版本信息
docker version
Docker镜像常用命令
docker images 列出本机所有镜像
docker search 搜索镜像
docker pull 下载镜像
docker rmi 删除镜像
docker ps 查看正在运行的镜像
docker ps -a 查看所有启动的镜像
Docker推送镜像到hub服务器
步骤一:
https://hub.docker.com/ 注册下 得到docker id和密码
步骤二:
用docker login登陆hub服务器
步骤三:
docker push推送(用户名必须与注册的一直,不然会推送失败)
docker push 用户名/镜像名:版本
推送成功:
登陆 https://hub.docker.com/ 点击 Repositories 菜单
Docker创建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
–name=“容器新名字”:为容器指定一个名称;
-i:以交互模式运行容器,通常与-t或者-d同时使用;
-t:为容器重新分配一个伪输入终端,通常与-i同时使用;
-d: 后台运行容器,并返回容器ID;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
启动普通容器: docker run --name 别名 镜像ID
启动交互式容器: docker run -it --name 别名 镜像ID 来运行一个容器,取别名,交互模式运行,以及分配一个伪终端
启动容器,并执行/bin/bash命令;
docker run -it --name 别名 镜像ID /bin/bash命令
端口映射;
docker run -it -p 8888:8080 tomcat
docker run -it -P tomcat
Docker宿主机和容器之间文件拷贝
Docker宿主机和容器之间文件拷贝 docker copy
宿主机文件 copy to 容器内
docker cp 需要拷贝的文件或者目录 容器名称:容器目录
容器内 copy to 宿主机
docker cp 容器名称:容器目录 宿主机目录
Docker 查看容器日志docker logs
docker logs [OPTIONS] CONTAINER
Options:
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
简单粗糙方式,直接去docker容器文件里找;
具体未知:/var/lib/docker/containers/
每个容器对应一堆文件,然后有个log结尾的,就是日志文件;
Docker查看容器进程
docker top 容器ID
Docker进入容器执行命令
docker exec -it 容器名称 或者 容器ID 执行命令
docker exec -it id ls -l
exit容器停止并退出
Ctrl+P+Q容器不停止退出
直接操作容器,执行完 回到 宿主主机终端;
Docker提交运行时容器成为镜像docker commit
Docker提交运行时容器成为镜像docker commit
docker commit -a=‘作者’ -m=‘备注’ 运行时容器ID 新镜像名称
Docker容器目录挂载
简介:
容器目录挂载:
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以实现宿主机和容器目录的双向自动同步;
作用:
前面学过cp命令来实现数据传递,这种方式比较麻烦;
我们通过容器目录挂载,能够轻松实现代码上传,配置修改,日志同步等需求;
实现:
语法:
docker run -it -v /宿主机目录:/容器目录 镜像名
多目录挂载
docker run -it -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名
注意:
如果你同步的是多级目录,可能会出现权限不足的提示;
这是因为Centos7中的安全模块selinux把权限禁掉了,我们需要添加 --privileged=true 来解决挂载的目录没有权限的问题;
挂载目录只读:
docker run -it -v /宿主机目录:/容器目录:ro 镜像名
Docker自定义网络模式,实现容器固定ip地址
Docker默认使用的是bridge 桥接网络模式,
我们可以查看下 docker network ls
我们创建自定义网络模式;
docker network create --subnet=172.20.0.0/16 extnetwork
创建容器并指定IP;
通过–net extnetwork --ip 172.20.0.2 指定
案例:
docker run -p 8066:8066 -it -v /home/docker/mycat/conf/:/home/mycat/conf/ -v /home/docker/mycat/logs/:/home/mycat/logs/ --net extnetwork --ip 172.20.0.2 镜像id
这里必须用172.20.0.2开始分配,因为172.20.0.1是网关;
查看容器信息;
docker inspect 容器id
扩展:
docker network rm extnetwork #删除网络
DockerFile常用指令
DockerFile常用指令
FROM image_name:tag
定义了使用哪个基础镜像启动构建流程
MAINTAINER user_info
声明镜像维护者信息
ENV key value
设置环境变量(可以写多条)
RUN command
构建容器时需要运行的命令(可以写多条)
WORKDIR path_dir
设置终端默认登录进来的工作目录
EXPOSE port
当前容器对外暴露出的端口
ADD source_dir/file dest_dir/file
将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file
和ADD相似,但是如果有压缩文件是不能解压
VOLUME
创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等
CMD
指定容器启动时要运行的命令,假如有多个CMD,最后一个生效
ENTRYPOINT
指定容器启动时要运行的命令
ONBUILD
当构建一个被继承的Dockerfile时运行的命令,父镜像在被子镜像继承后父镜像的onbuild被触发。可以把ONBUID理解为一个触发器。
DockerFile构建自定义centos
FROM centos
MAINTAINER xx@126.com>
LABEL name=" CentOS Image"
build-date=“20191112”
ENV WORKPATH /home/
WORKDIR $WORKPATH
RUN yum -y install net-tools
RUN yum -y install vim
EXPOSE 80
CMD /bin/bash
第二步:通过DockerFile构建镜像
构建 docker build -f myCentosDockerFile -t xx/mycentos:1.1 .
第三步:测试运行镜像
运行 docker run -it 镜像ID
第四步:查看镜像历史
查看镜像历史 docker history 镜像ID