Docker学习笔记
1.Docket的基本的命令
1.docket信息相关的指令
systemctl start docker #启动docker
systemctl stop docker #关闭docker
systemctl restart docker #重启docker
systemctl enable docker #设置开机启动
systemctl disable docker #关闭docker的开启启动
systemctl daemon-reload #重新加载docker的镜像配置
docker version #查看docker的版本的信息
docker info #查看docker信息
2.docker镜像相关的信息
#查看docker的镜像
docker images
#运行一个hello-world镜像,查看docker的安装运行情况
docker run hello-world
第一步:启动docker
sudo systemctl start docker
第二步:设置 docker 开机启动
sudo systemctl enable docker
第三步:镜像加速
由于国内网络问题,需要配置加速器来加速。修改配置文件 /etc/docker/daemon.json
下面命令直接生成文件 daemon.json
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
EOF
说明:在执行如上指令时,保证你的登录用户为root管理员用户。
第四步:重新加载docker配置
sudo systemctl daemon-reload
#重启docker服务
sudo systemctl restart docker
第五步:查看镜像配置
docker info
第六步:运行 hello-world 镜像,验证 docker
sudo docker run hello-world
第七步:检查docker 镜像
Docker images
第八步:检查已启动的docker 服务 (正在运行的)
Docker ps
假如希望查看所有镜像,包含没有运行的镜像容器,可以执行如下指令:
Docker ps –all
第九步:停止docker服务
docker stop 服务id
第十步:删除docker 镜像
docker image rm hello-world
注意:假如镜像被占用着是不可以直接被删除的,需要先删除应用此镜像的容器,例如
docker container rm 容器名或容器id
1运行docker镜像的时候,如果docker容器中有该镜像,则会通过镜像创建docker容器当中,但是当该镜像不存在的时候,此时会从仓库中先pull拉取到镜像文件然后再创建一个docker容器来运行该镜像
2自己配置一个docker镜像
1.首先下载一个 centos镜像
docker pull centos:7
2.可以查看一下镜像是否下载完成
docker images
3.通过docker启动运行 centos7镜像
docker run -it xxxx bash
xxxx - 镜像名, 或 image id 的前几位
1)-it 这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。
我们这里打算进入 bash , 执行一些命令并查看返回结果,因此我们需要交互式终端。
2)bash 放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash。
3)docker run -dit centos:7 后台运行
4)docker container logs 802
4.运行一个容器 docker container stop 802
5.重启一个容器 docker container restart 802
6.docker container logs #802 查看容器中的日志的输出的结果
7.指定进行运行的容器当中:docker exec -it 802 bash #802为容器id
8.删除所有的已经停止的docker容器 docker container prune
注意:该命令仅仅在测试环境当中去用,真正的生产环境中不要用
3.在容器中管理数据主要有两种方式:
- 挂载主机目录 (Bind mounts)-最常用 (docker run –v 宿主机目录:容器目录)
- 数据卷(Volumes):数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用,默认会一直存在,即使容器被删除。
3.1创建数据卷步骤
1.首先在宿主机创建一个数据卷
docker volume create container-vol
2.查看该数据卷所对应的目录
docker volume inspect container-vol
[
{
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/container-vol/_data",
"Name": "container-vol",
"Options": {},
"Scope": "local"
}
]
可以查看数据卷对应的宿主的地址
"Mountpoint": "/var/lib/docker/volumes/container-vol/_data"
3.在容器中将容器的数据卷与宿主的数据卷进行关联
docker run -it -v container-vol:/root centos:7 bash
4.可以创建一个文件
touch hello.java
5.然后退出容器在宿主机的
"Mountpoint": "/var/lib/docker/volumes/container-vol/_data", 该目录可以找到改文件
4.Docker的镜像文件的安装
4.1安装mysql
1.拉取下载镜像文件
sudo docker pull mysql:8.0.23
2.查看镜像文件是否下载完成了
sudo docker images
3.启动mysql的镜像
sudo docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.23
ALTER USER 'tony'@'%' IDENTIFIED BY 'tony' PASSWORD EXPIRE NEVER
ALTER USER 'tony'@'%' IDENTIFIED WITH mysql_native_password BY 'tony';
FLUSH PRIVILEGES;
4.2安装jdk
1.导入jdk的安装包到linux的宿主机的
将jdk放在 /root/setups
2现在,以centos7为基础,构建oracle jdk8的镜像,首先通过vim打开Dockerfile,这个文件不存在会自动创建。然后进入编辑模式(按i字母),在编辑模式下可以拷贝如下语句(自己手动写也可以,但确保写的单词正确,大小写,空格)。
第一步:编写FROM语句(关键字一定要大写,例如FROM不能写小写)
FROM centos:7
第二步:通过ADD命令将宿主机中的压缩包传入镜像容器中的指定目录,并同时解压缩
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
第三步:设置环境变量(通过ENV关键字实现,目录启动容器中的目录)
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
第四步:指定命令行操作(所有指令与后面内容要有空格)
CMD [‘bash’]
3.制作镜像
docker build -t jdk:8 .
4.导出镜像文件
docker save jdk:8 | gzip > jdk8.tar.gz
5镜像导入(要在jdk8.tar.gz文件所在目录下执行)
docker load < jdk8.tar.gz
6.运行镜像文件
docker run jdk:8 bash
补充知识:vim是vi的升级版,linux的内核的时候用vi才会生效
二
4.4安装sentinel
1.首先将sentinel的jar拷贝相关的目录
比如/root/sca/下,
2.运行命令
docker run -dit -p 8180:8080 --name sentinel -v /root/servers:/usr/sca jdk:8 java -jar /usr/sca/sentinel-dashboard-1.8.0.jar
4.5的安装redis
1.首先在宿主机建立一个目录
/usr/local/docker/redis01/conf/redis.conf
2.宿主的目录创建一个redis.conf的配置文件
touch redis.conf
3.运行redis镜像
sudo docker run -p 6379:6379 --name redis01 \
-v /usr/local/docker/redis01/data:/data \
-v /usr/local/docker/redis01/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
4.进入redis的docker容器中
docker exec -it redis bash
5.查看 redis的版本
redis-server -v 查看redis的版本
6.通过redis的客户端连接redis服务器
redis-cli 默认的情况下是不需要密码的
7.可以通过redis设置一些数据
然后通过命令 save 进行数据的持久化
8.去redis官网安装下载redis.conf的配置文件
然后再去覆盖宿主机的redis.conf的配置文件
作业:制作一个sentinel的镜像
1.修改dockefile文件内容如下
FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/
ADD sentinel-dashboard-1.8.0.jar /usr/local/
ENV JAVA_HOME=/usr/local/jdk1.8.0_51 \
PATH=/usr/local/jdk1.8.0_51/bin:$PATH
EXPOSE 8080
ENTRYPOINT ["java","-jar","/usr/local/sentinel-dashboard-1.8.0.jar"]
==================================================
2.制作sentinel的镜像文件
docker build -t sentinel:8
3.docker run -d -p 8180:8080 --name sentinel \
-v /usr/local/docker/sentinel/logs:/root/logs/csp sentinel:8 .
4.如果发现没有启动,可以查看日志的信息
docker contariner logs sentinel (或者docker的iid)
5.制作完镜像后,如何查看创建的信息
docker history sentinel:8
4.6安装nginx
注意:一般情况下linux安装的许多的软件默认的情况都是安装在/etc/的目录下
curl 可以直接获取访问的地址返回的信息
1.pull 拉取nginx镜像
2.docker run --name nginx –d nginx 运行nginx映射文件
此时的这种的映射的方法存在一定的弊端,就是没有将docker中的nginx的端口映射到
宿主机上的端口
3.source 执行mysq脚本语句
4.7安装nacos
5.docker常见的问题
apt-get update 跟新apt-get
apt install net-tools # ifconfig 安装ifconfig命令
apt install iputils-ping # ping 安装ping命令