菜鸟入门Docker
初始DockerDocker的概念
Docker的用途
DOcke的安装
Docker架构
配置Docker镜像加快器
Docker常用下令
Docker服务相关的下令。
Docker镜像相关的下令
Docker容器相关的下令
容器的数据卷
数据卷的概念和作用
配置数据卷
Docker应用摆设
Docker摆设mysql
Docker摆设tomcat
Docker摆设nginx
搜索nginx镜像
拉取nginx镜像
创建容器,设置端口映射、目录映射
利用外部机器访问nginx
Redis摆设
初始Docker
Docker的概念
Docker是基于Go语言实现的云开源项目。
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、摆设、运行等生命周期的管理,利用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。
https://i-blog.csdnimg.cn/direct/a789f05d71b24265bd3018490d275c7c.png
Docker的用途
这里引用网上某博主的部分内容,Docker 的主要用途,现在有三大类。
(1)提供一次性的环境。比如,当地测试他人的软件、持续集成的时候提供单位测试和构建的环境。
(2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
(3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模仿出微服务架构。
DOcke的安装
Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作体系上,本课程基于CentOS7安装Docker。官网: https://www.docker.com
# 1、yum包更新到最新
yum update
#2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依靠的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、设置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#4、安装docker ,出现输入的界面都按y ce社区版---学习够了, ee版企业版收费
yum install -y docker-ce
# 5、查看docker版本,验证是否验证乐成
docker -v
Docker架构
https://i-blog.csdnimg.cn/direct/c0e9cfd877fd4153ba6525f26933c481.png
[*] Docker 镜像(Image)就是一个==只读==的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建许多容器。
[*] 容器(Container) :Docker 利用容器(Container)独立运行的一个或一组应用。就像是Java中的类和实例对象一样,镜像是静态的界说,容器是镜像运行时的实体。容器为镜像提供了一个尺度的和隔离的运行环境,它可以被启动、开始、制止、删除。每个容器都是相互隔离的、包管安全的平台
[*] 仓库(Repository)是集中存放镜像文件的场所。
类似于
Maven仓库,存放各种jar包的地方;
gitee仓库,存放各种git项目的地方;
Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。
仓库分为公开仓库(Public)和私有仓库(Private)两种情势。
最大的公开仓库是 Docker Hub(https://hub.docker.com/),
存放了数量巨大的镜像供用户下载。国内的公开仓库包罗阿里云 、网易云等
配置Docker镜像加快器
默认环境下,将来从docker hub (https://hub.docker.com/)上下载docker镜像,太慢。一般都会配置镜像加快器:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker常用下令
Docker服务相关的下令。
https://i-blog.csdnimg.cn/direct/90e3d77ec78e42acb34c00b375e93e3a.png
[*]启动docker服务 systemctl start docker
[*]制止docker服务 systemctl stop docker 重启docker服务 systemctl restart docker
[*]查看docker服务状态 systemctl status docker
[*]开机启动dockeh服务 systemctl enable docker
[*]查看docker下令资助文档: docker 具体下令 --help
Docker镜像相关的下令
https://i-blog.csdnimg.cn/direct/a40efbc389c94a65ad7eea8c5b8a93fe.png
查看镜像:
docker images
https://i-blog.csdnimg.cn/direct/08bc2ae769074dbc8258b43ef1506dbe.png
搜索镜像
docker search redis
https://i-blog.csdnimg.cn/direct/acbb5951c4584733aef599e64835c1d6.png
拉取镜像
docker pull redis:6.0 冒号后跟的是版本号,如果不跟默认latest
删除镜像---当地仓库
根据id删除
docker rmi id
根据名称:版本号删除
docker rmi redis:6.0
-------------------------------------------------------
删除没有开启容器的镜像
删除所有镜像
docker images q --查询所有镜像的id
docker rmi (docker images q)
Docker容器相关的下令
https://i-blog.csdnimg.cn/direct/1289603f3cdc48bb839c2998293340cb.png
1.创建容器
https://i-blog.csdnimg.cn/direct/a85e289c25234765a904f8bb49e66a96.png
2.查看容器
docker ps --查看正在运行的容器
docker ps -a --查看所有容器
3.创建一个容器但不进入容器
https://i-blog.csdnimg.cn/direct/675045d632474086bb005a2c49530d95.png
4.进入正在运行的指定容器内
https://i-blog.csdnimg.cn/direct/a7972cfbf71945a7b3e187c5157683a4.png
这时在利用exit退出容器,则不会关闭容器
5.启动/制止/删除容器
docker start 容器名
docker stop 容器名
docker rm 容器id #只删除未启动的容器
docker rm -f 容器id||名称 #删除任何容器
docker ps -aq #查看所有容器的id
docker rm docker ps -aq
6.查看容器信息
docker inspect 容器名称
9.输出当前容器日志信息---知道容器启动失败的缘故原由
docker logs 容器id
容器的数据卷
数据卷的概念和作用
https://i-blog.csdnimg.cn/direct/d151e0e6d13c411bbdcf3f799177615e.png
配置数据卷
https://i-blog.csdnimg.cn/direct/2fd855e0e2764e02894881e2aedc2d27.png
演示:
1. 宿主机容器卷中的内容发生改变对应容器内的目录也跟着改变
2. 容器内的目录发生改变宿主机容器卷内的内容也跟着厘革
3. 删除容器后,再次开启容器并挂载容器卷。数据依然存在
4. 一个容器挂载多个容器卷
5. 多个容器挂载一个容器卷
注意: 如果数据卷是文件,则必须在宿主机中创建该文件,否则会自动被认为文件夹创建。
Docker应用摆设
Docker摆设mysql
搜索mysql镜像
docker search mysql
拉取mysql镜像
docker pull mysql
https://i-blog.csdnimg.cn/direct/9a081972decd42f18a333dddd03f4d70.png
创建容器,设置端口映射、目录映射
docker run -d --name=m01 -p 3306:3306 -v /ykq/mysql/log:/var/log/mysql \
-v /ykq/mysql/data:/var/lib/mysql -v /ykq/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 mysql:8.2.0
[*] 参数说明:
[*] -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
[*] -v /ykq/mysql/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
[*] -v /ykq/mysql/log:/var/log/mysql:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
[*] -v /ykq/mysql/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
[*] -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的暗码。
https://i-blog.csdnimg.cn/direct/12402e33e97a4f75a420e6b358c2a71c.png
https://i-blog.csdnimg.cn/direct/fdeab27e296f4af0a3760010384645d1.png
docker run --name elasticsearch -p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /usr/local/data-docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/data-docker/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/data-docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
--network es-net \
--privileged \
-d elasticsearch:5.6.4
Docker摆设tomcat
搜索tomcat镜像
docker search tomcat
拉取tomcat镜像
docker pull tomcat
创建容器,设置端口映射、目录映射
# 在/root目录下创建tomcat目任命于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run -d --name tomcat01 \
-v $PWD/conf:/usr/local/tomcat/conf \
-v $PWD/webapps:/usr/local/tomcat/webapps \
-p 8080:8080 \
tomcat:8.5
利用外部机器访问tomcat。
https://i-blog.csdnimg.cn/direct/eb82fb880c3e4968a373fe6c889f725d.png
docker run -dit --name tomcat8089 --restart=always \
-p 8089:8080 \
-e TZ=Asia/Shanghai \
-v /opt/docker/tomcat/webapps:/usr/local/tomcat/webapps \
tomcat:8.5
Docker摆设nginx
搜索nginx镜像
docker search nginx
拉取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 -p 80:80 \
-d --name nginx \
-v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/nginx/html:/usr/share/nginx/html \
nginx:latest
[*] 参数说明:
[*] -p 80:80:将容器的 80端口映射到宿主机的 80 端口。
[*] -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
[*] -v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录
利用外部机器访问nginx
https://i-blog.csdnimg.cn/direct/6a90c96044254fc08a303bd1e36a9ae4.png
Redis摆设
搜索redis镜像
docker search redis
拉取redis镜像
docker pull redis:5.0
创建容器,设置端口映射
https://i-blog.csdnimg.cn/direct/395eaf59f1224e069551c3ddbc15b999.png
docker run -id --name=c_redis -p 6379:6379 redis:5.0
利用外部机器毗连redis
https://i-blog.csdnimg.cn/direct/4f379be0f2854f5393b49e4859e8d62f.png
未完待续!!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]