赞
踩
我们写的代码会接触到好几个环境:开发环境、测试环境以及生产环境:
docker是一种容器技术,解决软件跨环境迁移的问题
Dochub网址:https://hub.docker.com
Docker 是一个开源的应用容器引擎
docker诞生于 2013 年初,基于Go 语言实现,dotCloud 公司出品(后改名为Docker Inc)
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux 机器上。
容器是完全使用沙箱机制,相互隔离
容器性能开销极低。
Docker从 17.03版本之后分为CE(CommunityEdition:社区版)和 EE(Enterprise Edition:企业版)
官网:https://www.docker.com
配置镜像加速器:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
#1、yum 包更新到最新
yum update
#2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
#3、设置yun源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#4、安装docker,出现输入的界面都按 y
yum install -y docker-ce
#5、查看docker版本,验证是否验证成功
docker -v
启动docker服务:
systemctl start docker
停止docker服务:
systemctl stop docker
重启docker服务:
systemctl restart docker
查看docker服务状态:
systemctl status docker
设置开机启动docker服务:
systemctl enable docker
查看镜像:查看本地所有的镜像
docker images
docker images-q #查看所用镜像的id
搜索镜像:从网络中查找需要的镜像
docker search 镜像名称
拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本。
如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。
docker pull 镜像名称
删除镜像:删除本地镜像
docker rmi 镜像id #删除指定本地镜像
docker rmi `docker images-q` #删除所有本地镜像
docker ps#查看正在运行的容器
docker ps-a#查看所有容器
docker run 参数
参数说明:
-i:保持容器运行。通常与-t同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。
-t:为容器重新分配一个伪输入终端,通常与-i同时使用。
-d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用dockerexec 进入容器。退出后,容器不会关闭。
-it 创建的容器一般称为交兵式容器,-id创建的容器一般称为守护式容器
–name:为创建的容器命名。后面可以加=或者空格来起名字。
进入容器
docker exec参数#退出容器,容器不会关闭
停止容器
docker stop 容器名称
启动容器
docker start 容器名称
删除容器:如果容器是运行状态则删除失败,需要停止容器才能删除
docker rm 容器名称
查看容器信息
docker inspect 容器名称
数据卷
数据卷作用
docker run ... -v 宿主机目录(文件):容器内目录(文件)...
注意事项:
1.目录必须是绝对路径
2·如果目录不存在,会自动创建
3·可以挂载多个数据卷
4 两个目录之间可以共享文件
(1)创建启动c3数据卷容器,使用-v参数设置数据卷
docker run -it --name c3 -v /volume centos:7 /bin/bash
(2) 创建启动 c1 c2 容器,使用–volumes-from参数设置数据卷
docker run -it --name=c1 --volumes-from c3 centos:7/bin/bash
docker run -it --name=c2 --volumes-from c3 centos:7/bin/bash
案例:需求
在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server。
案例:实现步骤
① 搜索mysql镜像
② 拉取mysql镜像
③ 创建容器
④ 操作容器中的mysql
docker search mysql
docker pull mysql:5.6
2、在~(/root)目录下创建一个mysql的文件夹,用于保存mysql产生的数据,并进入mysql文件
mkdir mysql
cd mysql
3、运行mysql镜像,创建容器,使用下面命令
docker run -id \
-p 3307:3306 \
--name=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
参数说明:
docker exec -it mysql /bin/bash
5登录mysql服务器使用命令
mysql -uroot -p123456
6、进入容器内部以后,就可以使用mysql的基本命令进行数据库的基本操作了
7、使用本地图形化界面连接虚拟机部署的mysql服务,IP地址使用虚拟机的IP地址,端口使用mysql端口映射到虚拟机的3307,我的虚拟机地址如下
案例:需求
在Docker容器中部署Tomcat,并通过外部机器访问Tomcat部署的项目。
案例:实现步骤
① 搜索tomcat镜像
② 拉取tomcat镜像
③ 创建容器
④ 部署项目
⑤ 测试访问
docker search tomcat
docker pull tomcat
不指定版本号,默认最新的
3. 创建容器,设置端口映射、目录映射
#在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run-id--name=c_tomcat \
-р 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
参数说明:
测试:
在tomcat文件夹下创建
mkdir test
cd test
vim index.html
写<h1>111<h1>然后:wq退出
网页输入:宿主机ip:8080/test/index.html
将项目放到tomcat目录即可。
案例:需求
在Docker容器中部署Nginx,并通过外部机器访问Nginx。
案例:实现步骤
① 搜索Nginx镜像
② 拉取Nginx镜像
③ 创建容器
④ 测试访问
docker search nginx
docker pull 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
参数说明:
cd html
ll
vim index.html
直接输入虚拟机ip即可,端口默认80
1.搜索redis镜像
docker search redis
2.拉取redis镜像
docker pull redis:5.0
3.创建容器,设置端口映射
docker run -id --name c_redis -p 6379:6379 redis:5.0
4.使用外部机器连接redis
在windows系统中打开redis文件夹。
虚拟机ip:192.168.149.135
redis-cli.exe -h 192.168.149.135 -p 6379
操作系统组成部分:进程调度子系统、进程通信子系统、内存管理子系统、设备管理子系统、文件管理子系统、网络通信子系统、作业控制子系统。
Linux文件系统由bootfs和rootfs两部分组成。
镜像制作
# 将容器转为镜像
docker commit 容器id镜像名称:版本号
# 将镜像进行压缩传给测试人员
docker save -o 压缩文件名称镜像名称:版本号
# 测试人员将压缩文件还原镜像
docker load -i 压缩文件名称
上面那种方式的镜像再运行容器的话,挂载的数据不会存在,需要的话重新挂载即可。一般更常用的是dockerfile文件。
vim springboot_dockerfile
MAINTAINER itheima <itheima@itcast.cn>
docker bulid -f dockerfile文件路径 -t 新的镜像名称:版本 .
docker bulid -f springboot_dockerfile -t app .
docker run -id -p 9000:8080 app
微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停
Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。使用步骤:
#Compose目前已经完全支持Linux,Mac OS和windows,在我们安装Compose之前,需要先安装Docker.下面我们以编译好的二进制包方式安装在Linux系统中。
curl -L https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-`uname -s`-`uname -m` /usr/local/bin/docker-compose
#设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
#查看版本信息
docker-compose -version
二、卸载Docker Compose
#二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
mkdir ~/docker-compose
cd ~/docker-compose
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
server {
listen 80;
access_log off;
location / {
proxy_pass http://app:8080;
}
}
docker-compose up
http://192.168.149.135/hello
Docker官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像。
一、私有仓库搭建
#1、拉取私有仓库镜像
docker pull registry
#2、启动私有仓库容器
docker run -id --name=registry -p 5000:5000 registry
#3、打开浏览器输入地址http://私有仓库服务器ip:5000/v2/-catalog,看到{"repositories":[]}表示私有仓库 搭建成功
#4、修改daemon.json
vim /etc/docker/daemon.json
#在上述文件中添加一个key,保存退出。此步用于让docker信任私有仓库地址;注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip
{"insecure-registries":["私有仓库服务器ip:5000"]}
#5、重启docker 服务
systemctl restart docker
docker start registry
二、 将镜像上传至私有仓库
#1、标记镜像为私有仓库的镜像
docker tag centos:7 私有仓库服务器IP:5000/centos:7
#2、上传标记的镜像
docker push 私有仓库服务器IP:5000/centos:7
三、 从私有仓库拉取镜像
#拉取镜像
docker pull 私有仓库服务器ip:5000/centos:7
容器就是将软件打包成标准化单元,以用于开发、交付和部署。
docker容器虚拟化 与 传统虚拟机比较
相同:
不同:
由于安装过程十分简单,但是容易踩坑处很多,特意写一下记录好。
前提:docker安装成功,我是在windows上使用的。
docker volume create portainer_data
docker pull portainer/portainer-ce
docker run -d -p 8100:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
逐个解释每个参数的含义:
通过运行这个命令,您将在Docker中创建一个名为"portainer"的容器,该容器将在后台运行,并将主机的8100端口映射到容器的8000端口,并将主机的9443端口映射到容器的9443端口。这样,您可以通过浏览器访问Portainer的Web界面和安全Web界面。容器还使用挂载的数据卷来持久化存储配置和数据,并在容器退出时自动重新启动。
docker volume ls
docker volume create portainer_data
删除数据卷命令:docker volume rm <volume_name>
docker pull 6053537/portainer-ce
docker run -d --name portainer -p 9000:9000 --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data 6053537/portainer-ce
我用的汉化版本:本地输入http://localhost:9000/看到登录页面
第一次登录可以查找一下登录密码:
方法步骤如下:
docker ps -a
docker stop portainer
find / -name portainer.key
windows下输入:
docker inspect portainer 【c3c42e926d9f】框内为容器ID
docker run --rm -v /var/lib/docker/volumes/portainer_data/_data:/data portainer/helper-reset-password
docker start c3c42e926d9f
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。