查看镜像命令 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 表示容器启动后进入其命令行
-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教程总结笔记