DOCKER学习笔记二

常用命令

查看镜像命令 docker images

显示的信息标签

REPOSITORY:镜像名称

TAG:镜像标签

IMAGE ID:镜像ID

CREATED:镜像创建日期(不是获取镜像的时间)

SIZE:镜像大小

这些镜像都存储在docker宿主机 /var/lib/docker目录下

搜索镜像命令 docker search 镜像名称

NAME:仓库名称 DESCRIPTION:镜像描述

STARS:用户评价,镜像是否受欢迎

OFFICIAL:是否官方 AUTOMATED:自动构建,表示该镜像由docker hub自动构建流程创建的

在仓库中拉取镜像命令 docker pull 镜像名称

例 docker pull centos7

删除镜像命令 docker rmi 镜像ID

删除所有镜像 docker rmi 'docker images -q'

容器相关命令

查看容器 docker ps -a(去掉-a是查看运行中的容器,去掉则为全部,加上-l则为查看最后一次运行的容器,加上-f statu-exited则为查看停止的容器)

创建容器 docker run 参数

-i 表示运行容器

-t 表示容器启动后进入其命令行

  • -name 为创建容器命名

-v 表示目录映射关系

-d 在run后加上这个参数就会创建一个守护式容器在后台运行

-p 表示端口映射,可以使用多个-p做多个端口映射

交互式创建容器命令 docker run -it - -name=容器名称 镜像名称:标签/bin/bash

守护式创建容器 docker run -di - -name=容器名称 镜像名称:标签

登录守护式创建容器 docker exec -it 容器名称(或者容器ID) /bin/bash

停止容器 docker stop 容器名称或者ID

启动容器 docker start 容器名称或者ID

文件拷贝

把需要文件拷贝到容器内使用命令 docker cp 需要拷贝到文件或者目录 容器名称:容器目录

将文件从容器拷贝出来使用命令 docker cp 容器名称:容器目录 文件 需要拷贝的文件或者目录

目录挂载

在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样就可以通过修改宿主机某个目录的文件从而影响容器。

创建容器添加-v参数 后边为 宿主机目录:容器目录

例 docker run -di -v /usr/local/myhtml:/usr/local/myhtml - -name=mycentos3 centos:7

如果共享是多级目录出现权限不足,原因是Linux系统安全模块selinux把权限禁了,添加参数 - -privileged=true 就可以解决了。

查看容器IP地址 docker inspect 容器名称或者ID

也可以使用以下命令直接输出IP

docker inspect - -format='{{.NetworkSettings.IPAddress}}' 容器名称或者ID

删除容器 docker rm 容器名称或者ID

部署服务

mysql部署

拉取mysql镜像 docker pull centos/mysql-57-centos7

创建容器 docker run -di - -name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

-p 代表端口映射 格式宿主机映射端口:容器运行端口

-e代表添加环境变量,MYSQL_ROOT_PASSWORD是root用户的登录密码

进入mysql容器 docker exec -it tensquare_mysql /bin/bash

登录mysql mysql -u root -p

远程登录mysql 连接宿主机的ip 指定端口3306

tomcat部署

拉取镜像 docker pull tomcat:7-jre7

创建容器 -p表示地址映射

docker run -di - -name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/webapps tomcat:7-jre7

上传文件 put 目录路径 / 文件名称

该文件转移 mv cas.war(某个文件) /usr/local/webapps

访问时候 要加上这个文件夹

nginx部署

拉取镜像 docker pull nginx

创建nginx容器 docker run -di - -name=mynginx -p 80:80 nginx

上传文件目录 put -r 目录路径 / 文件夹

进入容器 docker exec -it mynginx /bin/bash

dir查看目录 /etc/nginx/nginx.conf(配置文件) conf.d目录可以导入模块

要把网页的文件夹改名为html 覆盖到nginx的目录 /usr/share/html下

redis部署

拉取镜像 docker pull redis

创建容器 docker run -di - -name=myredis -p 6379:6379 redis

测试:远程连接redis命令 redis-cli -h IP地址

迁移与备份

容器保存为镜像 docker commit mynginx(某个容器) mynginx_i

镜像备份 保存为tar文件 docker save -o mynginx.tar mynginx_i

镜像恢复与迁移

先删除掉 mynginx_img 然后执行以下命令恢复

docker load -i mynginx.tar

-i 输入文件 执行后再查看就可以看到恢复了

dockerfile 由一系列命令和参数构成的脚本,应用于基础镜像并创建新的镜像

常用命令

FROM image_name:tag 定义了使用哪个基础镜像启动构建流程

MAINTAINER user_name 声明镜像创作者

ENV key ualue 设置环境变量(可以写多条)

RUN command 是dockerfile的核心部分(可以写多条)

ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是个压缩文件将会在复制后自动解压

COPY source_dir/file dest_dir/file 和ADD相似,但如果有压缩文件不能解压

WORKDIR path_dir 设置工作目录

dockerfile构建jdk1.8镜像 操作

首先创建一个目录 mkdir -p /usr/local/docker jdk8 (这样是为了放入jdk的包和dockerfile文件进去)

接着上传jidk的压缩包 put 目录/jdk.gz压缩包 把这个压缩包移动到目录 /usr/local/docker jdk8

进入这个目录 构建一个文件 vi Dockerfile(必须大写d开头),写入以下内容

FROM centos:7 #使用基础镜像centos7启动构建流程

MAINTAINER itcast #声明镜像创作者

WORKDIR /usr #设置工作目录

RUN mkdir /usr/local/java #创建一个java目录

ADD jdk.tar.gz(jdk压缩包) /usr/local/java #添加jdk压缩包

ENV JAVA_HOME /usr/local/java/jdk解压后的名字 #添加环境变量

ENV JRE_HOME $JAVA_HOME/jre

ENV CLASSPATH J A V A _ H O M E / b i n / d t . j a r : JAVA\_HOME/bin/dt.jar: JAVA_HOME/bin/dt.jar:JAVA_HOME/lib/tools.jar: J R E _ H O M E / l i b : JRE\_HOME/lib: JRE_HOME/lib:CLASSPATH

ENV PATH J A V A _ H O M E / b i n : JAVA\_HOME/bin: JAVA_HOME/bin:PATH

保存好,接着最关键一步 ,执行一个命令 docker build -t='jdk1.8(指定镜像名称)' ** . ** (这个点代表当前目录下)

执行后可以查询到构建完成了 docker images

docker私有仓库

搭建与配置

拉取私有仓库镜像 docker pull registry

启动私有仓库容器 docker run -di - -name=registry -p 5000:5000 registry

打开浏览器输入 http://私有仓库ip地址:5000/v2/_catalog看到 {"repositories":[ ]} 表示私有仓库搭建成功了并且内容为空

修改daemon.json vi /etc/docker/daemon.json 添加以下内容保存退出

{"insecure-registries":["私有仓库ip地址:5000]} 重启一下服务 systemctl restart docker

镜像上传到私有仓库

标记此镜像为私有仓库的镜像 (为上传做准备)

docker tag jdk1.8 私有仓库ip地址:5000/jdk1.8

上传标记的镜像 (注意:重启过docker服务后,要把registry的服务开启 docker start registry)

docker push 私有仓库ip地址:5000/jdk1.8

重新打开这个 http://私有仓库ip地址:5000/v2/_catalog 看到 {"repositories":[jdk1.8]} 就上传成功了。

参考文献

个人学习docker教程总结笔记

你可能感兴趣的:(DOCKER学习笔记二)