<2014.9.6>
update
COPY . .
Host file system
Image/container file system


学习路径
Docker概述,Docker安装,Docker命令,镜像命令,容器命令,操作命令。。。
Docker镜像,
容器数据卷
DockerFile
Docker网络原理
IDEA整合Docker
Docker Compose
Docker Swarm
CI/CD jekins

DevOps(开发和运维)
Docker一键安装,马上部署,立刻运行
Docker基本组成


镜像Image
例子:tomcat镜像-》run-〉tomcat01容器提供服务
容器container
容器,启动,停止,删除,基本命令。
容器=小型的linux系统
仓库Repository
存放,镜像的地方。
共有仓库,私有仓库
安装docker
官方安装手册一步一步:link
第一步卸载旧的版本,安装gcc环境
#第一步:
yum -y install gcc
yum -y install gcc-c++
#第二步,卸载old版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine需要的安装包
##第三步:安装需要的软件包
sudo yum install -y yum-utils
设置镜像的仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
##阿里云地址:自己选择,第四步
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
##更新yum软件包索引
yum makecache fast
##安装Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io
##启动Docker
systemctl start docker
##测试是否成功
docker version
###最后一步:安装docker加速器
sudu mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":["https://qiyb9988.mirror.aliyunsc.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker第五步:启动docker,测试helloworld命令
sudo systemctl start docker
检测docker是否安装成功
docker version
sudo docker run hello-world
第六步:查看一下hello-world这个镜像
docker images

第七步:
万一,你不需要docker了,怎么做??
##移除镜像
yum remove docker-ce docker-ce-cli containerd.io
##卸载目录
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd回顾hello-world流程

docker底层概念

docker为什么比VM快??

docker的常用命令
帮助命令--帮助文档地址:https://docs.docker.com/engine/reference/commandline/docker/
学习:镜像命令+容器命令,有了镜像,才可以创建容器。
docker verison
docker info #显示docker的系统信息
docker 命令 --help #万能命令
docker search +软件名称
官方文档:link
docker镜像命令
docker images


docker pull下载镜像
默认下载最新版本的,也可以自己指定版本,见下方tag
docker pull 镜像名 [:tag]
latest: Pulling from library/mysql
33847f680f63: Pull complete
5cb67864e624: Pull complete
1a2b594783f5: Pull complete
b30e406dd925: Pull complete
48901e306e4c: Pull complete
603d2b7147fd: Pull complete
802aa684c1c4: Pull complete
715d3c143a06: Pull complete
6978e1b7a511: Pull complete
f0d78b0ac1be: Pull complete
35a94d251ed1: Pull complete
36f75719b1a9: Pull complete
Digest: sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
指定版本docker pull mysql:5.7
docker pull mysql:5.7
docker images;

docker rmi -f+镜像ID,删除镜像
rm=remove
i=images
docker容器命令
说明:我们有了镜像,才可以创建容器
docker pull centos新建容器,并启动
docker run [可选参数] image
#参数说明
--name="Name"容器名字 tomcat01 tomcat02 用来区分容器
-d 已后台方式运行
-i 使用交互方式运行,进入容器,查看内容
-t
-it 使用交互方式运行,进入容器,查看内容
-p 指定容器的端口,port
-p 主机端口:容器端口
-p 容器端口
-P 大P,随机指定端口


退出容器,exit
查看正在运行的容器docker,
docker ps [OPTIONS]
docker ps 目前运行的容器
docker ps -a曾经运行的容器
docker ps -n=? 显示最近创建的容器
docker ps -q只显示容器的编号ID退出容器
exit #直接容器停止+退出
Ctrl+P+Q #容器不停止+退出删除容器
docker rm 容器id #删除指定容器id,正在运行的容器,需要rm-f的方式删除
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有容器
启动和停止容器的操作!!
docker start 容器id #启动
docker restart 容器id #重新启动
docker stop 容器id #停止
docker kill 容器id #强行killdocker常用的其他命令!!!重要
进入当前正在运行的docker容器
我们通常,容器都是使用后台运行的方式,需要进入容器,修改一些配置。
方法一:docker exec -it 容器id bashShell
docker exec -it ID /bin/bash
方法二:docker attach 容器id
docker attach ID
从容器内拷贝文件到主机上(文件在docker里面,把docker里面的文件,cp到主机路径上)
docker cp 容器id:容器内Path路径 目的的主机路径。
docker copy简写cp

docker
attach #shell下attach连接执行运行镜像
build #通过Dockerfile定制镜像
commit #提交当前容器为新的镜像
cp #从容器中拷贝指定文件到目录主机中
create #创建一个新的容器,同时run,但是不启动容器
diff #查看docker容器的变化
events #从docker服务获取容器的事件
exec #运行命令
export #导出容器内容,作为一个tar归档文件
import 导入
history #展示一个镜像的历史
images #列出系统当前的镜像
info #显示系统相关信息
inspect #查看容器详细信息
kill #kill指定的docker容器
load#从一个tar包中加载一个镜像
login #注册,登陆一个docker微服务
logout #从当前docker registry退出
logs #输出当前容器的日志
port #查看映射端口对应的容器内端口号
pause #暂停容器
ps#列出容器列表
pull#从docker镜像服务源拉取指定的镜像
push#推送指定镜像或者仓库镜像到docker仓库服务器
restart #重启运行的容器
rm #移除一个/多个容器
rmi#强制删除镜像
save#保存一个镜像为tar包
search#在docker hub中搜索镜像
start#启动容器
stop#停止容器
tag#给容器打标签,方便管理
top#查看容器中运行的进行信息
unpause#取消暂停的容器
version#查看docker的版本号
wait# 截取容器停止时,退出的状态
案例1:
docker安装nginx
第一步:search镜像,自己去docker pub查一下,有版本号写版本号,无版本号用最新的
第二步:下载镜像pull
第三步:运行测试
docker images;
-d后台运行
--name,2个-,否则报错,给容器起名字
-p 宿主机端口号:容器内部端口号
docker run -d --name nginx01 -p 3344:80 nginx;



进入容器docker exec -it 容器名 /bin/bash
[root@iZuf6f34ah9elznexcxb5kZ ~]# docker exec -it nginx01 /bin/bash
root@78d75c4c81f5:/# where is nginx
bash: where: command not found
root@78d75c4c81f5:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@78d75c4c81f5:/# 作业2:docker安装一个tomcat
学了命令,不敲=不会。
官方使用
docker run -it --rm tomcat:9.0
用完就删,测试可以,一般不这么用
限制elasticSearch内存大小
>elasticsearch限制大小启动;
docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
我们自己,
docker pull tomcat:9.0
elasticsearch限制大小启动;
[root@iZuf6f34ah9elznexcxb5kZ ~]# docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
docker stats查看状态
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
bf6c5eb79f7e elasticsearch02 0.32% 371.5MiB / 1.795GiB 20.22% 0B / 0B 21.6MB / 729kB 42
^C
[root@iZuf6f34ah9elznexcxb5kZ ~]# curl localhost:9200
{
"name" : "bf6c5eb79f7e",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "rSbGDujmQCeAYw-JZDyUgQ",
"version" : {
"number" : "7.6.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
[root@iZuf6f34ah9elznexcxb5kZ ~]# 
可视化
portainer(先用这个)
Docker图形话界面管理工具
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
截图信息


Rancher(CI/CD)
commit镜像
docker commit提交容器成为一个新的副本
原理和git命令类似
docker commit -m="提交的描述信息message" -a="作者author" 容器id 目标镜像名:[TAG]
学习方式说明:理解概念,一定要实践,最后实践+理论结合,一次搞定。