docker 是一个go语言开发的一个将应用和应用依赖包在一起的容器!
Web 应用的自动化打包和发布
自动化测试和持续集成、发布
在服务型环境中部署和调整数据库或其他的后台应用
sudo yum update
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3.1、方案一:使用ustc的(推荐)
sudo yum-config-manager --add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker- ce/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
docker -v
1,编辑文件/etc/docker/daemon.json 没有即创建添加内容
{“registry-mirrors”: [“https://docker.mirrors.ustc.edu.cn”,“https://hub-mirror.c.163.com”]}
1 启动服务
systemctl start docker
2 停止服务
systemctl stop docker
3 重启服务
systemctl restart docker
4 查看服务状态
systemctl status docker
docker images
REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建日期
docker search [imageName] #如果不加版本号默认最新
docker pull [imageName]#如果不加版本号默认最新
docker rmi [imageName]
参数说明:
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
–name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个
-v做多个目录或文件 映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器如果只加-i -t 两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
docker ps #查看运行中的容器
docker ps -a #查看所有的容器
以交互式启动容器
启动前必须有镜像,如果没有,先pull下载镜像
docker run -it --name=mycentos centos:7 /bin/bash
–name=mycentos 更改名字,默认是镜像名称,名称唯一
启动守护容器
docker run -di --name=mycentos centos:7
#登录容器
docker exec -it [containerId Or containerName] /bin/bash
docker start [containerName]
docker stop[containerName]
主机 cp到容器
docker cp file [containerName]
容器cp到主机
docker cp [containerName]:/filename filename
注:只能在创建容器的时候挂载,创建后无法修改,挂载目录必须为空,挂载目录本机和容器必须相同
docker run -di -v /usr/local/test:/usr/local/test --name=mycontainerName centos:7
之后该文件夹就会主机和容器实时更新内容
docker inspect containerName
docker rm [containerName]
1 拉取镜像
docker pull centos/mysql-57-centos7
2 创建容器并且映射端口 定义环境变量 指定外部链接密钥
docker run -di -p 3306:3306 --name=mysql5 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7
3 使用容器mysql
docker exec -it /bin/bash
容器内的mysql默认密码为空
mysql -u root -p
创建容器,需要映射端口和挂载目录,目的是为了方便发布应用
docker run -di -p 9000:8080 --name=mytomcat -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat
#执行如下操作
1 编辑sysctl.conf
vi /etc/sysctl.conf
2 在文件最后追加
net.ipv4.ip_forward=1
3 重启network
systemctl restart network
拉取镜像
docker pull nginx
创建容器 映射端口80
docker run -di --name=mynginx -p 80:80 nginx
拉取镜像
docker pull redis
创建容器,redis需要开放端口连接
docker run -di --name=myredis -p 6379:6379 redis
#进入redis容器
docker exec -it myredis /bin/bash
#进入redis安装目录 启动redis
cd /usr/local/bin
./redis-cli
安装
curl -L “https://github.com/docker/compose/releases/download/1.24.0/docker-compose- ( u n a m e − s ) − (uname -s)- (uname−s)−(uname -m)” -o /usr/local/bin/docker-compose
授予权限
chmod +x /usr/local/bin/docker-compose
查看版本
docker-compose -version
卸载
rm /usr/local/bin/docker-compose
-f,–file FILE指定使用的Compose模板文件,默认为docker-compose.yml,可以多次指定。
-p,–project-name NAME指定项目名称,默认将使用所在目录名称作为项目名。
-x-network-driver 使用Docker的可拔插网络后端特性(需要Docker 1.9 及以后版本)
-x-network-driver DRIVER指定网络后端的驱动,默认为bridge(需要Docker 1.9 及以后版本)
-verbose输出更多调试信息
-v,–version打印版本并退出
模板文件是使用Compose的核心,涉及的指令关键字也比较多,大部分指令与 docker run 相关参数的含义都是类
似的。默认的模板文件名称为docker-compose.yml,格式为YAML格式。 比如一个Compose模板文件:
version: ‘3’
services:
redis1:
image: redis
ports:
-“6379:6379”
ntainer_name: “redis1”
#启动前最好把docker重启,不然原来的tomcat/mysql/redis容器也是启动状态的话,那么端口会冲突而启动失败
systemctl restart docker
cd /usr/local/mycompose docker-compose up
如果后台启动则使用如下命令
docker-compose up -d
若要停止
docker-compose stop
docker commit mynginx mynginx
docker save -o mynginx.tar mynginx
docker stop mynginx
docker rm mynginx
docker rmi mynginx
docker load -i mynginx.tar
docker run -di --name=mynginx -p 80:80 mynginx
# 1、创建目录
mkdir –p /usr/local/dockerjdk8
cd /usr/local/dockerjdk8
# 2、下载jdk-8u202-linux-x64.tar.
gz并上传到服务器(虚拟机)中的/usr/local/dockerjdk8目录
# 3、在/usr/local/dockerjdk8目录下创建Dockerfile文件,文件内容如下:
vi Dockerfile
FROM centos:7
MAINTAINER BYNAME
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u202-linux-x64.tar.
gz /usr/local/java/
ENV JAVA_HOME /usr/local/java/jdk1.8.0_202
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.
jar:$JAVA_HOME/lib/tools.
jar: J R E H O M E / l i b : JRE_HOME/lib: JREHOME/lib:CLASSPATH
ENV PATH J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
# 4、执行命令构建镜像;不要忘了后面的那个 .
docker build -t=‘jdk1.8’ .
# 5、查看镜像是否建立完成
docker images
1、拉取私有仓库镜像
docker pull registry
2、启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
3、打开浏览器 输入地址http://宿主机ip:5000/v2/_catalog,看到{“repositories”:[]} 表示私有仓库 搭建成功
4、修改daemon.json vi /etc/docker/daemon.json # 在上述文件中添加一个key,保存退出。
此步用于让 docker 信任私有仓库地址;注意将宿主机ip修改为自己宿主 机真实ip
注:在追加key的时候如果没有用","分割将无法启动docker
{“insecure-registries”:[“宿主机ip:5000”]}
5、重启docker 服务
systemctl restart docker docker start registry
1.标记镜像为私有仓库的镜像
docker tag jdk1.8 宿主机IP:5000/jdk1.8
2.再次启动仓库容器
docker restart registry
3.上传标记镜像
docker push 宿主机IP:5000/jdk1.8
4.输入网址查看仓库是否上传成功
宿主机IP:5000/v2/_catalog
打开配置
vi /usr/lib/systemd/system/docker.service
# 在打开的上述文件中按照下面的图,添加如下的内容;注意修改下面内容中的ip地址
–add-registry=192.168.12.135:5000 --insecure-registry=192.168.12.135:5000 \
systemctl daemon-reload
systemctl restart docker
私有仓库拉取镜像和共有的一样