google外贸建站,免费的一级域名申请,怎样做网络推广软件系统,二级造价师docker学习 文章目录 一、下载安装docker#xff08;一#xff09;Windows桌面应用安装#xff08;二#xff09;Linux命令安装 二、windows注册登录docker三、Docker的常规操作(一)、基本的 Docker 命令(二)、镜像操作(三)、容器的配置(四)、登录远程仓库 四、镜像管理(一… docker学习 文章目录 一、下载安装docker一Windows桌面应用安装二Linux命令安装 二、windows注册登录docker三、Docker的常规操作(一)、基本的 Docker 命令(二)、镜像操作(三)、容器的配置(四)、登录远程仓库 四、镜像管理(一)、搜索官方仓库镜像(二)、获取镜像(三)、导出镜像(四)、导入镜像(五)、删除镜像(六)、查看镜像详细信息(七)、上传自己公共仓库 五、管理docker容器(一)、容器的启用/停止(二)、进入容器的方法(三)、容器与主机间的数据传输 六、docker 数据卷的管理(一)、挂载时创建卷(二)、提前创建数据卷 七、项目实战附录1安装SSL证书2配置nginx3重启nginx服务器 前言Docker 通过虚拟化安装和运行应用程序的操作系统来简化构建、运 行、管理和分发应用程序的过程。 目的是使应用程序在不同的系统环 境中高效工作。 一、下载安装docker
一Windows桌面应用安装 下载安装包 官网https://www.docker.com/ 安装Docker 点击安装包自动安装 成功安装重新启动 重新启动如果版本不对会报错内存较低 报错使用命令进行安装 wsl --update然后就可以正常打开了
二Linux命令安装 安装要求 更新软件包索引并安装依赖包 sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common添加 Docker 官方 GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive- keyring.gpg添加 Docker APT 仓库 echo deb [signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null添加国内yum源 根据每个系统的不同的yum源进行配置 windows: {builder: {gc: {defaultKeepStorage: 20GB,enabled: true}},experimental: false,features: {buildkit: true},registry-mirrors: [https://docker.mirrors.ustc.edu.cn,https://registry.docker-cn.com,http://hub-mirror.c.163.com,https://mirror.ccs.tencentyun.com]
}开始安装 sudo apt update
sudo apt install docker-ce启动docker服务 sudo systemctl start docker验证docker是否安装成功 docker --version二、windows注册登录docker Linux系统直接去到官网或者使用的时候在进行注册 打开软件选择登录 登记注册账号 登录账号 打开桌面应用 登录中 登录成功 三、Docker的常规操作
(一)、基本的 Docker 命令 检查 docker 的版本 docker --version活动容器的列表 docker ps在这里插入图片描述 全部容器列表 docker ps -a系统中镜像列表 docker images使用镜像名称创建容器 docker run ARGUMENT IMAGE-NAME这里的参数 -itd (或者 -i -t -d ) 是指 i ‒ 交互模式 t ‒ 连接到显示终端 d ‒ 后台运行模式 我们可以使用我们所需的任何参数来运行容器 停止容器 docker stop CONTAINER-ID/NAME删除容器 docker rm CONTAINER-ID/NAME
docker rm -f CONTAINER-ID/NAME // 强制删除删除镜像 docker rmi IMAGE-ID访问容器 docker exec -it container name /bin/bash(二)、镜像操作 从码头工人中心 (docker.com)上获取镜像 Docker 镜像仓库地址地址格式一般是域名/ip[:端口号] 默认地址是Dcoker Hub官方地址 仓库名这里的仓库是两段式名称即用户名/软件名 查看本地拥有哪些镜像 docker image删除镜像 docker rmi -f 镜像名称查看docker中可以使用的操作 docker --help给镜像重新打上一个tag docker tag nginx nginx:test将镜像导出成一个独立的文件 docker save nginx /tmp/nginx.tar.gz如果无法连接到互联网使用这个命令导出 docker load/tmp/nginx.tar.gz(三)、容器的配置 启动第一个容器 以某个镜像为基础运行一个容器 docker run --name webserver -d -p:8100:80 nginx访问容器地址
(四)、登录远程仓库 登录命令 $ docker login退出登录 $ docker logout四、镜像管理
(一)、搜索官方仓库镜像
docker search imoge_name
$ docker login$ docker search nginx | head -3
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 18888 [OK]
unit Official build of NGINX Unit: Universal Web … 8 [OK][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vKwrZnwG-1692692682546)(./images/image-20230822104621254.png)]
(二)、获取镜像
docker pull imoge_name:tog
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wEA48DFt-1692692682546)(./images/image-20230822104723490.png)]
$ docker pull nginx:1.25.2-perl #下载1.25.2版本
1.25.2-perl: Pulling from library/nginx
52d2b7f179e3: Already exists
fd9f026c6310: Already exists
055fa98b4363: Already exists
96576293dd29: Already exists
a7c4092be904: Already exists
e3b6889c8954: Already exists
da761d9a302b: Already exists
60c2235cc8b6: Pull complete
Digest: sha256:da5e596e27292bedea3c1a59fbef9852e7b0b7e5c21178982c4cc78cb2d700f4
Status: Downloaded newer image for nginx:1.25.2-perl
docker.io/library/nginx:1.25.2-perlWhats Next?View summary of image vulnerabilities and recommendations → docker scout quickview nginx:1.25.2-perl
$ docker image ls # 查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.25.2-perl a465b9c519a0 5 days ago 236MB
nginx latest eea7b3dcba7e 5 days ago 187MB(三)、导出镜像
docker image save imoge_name:tog /路径/imoge_name.tar.gz
$ docker tag nginx nginx:test # 给镜像重新打上一个tag
$ docker image save nginx:1.25.2-perl C:\Users\daiyu\Desktop\nginx-v2.0.tar.gz #Windows与Linux一样
$ docker load/tmp/nginx.tar.gz #如果没有办法访问外网的情况下可以使用这个命令进行导出(四)、导入镜像
docker image load i imoge_name.tar.gz
$ docker image load i nginx-v2.0.tar.gz$ docker image ls(五)、删除镜像
$ docker image rm nginx:1.25.2-perl(六)、查看镜像详细信息
$ docker image inspect nginx
PS C:\Users\daiyu\Desktop docker image inspect nginx
[{Id: sha256:eea7b3dcba7ee47c0d16a60cc85d2b977d166be3960541991f3e6294d795ed24,RepoTags: [nginx:latest],RepoDigests: [nginxsha256:104c7c5c54f2685f0f46f3be607ce60da7085da3eaa5ad22d3d9f01594295e9c],Parent: ,Comment: ,Created: 2023-08-16T09:50:55.765544033Z,Container: 50b019921f82064e1d8af7e2723929d4c5fafcfd6d8b03595711bd1e455dd3c4,ContainerConfig: {Hostname: 50b019921f82,Domainname: ,User: ,AttachStdin: false,AttachStdout: false,AttachStderr: false,ExposedPorts: {80/tcp: {}},Tty: false,OpenStdin: false,StdinOnce: false,Env: [PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin,NGINX_VERSION1.25.2,NJS_VERSION0.8.0,PKG_RELEASE1~bookworm],Cmd: [/bin/sh,-c,#(nop) ,CMD [\nginx\ \-g\ \daemon off;\]],Image: sha256:d59ed5fe14c2a306f94488f41ddc8fb060312ee31997f5e077a4c4b29b19114e,Volumes: null,WorkingDir: ,Entrypoint: [/docker-entrypoint.sh],OnBuild: null,Labels: {maintainer: NGINX Docker Maintainers docker-maintnginx.com},StopSignal: SIGQUIT},DockerVersion: 20.10.23,Author: ,Config: {Hostname: ,Domainname: ,User: ,AttachStdin: false,AttachStdout: false,AttachStderr: false,ExposedPorts: {80/tcp: {}},Tty: false,OpenStdin: false,StdinOnce: false,Env: [PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin,NGINX_VERSION1.25.2,NJS_VERSION0.8.0,PKG_RELEASE1~bookworm],Cmd: [nginx,-g,daemon off;],Image: sha256:d59ed5fe14c2a306f94488f41ddc8fb060312ee31997f5e077a4c4b29b19114e,Volumes: null,WorkingDir: ,Entrypoint: [/docker-entrypoint.sh],OnBuild: null,Labels: {maintainer: NGINX Docker Maintainers docker-maintnginx.com},StopSignal: SIGQUIT},Architecture: amd64,Os: linux,Size: 186639842,VirtualSize: 186639842,GraphDriver: {Data: {LowerDir: /var/lib/docker/overlay2/a5a633a93c5ecaf9c0dd7c64176078a19f62e4902b72671aac868cea4f34d62c/diff:/var/lib/docker/overlay2/926886d52dd0b566a6a96ac3fe3481b9f5e5b92fa7ae354e8b19c3dc8e37ca69/diff:/var/lib/docker/overlay2/14689eb83ef85938fbfc46af9987f07c5ef1f4e058a75ab5b2021c97903a1028/diff:/var/lib/docker/overlay2/57a9f4fdcb8ba210cd81e460f116e30ea33be8abb820c8f3bdb49c965fb46e61/diff:/var/lib/docker/overlay2/5485a2ea4a95a9bdefe35136dc9c41958d5a860dd618171d0679fec6becdcc36/diff:/var/lib/docker/overlay2/145318f6dd8347b6db03a6f60e976f85a16c04067e6301cbe2dfe6ef5113a5f1/diff, MergedDir: /var/lib/docker/overlay2/ff41488d38d52c94f16d3ef5bf823f2183235420cc795fb523f64a7ced1c5979/merged,UpperDir: /var/lib/docker/overlay2/ff41488d38d52c94f16d3ef5bf823f2183235420cc795fb523f64a7ced1c5979/diff,WorkDir: /var/lib/docker/overlay2/ff41488d38d52c94f16d3ef5bf823f2183235420cc795fb523f64a7ced1c5979/work},Name: overlay2},RootFS: {Type: layers,Layers: [sha256:511780f88f80081112aea1bfdca6c800e1983e401b338e20b2c6e97f384e4299,sha256:4713cb24eeff341d0c36343149beba247572a5ff65c2be5b5d9baafb345c7393,sha256:d0a62f56ef413f60049bc87e43e60032b2a2ab8d931e15b86ee0286c85ae91a2,sha256:8a7e12012e6f60450e6d2d777b2a2c2256d34a0ccd84d605f72cc5329a87c8b8,sha256:e161c3f476b5199ab13856c7e190ed12a6562b7be059c7026ae9f594e1abbcaf,sha256:6fb960878295b567d25900b590157b976d080340caeaa8bf8c46d38c01b4537d,sha256:563c64030925e9016a2329d3a2b7d47b0c90931baf5d2d0aa926c4c8d94ab894]},Metadata: {LastTagTime: 0001-01-01T00:00:00Z}}
](七)、上传自己公共仓库 公共仓库地址nginx Tags (docker.com) 选择登录进行创建仓库 新建仓库 上传镜像
$ docker tag nginx daiyunjie/adlerian_nginx
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest eea7b3dcba7e 5 days ago 187MB
daiyunjie/adlerian_nginx latest eea7b3dcba7e 5 days ago 187MB
$ docker push daiyunjie/adlerian_nginx
Using default tag: latest
The push refers to repository [docker.io/daiyunjie/adlerian_nginx]
563c64030925: Mounted from library/nginx
6fb960878295: Mounted from library/nginx
e161c3f476b5: Mounted from library/nginx
8a7e12012e6f: Mounted from library/nginx
d0a62f56ef41: Mounted from library/nginx
4713cb24eeff: Mounted from library/nginx
511780f88f80: Mounted from library/nginx
latest: digest: sha256:48a84a0728cab8ac558f48796f901f6d31d287101bc8b317683678125e0d2d35 size: 1778上传成功 五、管理docker容器
(一)、容器的启用/停止
$ docker container ls #查看已经启动的容器
$ docker stop 43737ef7d61e #终止运行中的容器
$ docker start 43737ef7d61e #重新启动之前终止过的容器
$ docker kill 43737ef7d61e #终止运行中的容器
$ docker container rm 43737ef7d61e #强制删除某个容器(二)、进入容器的方法
$ docker run --name name -d -p:8100:80 nginx #创建一个容器name自己起名字
$ docker exec -it name/ID /bin/bash #进入容器
$ cat /etc/nginx/conf.d/default.conf #nginx配置文件
$ exit #退出(三)、容器与主机间的数据传输
$ docker cp webserver:/etc/nginx/conf.d/default.conf . #传输到主机
$ vim default.conf #修改
$ docker cp default.conf webserver:/etc/nginx/conf.d/default.conf #传输到容器
$ docker restart webserver # 重启六、docker 数据卷的管理
(一)、挂载时创建卷
$ mkdir /opt/docker-volumes
PS C:\Users\daiyu\Desktop mkdir /opt/docker-volumes #创建卷目录: C:\optMode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2023/8/22 15:10 docker-volumes$ docker rm -f $(docker ps -a -q) #强制删除所用容器$ docker container run -itd --name webserver -p 8080:80 -v /opt/docker-volumes/webserver:/usr/share/nginx/html nginx
025e425bcf03148bce7ceffbec1a1bf41e43f14dab5b70af021edacef049f6cc$ curl http://localhost:8080
$ echo hello docker volume /opt/docker-volumes/webserver/index.html$ curl http://localhost:8080(二)、提前创建数据卷
$ docker volume create --name webserver \
$ docker volume create --name webserver \
$ docker volume inspect webserver
$ docker container run -itd --name webserver -p 8080:80 -v webserver:/usr/share/nginx/html nginx
$ curl http://localhost:8081
$ echo hello docker webserver /var/lib/docker/volumes/webserver/index.html
$ curl -i http://localhost:8081七、项目实战附录 在Ubuntu上运行一个项目并且使用nginx反向代理通过域名访问 1安装SSL证书
首先需要安装Python及相关组件。可以通过以下命令来完成
$ sudo apt-get update
$ sudo apt-get install python3-certbot-apache需要安装Certbot证书颁发机构的证书
$ sudo certbot certonly --standalone --agree-tos --email 邮箱账号 --domains 域名最后需要在Ubuntu系统中启用SSL
sudo certbot enable-ssl --apache --cert-file /etc/letsencrypt/live/example.com/fullchain.pem --key-file /etc/letsencrypt/live/example.com/privkey.pem2配置nginx
需要在etc/nginx/sites-available/目录下创建一个新的空白文件然后进行以下配置
server { listen 443 ssl; server_name test.thesky-xh.cn; ssl_certificate 下载的ssl目录地址; ssl_certificate_key ssl密钥的地址; location / { proxy_pass http://localhost:5678; }
}配置nginx.conf文件
server {listen 80;server_name test.thesky-xh.cn www.test.thesky-xh.cn;location / {return 301 https://$host$request_uri;}}server {listen 443 ssl;server_name test.thesky-xh.cn www.test.thesky-xh.cn;ssl_certificate /etc/letsencrypt/live/test.thesky-xh.cn/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/test.thesky-xh.cn/privkey.pem;location / {proxy_pass http://127.0.0.1:5700;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}3重启nginx服务器
$ sudo systemctl stop nginx
$ sudo systemctl start nginxEDN