Docker
Docker安装(win 10)
-
安装hapy-v
-
进入Docker官网(http://store.docker.com/)
3.安装合适的Docker/Docker Desktop
Docker安装(Centos 7)
-
Centos 上网
-
Centos yum 安装镜像源设置成(阿里镜像源)
# 三步配置阿里yum源 2.1.进入yum配置路径下载阿里yum源 1.进入yun配置地址 cd /etc/yum.repos.d/ 2.下载阿里源 wget http://mirrors.aliyun.com/repo/Centos-7.repo 如果提示没有get命令先安装get yum -y install wget 2.2.替换阿里yum源 #1.备份本地yum源包 mv CentOs-Base.repo CentOs-Base.repo.bak #2.将阿里源包的名字改为linux系统默认读取yuan源的包名 mv Centos-7.repo CentOs-Base.repo 2.3.加载阿里yum源 yum clean all yum makecache yum update ———————————————— 版权声明:本文为CSDN博主「Bruce小鬼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/m0_38039437/article/details/108735858
-
安装yum-utils
sudo yum install-y yum-utils
-
安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io
PS:这里不大行了使用这个后,在使用上面的命令
阿里源: $ sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 清华大学源: $ sudo yum-config-manager \ --add-repo \ https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
现在将Docker Engine软件包称为docker-ce。分为2种方式:
1.安装最新版本的Docker Engine和容器,或转到下一步以安装特定版本:
$ sudo yum install docker-ce docker-ce-cli containerd.io
如果提示接受GPG密钥,请验证指纹是否匹配060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
如果是,则接受它。
有多个Docker存储库?
如果启用了多个Docker存储库,则在未在yum installor yum update命令中指定版本的情况下进行安装或更新将始终安装可能的最高版本,这可能不适合稳定性需求。2.要安装特定版本的
Docker Engine-Community
,请在存储库中列出可用版本,然后选择并安装:
列出并排序存储库中可用的版本。本示例按版本号(从高到低)对结果进行排序,并被截断:
$ sudo yum list docker-ce --showduplicates | sort -r
通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
-
检验是否安装成功
<!-- 启动Docker服务: --> $ sudo systemctl start docker <!-- 通过运行hello-world 映像来验证是否正确安装了Docker Engine : --> $ sudo docker version $ sudo docker run hello-world
Docker常用命令
docker image
:查看镜像
docker images
: 查看本机已安装镜像
docker search <镜像名称>
:搜索指定镜像/这里可以在docker hub上搜索自己的镜像
docker pull
:拉取镜像
docker image ls
:查看以安装镜像详细内容
docker -v
查看docker版本号
systemctl status docker
查看docker的运行状态
docker inspect <container_name> 产看容器的运行状态
docker build
命令用于根据给定的Dockerfile和上下文构建Docker镜像。构建的上下文是位于指定PATH或URL中的一组文件,这些文件用于构建镜像,构建过程可以引用上下文中的任何文件
docker run -p
将容器的端口映射到主机的端口。
示例:docker run -p 8080:80 <image_name>
# 在运行上述命令后,Docker会从Docker Hub或其他镜像仓库下载所需的镜像(如果尚未下载),并创建一个容器。
# 容器的端口80将映射到主机的端口8080。
docker run -v
:挂载主机的目录到容器内,实现数据同步和持久化。
docker run -v /home/user/data:/data <image_name>
# /home/user/data 是宿主机上的目录路径。
# /data 是容器内的目录路径。
# <image_name> 是要运行的Docker镜像的名称
在运行上述命令后,Docker会从Docker Hub或其他镜像仓库下载所需的镜像(如果尚未下载),并创建一个容器。宿主机上的 /home/user/data 目录将被挂载到容器内的 /data 目录中。
现在,你可以在容器内部访问和编辑 /data 目录中的文件,同时这些修改也会反映到宿主机上的 /home/user/data 目录中。
通过使用docker run -v命令,可以实现数据同步和持久化,使得宿主机和容器之间的文件可以互相访问和共享。
docker run --network
:设置容器的网络模式。
docker run --restart
:设置容器重启时的行为。
镜像操作
docker save -help
:docker保存机制
将镜像保存到本地目录
- 创建目录
docker save -o nginx.zip nginx :latest
: 将镜像下载到本地,并成zip资源
nginx :latest
:资源名称
nginx.zip
:输出文件名
-
docker load
:用于加载恢复docker镜像,这些镜像通常保存在.tar
文件中。你可以把.tar
文件想象成一个包含镜像的压缩文件。docker load -i mysql.tar
:dockers会解压缩这个.tar
,并存中恢复Docker镜像,,然后这个镜像就可以再docker环境使用。mysql.tar
:镜像的压缩文件从mysql.tar文件中恢复docker镜像,并加载到Docker守护程序中,以便再Docker中使用它。
docker rmi hello-world:latest
:删除镜像
创建容器
docker container run -it --name=centos_new centos:latest /bin/bash
创建并启动容器
在Docker中,
-it
参数组合是以交互模式运行容器,并为容器分配一个伪终端(pseudo-tty)。这两个参数一起使用可以使得在容器内部进行交互式操作,就像在本地终端中一样。
这条命令的含义是:
* `docker container run`:这是Docker的命令,用于从镜像启动一个新的容器。
* `-it`:这是两个选项的组合。`-i`表示“交互式”,`-t`表示“分配一个伪终端”。这使得你可以在容器中运行交互式命令。
* `--name=centos_new`:这为新的容器指定一个名字,名字是`centos_new`。
* `centos:latest`:这是你希望Docker从`centos`镜像启动的容器,其中`latest`表示你要使用该镜像的最新版本。
* `/bin/bash`:这告诉Docker在容器启动后,你想要进入容器的shell。
如果你在运行这个命令后遇到问题,我需要更多的信息才能提供帮助,例如错误消息等。
docker run -d <image_name>
将容器后台运行
[root@localhost an]# docker run -d 001 #后台运行001 容器
Unable to find image '001:latest' locally
docker: Error response from daemon: pull access denied for 001, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.
[root@localhost an]# docker ps #查看正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cde535358d11 centos:latest "/bin/bash" 10 minutes ago Up 8 minutes 001
[root@localhost an]# docker exec -it 001 /bin/bash #使用exec -it 001 /bin/bash 进入交互端
[root@cde535358d11 /]# exit #进入完成并退出
exit
docker start <容器名称或PID>
运行指定容器
docker attach <容器名称或ID>
重新进入指定的docker容器。当退出容器时,容器将会自动停止,如果想启动容器并重新附加到其终端,需要先启动容器docker start
(这个不太确定)
docker exec -it <容器名称或ID> <命令>
使用docker exec -it <容器名称或ID> <命令>
,可以在不进入容器的情况下,直接在宿主机上运行容器里的命令。
[root@cde535358d11 /]# exit #这里是退出centos容器
exit
[root@localhost an]# docker container ls -a #显示正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cde535358d11 centos:latest "/bin/bash" 54 seconds ago Exited (0) 27 seconds ago 001
[root@localhost an]# docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost an]# docker exec -it 001 /bin/bash #这个表示再001容器运行`/bin/bash`命令
Error response from daemon: Container cde535358d11624012788f09fbda2ef0139acd739dc3a555b7c6d7c57e546072 is not running
#失败了 没有退出后,容器就结束了。这里需要重新启动容器
[root@localhost an]# docker start 001 #启动容器
001
[root@localhost an]# docker exec -it 001 /bin/bash #重新进入
[root@cde535358d11 /]# #进入成功
===以下是进入容器CentOS的使用,此时使用和虚拟机中的CentOS使用一致 ==
adduser <用户名>
再容器中创建用户
cat /etc/passwd
查看创建的用户
容器的相关操作
docker container
容器操作前缀
docker container ls -la
正在运行的容器
docker ps
查看正在运行的容器的进程码(PID)
docker ps -a
查看运行的和没运行的容器
docker volume -e
产看卷
docker container ps和docker container ls -a区别如下:
1. docker container ps:显示正在运行的容器。
2. docker container ls -a:显示所有容器,包括已经停止运行的容器。
总的来说,docker container ls 和 docker ps 命令的效果是一样的,都可以用来查看Docker容器或进程。
docker kill
终止所有运行中的容器进程
docker container kill <进程码>
结束容器指定进程
docker container stop -s <PID>
停止容器
docker container rm <PID>
删除容器 / 每次删除必须stop,然后rm
docker container rm -f <容器名称或PID>
强制删除,运行中也能删除(原理先kill后rm)
docker container logs -f <容器名称或PID>
查看容器的实时日志s
Docker中数据库相关操作(musql)
-
安装mysql镜像
-
创建mysql容器
docker container run --name=mysql_an -h admin -p3306:3306 -d -e MYSQL_ROOT_PASSWORD=123456 --restar always mysql:latest
admin
管理员权限-p3306:3306
端口号-d -e
初始化MYSQL_ROOT_PASSWORD=123456
初始化密码--restar always
重启后重新运行 -
进入mysql容器
docker exec -it mysql_an bash
bash
进入伪终端 -
mysql操作
- 建库 create database Student_Info;
- 展示库
show database
; - 使用库
use Student_info
- 展示表
show table
- 创建表
create table tb_student
- 退出mysqlz
quit;
构建镜像
docker container commit --help
是用来将正在运行的容器保存为一个新的镜像
这里将建过数据库的mysql生成镜像,自己也可以做镜像上传到docker中
docker container commit -a "an" -m "mysql for Student_info DB" mysql_an mysql_an_info:1.0
这条命令的目的应该是把现有的mysql_an容器保存为一个新的Docker镜像,名为mysql_an_info,标签为1.0。
docker container commit:# 这是Docker命令用于将一个容器转化成一个新的镜像。
-a "an":# 这是指定新镜像的作者,这里是“an”。
-m "mysql for Student_info DB":# 这是指定新镜像的创建消息,这里是“mysql for Student_info DB”。
mysql_an:# 这是要提交的容器的ID或名称。
mysql_an_info:1.0:# 这是新创建的镜像的名称和标签。
docker build
构建Docker镜像命令,支持Docker file
docker container commit和docker build有不同的功能和用途。
docker container commit是用来将正在运行的容器保存为一个新的镜像。它简单易用,所见即所得,但功能相对较少,不能封装启动命令。具体来说,commit操作将容器转化为了镜像,但这个镜像的功能相对单一,不能包含启动命令。
相比之下,docker build是用来构建Docker镜像的命令。它支持Dockerfile,可以在构建过程中执行更多的操作,例如安装依赖包、修改文件内容等。因此,docker build的功能更加强大和灵活,可以满足更多的需求。
总的来说,如果只是想将正在运行的容器保存为镜像,可以使用docker container commit;如果需要更多的功能和灵活性,建议使用docker build。
如果只是想将正在运行的容器保存为镜像,可以使用docker container commit;如果需要更多的功能和灵活性,建议使用docker build。
上传镜像到docker/docker hub操作
登录dockerdocker login --username=your_username --password=your_password
对镜像打标签docker image tag daiyi_mysql_student_info:1.0 davidlong/daiyi_mysql_student_info:1.0
推送到docker Hub docker image push davidlogdai_docker/daili_mysql_student_info
删除docker Hub
的镜像docker image rm -f <image_name>
退出docker logout
执行以下命令构建镜像:
shell
docker build -t my_image .
#执行以下命令上传镜像到Docker Hub:
shell
docker login --username=my_username --password=my_password
#设置docker标签
docker tag my_image my_username/my_image:tag
docker push my_username/my_image:tag
#等待上传完成。您的镜像现在应该已经上传到了Docker Hub上的my_username/my_image:tag repository。
Docker安装work服务器(registry、nginx)
nginx
- 运行docker
- 下载nginx
- 创建容器并运行(docker container run)
docker container run --name daiyi_nginx -p 80:80 -d nginx:latest
- 进入镜像伪终端docker exec -it dayi_nginx bash
- 进入后
ls -la
cd /usr/share/nginx/html
ls -la
- sed -i -e ‘s#welcome to nginx!QiLuLi Gong College’ -e ‘s####g’ index.html
- exit
- 查看当前系统的ip地址
- 访问ip地址
- 主机访问另一个IP地址(自己找)
nginx简介
registry 创建本地仓库
- 下载、安装、运行(run) registry
docker container run -d -p 5000:5000 -restart always --name daiyi_registry registry:latest
- 下载、安装、运行(run) hello-world(测试用)
curl localhost:5000/v2/_catalog
设置本地仓库地址- 更改标签
docker image tag hello-world:latest localhost:5000/hello-world
docker image tag nginx:latest localhost:5000/daiyi_nginx:1.0
- 上传
docker image push localhost:5000/hello-world
- 下载本地仓库资源
1.sudo docker pull localhost:5000/hello-world:1.0
curl <http://localhost:5000/hello-world/v2/hello-world/tags/list>
registry介绍
Docker File
- 安装部署运行Tomcat
- file参数
- Dockerfile名字不能更改
# 基于基础镜像(一般是操作系统)
FROM centos:7
#用户信息(这个事是由谁做的)
MAINTAINER "daiyi"
#复制rpm包,并安装。第二步:安装JDK
COPY jdk-8u201-linux-x64.rpm /
RUN rpm -ivh jdk-8u201-linux-x64.rpm
#配置JAVA环境变量
ENV JAVA_HOME /usr/java/jdk1.8.0_201-amd64
ENV CLASSPATH /usr/java/jdk1.8.0_201-amd64/lib/tools.jar:/usr/java/jdk1.8.0_201-amd64/lib/dt.jar
ENV PATH /usr/java/jdk1.8.0_201-amd64/bin:$PATH
# 默认使用用户是root
USER root
#第三步,添加tomcat到容器--压缩文件
ADD apache-tomcat-9.0.65.tar.gz /usr/local/
#进入/usr/local目录
WORKDIR /usr/local
#移动文件到/usr/local/tomcat
RUN mv apache-tomcat-9.0.65 /usr/local/tomcat
#第四步:测试tomcat是否正常工作,开启tomcat服务。
#ENTRYPOINT用于设置容器开启时的第一条命令,tomcat启动脚本命令catalina.h
ENTERPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
-
COPY jdk-8u201-linux-x64.rpm /
:这条命令将jdk-8u201-linux-x64.rpm
文件复制到/
目录中。 -
ADD apache-tomcat-9.0.65.tar.gz /usr/local/
:这条命令将下载的apache-tomcat-9.0.65.tar.gz
文件添加到/usr/local/
目录中。这个
ADD
命令是从本地文件系统或者是通过wget
、curl
等工具从网络上下载的apache-tomcat-9.0.65.tar.gz
文件添加到/usr/local/
目录中。这个命令假设你已经在本地有了这个文件,或者你有一个可以访问这个文件的URL。是的,如果本地已经有了
apache-tomcat-9.0.65.tar.gz
文件,你可以直接使用COPY
命令将其复制到/usr/local/
目录中。例如:COPY apache-tomcat-9.0.65.tar.gz /usr/local/
- 这将把本地的
apache-tomcat-9.0.65.tar.gz
文件复制到容器的/usr/local/
目录中。
基础步骤添加到容器、配置、运行
进入Docker资源文件(例如:jdk和tamcat压缩包共同的文件)和Dockerfile文件里
docker build -t daiyi_tomcat:1.0 .
这里将包含了dickerfile中的操作系统、jdk、tomcat。名字叫daiyi_tomcat
docker build命令用于根据给定的Dockerfile和上下文构建Docker镜像。
[root@localhost daiyi]# ls -la
总用量 183408
drwxr-xr-x. 2 root root 90 11月 8 14:59 .
drwxr-xr-x. 5 root root 47 11月 8 14:59 ..
-rw-r--r--. 1 root root 11593900 11月 8 14:59 apache-tomcat-9.0.65.tar.gz
-rw-r--r--. 1 root root 777 11月 8 14:59 Dockerfile
-rw-r--r--. 1 root root 176209195 11月 8 14:59 jdk-8u201-linux-x64.rpm
[root@localhost daiyi]# docker build -t daiyi_tomcat:1.0 .
[+] Building 36.5s (11/11) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 874B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/centos:7 11.3s
=> [1/6] FROM docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6 14.5s
=> => resolve docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d64 0.0s
=> => sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9 2.75kB / 2.75kB 0.0s
=> => sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc 76.10MB / 76.10MB 8.4s
=> => sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 1.20kB / 1.20kB 0.0s
=> => sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f 529B / 529B 0.0s
=> => extracting sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc 5.6s
=> [internal] load build context 1.1s
=> => transferring context: 187.85MB 1.1s
=> [2/6] COPY jdk-8u201-linux-x64.rpm / 0.6s
=> [3/6] RUN rpm -ivh jdk-8u201-linux-x64.rpm 6.5s
=> [4/6] COPY apache-tomcat-9.0.65.tar.gz /usr/local/ 0.2s
=> [5/6] WORKDIR /usr/local/ 0.0s
=> [6/6] RUN mv apache-tomcat-9.0.65.tar.gz /usr/local/tomcat 0.5s
=> exporting to image 2.7s
=> => exporting layers 2.6s
=> => writing image sha256:c9ba3f3a5b4c9bb4ee6e32ad9737f2a1daac251bab3918ff9fc9d3148fb411cb 0.0s
=> => naming to docker.io/library/daiyi_tomcat:1.0
#这里就成了
#这里就上线了
[root@localhost daiyi]# docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eb6fc85f8b12 tomcat_dy:1.0 "/usr/local/tomcat/b…" 8 seconds ago Up 7 seconds 0.0.0.0:8000->8080/tcp, :::8000->8080/tcp tomcat_dy
494008e82bbc registry:latest "/entrypoint.sh /etc…" 26 hours ago Up 32 minutes 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp daiyi_registry
#进入伪终端
[root@localhost daiyi]# docker exec -it tomcat_dy bash
# 工作目录直接进来就是/usr/local
[root@eb6fc85f8b12 local]# ls
bin etc games include lib lib64 libexec sbin share src tomcat
运行docker container run --name=dayi -d -p 8112:8080 daiyi_tomcat:1.0
访问:crul http://localhost:8112/
dockerfile只能生成镜像,在容器中测试。
Dokker Api https://blog.csdn.net/m0_51913750/article/details/131563704
http://192.168.65.101:8112/