赞
踩
容器技术:解决软件跨环境迁移问题
解决
命令行安装即可
将应用程序及其依赖、环境、配置打包在一起
镜像运行起来就是容器,一个镜像可以运行多个容器
可参照菜鸟教程
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker
systemctl enable docker
docker images
docker search redis
Docker HUB 拉取相关软件的镜像
docker pull redis:3.5(3.5版本号)
docker rmi imageid
docker rmi redis:3.5(Image id 重复时)
删除所有镜像
docker remi `docker images -q`
docker ps
查看所有容器
docker ps -a
方式1
docker run -i -t --name=c1 redis
-i 保持容器运行
-t 容器退出后自动关闭
方式2
docker run -id --name=c2 redis
-d 守护,后台运行容器
-- name 为容器起名
docker exec -it c2 /bin/bash
docker start c1
docker stop c2
运行的容器不可以删除
docker rm c2(容器名称)
docker rm `docker ps -aq`
docker inspect c1
端口映射 -p
docker search mysql
去DockerHUb
docker pull mysql:5.6
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3306:3306 \
--name=c_mysql
-v $PWD/conf:/etc/mysql/conf.d\
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
$PWD
:当前路径
docker run
:就是创建并运行容器
-- name mn
:给容器起个名字叫mn
-v $PWD/conf:/etc/mysql/conf.d
:将主机目录下conf/my.cnf挂载到容器的/etc/mysql/my.cnf 配置目录
-p 8080:80
:把宿主机的8080端口映射到容器内的80端口
-e MYSQL_ROOT_PASSWORD=123456
:初始化root密码
mysql:5.6
:镜像名称
docker exec -it c_mysql /bin/bash
登录mysql
mysql -uroot -p123456
docker search tomcat
docker pull tomcat
#在/root目录下创建tomcat目录用于存放tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
-p 8080:8080
:将容器的8080端口映射到主机的8080端口
-v $PWD:/usr/local/tomcat/webapps
:将主机中当前目录挂载到容器的webapps
使用外部机器访问Tomcat
docker search nginx
docker pull nginx
#在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
#在~/nginx/conf/下创建nginx.conf文件,粘贴下面代码块的内容
vim nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
创建容器
docker -run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
-p 80:800
:将容器的80端口映射到宿主机的80端口
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf
:将主机当前目录下的/conf/nginx.conf挂载到容器的:/etc/nginx/nginx.conf配置目录
-v $PWD/html:/usr/share/nginx/html
:将主机当前目录挂载到容器的/val/log/nginx日
外部访问Nginx即可
docker search redis
docker pull redis:5.0
docker run -id --name=c_redis -p 6379:6379 redis:5.0
redis-cli.exe -h 192.168.187.129 -p 6379
-h 192.168.187.129 宿主机的ip地址
复用
分层的文件系统
容器转镜像
docker commit 容器id 镜像名称:版本号
镜像不可以传输,可以将镜像转换成压缩文件
docker save -o 压缩文件名称 镜像名称:版本号
压缩文件还原成镜像
docker load -i 压缩文件名称
目录挂载的不生效
统一,开发、测试、运维的运行环境
更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder
作用
根据路径找到打好的文件
参照别人安装Xshell教程安装
使用rz
命令进行查看是否安装了lrzsz程序
如果没有安装,使用yum -y install lrzsz
进行安装
输入 rz
进行文件上传
如果没有目录docker-files,先进行创建
mkdir ~/docker-files
mv springboot-hello-0.0.1-SNAPSHOT.jar ./docker-files/
FROM java:8
MAINTAINER jqqq007 <www.jqqq007.wkl>
ADD springboot-hello-0.0.1-SNAPSHOT.jar app.jar
CMD java -jar app.jar
docker build -f dockerfile文件路径 -t 镜像名称:版本
vim springboot_dockerfile 编辑一个文件
添加以上命令
执行,就可生成镜像
docker build -f ./springboot_dockerfile -t app .
查看镜像
通过镜像app,创建运行容器
docker run -id -p 9000:8080 app
访问
要求:
是挂载在根目录/下
结果不带
创建一个dockerfile
vim centos_dockerfile
添加以下命令
FROM centos:7
MAINTAINER JQ<jq.cn>
RUN yum install -y vim
WORDIR /usr
CMD/bin/bash
RUN yum install-y vim
:执行安装vim命令
WORDIR /usr
:定义默认的工作目录
CMD/bin/bash
:定义容器启动执行的命令
通过dockerfile 构建镜像:docker build -f dockerfile文件路径 -t 镜像名称:版本
docker build -f ./centos_dockerfile -t appcentos:1
DockerCompose的详细语法参考官网:https://docs.docker.com/compose/compose-file/
#Compose 目前已经完全支持Linux、MAC OS、Windows,在安装Compose之前,需要先安装Docker。下面以编译好的二进制包方式安装在Linux中
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.0.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
#查看版本信息
docker-compose -version
卸载dockerCompose
#二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
mkdir docker-compose/
cd ~/docker-compose
vim docker-compose.yml
version: '3'
services:
nginx:
image: nginx
ports:
- 80:80
links:
- app
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
app:
image: app
expose:
- "8080"
mkdir -p ./nginx/conf.d
cd ./nginx/conf.d
vim itdocker.conf
server {
listen 80;
access_log off;
location / {
proxy_pass http://app:8080;
}
}
cd ~/docker-compose
docker-compose up
192.168.56.10:80/hello
docker-compose up
services.nginx Additional property app is not allowed
此时一定要去检查docker-compose.yml书写格式,特别是缩进格式!
容器与虚拟机进行目录挂载
解决
一个容器可以被多个容器进行同时挂载
一个容易也可以被挂载多个数据卷
docker run -it --name=c1 -v /root/data/:/root/data_container redis:3.5
挂载多个目录
docker run -it --name=c2 \
-v /root/data:/root/dedadasdad \
-v /root/data2:/root/dadssds
docker run -it --name=c1 -v /root/data/:/root/data_container redis:3.5
docker run -it --name=c2 -v /root/data/:/root/data_container redis:3.5
自动在宿主机分配一个文件
docker run -it --name=c3 -v /volume redis:3.5
docker run -it --name=c1 --volumes-from c3 redis:3.5
docker run -it --name=c2 --volumes-from c3 redis:3.5
docker pull registry
docker run -id --name=registry -p 5000:5000 registry
输入地址https://私有仓库服务器ip:5000/v2/_catalog
看到{“repositories”:[]}表示私有仓库搭建成功
vim /etc/docker/daemon.json
#在上述文件中添加一个key,保存退出。
#此步用于让docker信任私有仓库地址
#注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip
{"insecure-registries": ["私有仓库服务器ip:5000"]}
systemctl restart docker
docker start registry
docker tag centos:7 私有仓库服务器ip:5000/centos:7
docker push 私有仓库服务器ip:5000/centos:7
#拉取镜像
docker pull 私有仓库服务器ip:5000/centos:7
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。