docker
1. 安装Docker
1.1 安装
-
yum包更新到最新
sudo yum update -
安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 -
设置yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -
安装docker
sudo yum install docker-ce -
安装后查看docker版本
docker -v
1.2 设置ustc的镜像
-
编辑文件
vi /etc/docker/daemon.json{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}
1.3 Docker的启动与停止
-
启动
systemctl start docker -
停止
systemctl stop docker -
重启
systemctl restart docker -
查看状态
systemctl status docker -
开机启动
systemctl enable docker -
查看docker概要信息
docker info -
查看docker帮助文档
docker --help
2. 常用命令
2.1 镜像相关命令
2.1.1 查看镜像
docker images
2.1.2 搜索镜像
docker search 镜像名称
2.1.3 拉取镜像
docker pull 镜像名称
2.1.4 删除镜像
docker rmi 镜像ID
docker rmi 'docker images -q' 删除所有镜像
2.2 容器相关命令
2.2.1 查看容器
docker ps 查看正在运行的容器
docker ps -a 查看所有容器
docker ps -l 查看最后一次运行的容器
docker ps -f status=exited 查看停止的容器
2.2.2 创建与启动容器
-
创建容器常用的参数说明:
-
创建容器命令:
docker run-i 表示运行容器-t 表示容器启动后会进入其命令行,加入这两个参数后,容器创建就能登录进去,即分配一个伪终端-name 为创建的容器命名-v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上-d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i-t两个参数,创建后会自动进入容器)```-p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射``
-
交互式方式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash退出当前容器 —
exit -
守护式方式创建容器
docker run -di --name=容器名称 镜像名称:标签登录守护式容器方式:
docker exec -it 容器名称(或者容器ID) /bin/bash
2.2.3 停止与启动容器
-
停止容器
docker stop 容器名称(或者容器ID) -
启动容器
docker start 容器名称(或者容器ID)
2.2.4 文件拷贝
-
如果我们需要将文件拷贝到容器内可以使用cp命令
docker cp 需要拷贝的文件或目录 容器名称:容器目录 -
也可以将文件从容器内拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或目录
2.2.5 目录挂载
-
在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样就可以通过修改宿主机某个目录的文件从而去影响容器
-
创建容器 添加-v参数 后边为宿主机目录:容器目录
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7 -
如果共享的是多级目录,可能出现权限不足的提示,因为centos7中的安全模块selinux把权限禁掉了,需要添加参数 —pricileged = true来解决挂载的目录没有权限的问题
2.2.6 查看容器ip地址
-
查看容器运行的各种数据
docker inspect 容器名称(容器ID) -
可以直接执行下面的命令直接输出IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
2.2.7 删除容器
-
删除指定容器
docker rm 容器名称(容器ID)
3. 应用部署
3.1 MySQL部署
-
拉取镜像
docker pull centos/mysql-57-centos7 -
创建容器
docker run -di --name=别名 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql -
进入容器
docker exec -it 别名 /bin/bash -
登录
mysql -u root -p -
远程登录
3.2 Tomcat部署
-
拉取镜像
docker pull tomcat:7-jre7 -
创建容器
docker run -di --name=别名 -p 9000:9000 -v /usr/local/webapps:/usr/local/webapps tomcat:7-jre7
3.3 nginx部署
-
拉取镜像
docker pull nginx -
创建容器
docker run -di --name=别名 -p 80:80 nginx
3.4 redis部署
-
拉取镜像
docker pull redis -
创建容器
docker run -di --name=别名 -p 6379:6379 redis
4. 迁移与备份
4.1 容器保存为镜像
docker commit 容器名称 容器镜像名称
4.2 镜像备份
docker save -0 容器名称.tar 容器名称
4.3 镜像恢复与迁移
docker load -i 镜像备份(例如:mynginx.tar)
5. Dockerfile
5.1 Dockerfile是一系列命令和参数构成的脚本
5.2 常用命令
-
FROM image_name:tag
定义了使用哪个基础镜像启动构建流程
-
MAINTAINER user_name
声明镜像的创建者
-
ENV key value
设置环境变量(可以写多条)
-
RUN command
是Dockerfile的核心部分(可以写多条)
-
ADD source_dir/file dest_dir/file
将宿主机的文件复制容器内,如果是一个压缩文件,将会在复制后自动解压
-
COPY source_dir/file dest_dir/file
和ADD相似,但是如果有压缩文件并不能解压
-
WORKDIR path_dir
设置工作目录
5.3 使用脚本创建镜像
MAINTAINER kwan
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u144-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_144
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
编译:
docker build -t='jdk1.8' .
6. Docker私有仓库
6.1 私有仓库搭建与配置
-
拉取私有仓库镜像
docker pull registry -
启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry -
打开浏览器 输入地址http://xxx:5000/v2/_catalog看到
{"repositories":[]}表示私有仓库搭建成功并且内容为空 -
修改daemon.json
{"insecure-registries":["IP:PORT"]}—此步用于让docker信任私有仓库地址 -
重启docker服务
systemctl restart docker -
注意:重启docker后,服务都会停止,需要重新开启
6.2 Docker私有仓库镜像上传
-
标记镜像为私有仓库的镜像
docker tag 镜像名称 私有仓库地址/镜像名称 -
上传私有仓库
docker push 私有仓库地址/镜像名称