栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Docker学习笔记(1)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker学习笔记(1)

Docker学习笔记 (1)
Docker的安装 Docker下载安装

Docker的下载与安装还是比较丝滑的,总比Tensorflow什么的需要配各种环境强。其中Docker Desktop可以直接在官网下载安装文件,并自动安装。Linux版本在官网文档中也有详细的命令行教程:官方安装教程

映像文件位置修改

针对 Docker Desktop for Windows:

在启动 docker 后,其默认使用wsl2的后端,并默认创建两个子系统,名为docker-desktop 和docker-desktop-data 分别存放文件数据和系统数据,其默认在C盘中。利用下列代码改变磁盘映像文件的位置:

wsl -v -l 	#查看版本和wsl列表
wsl --shutdown 	#关闭系统
wsl --export data-desktop destDirdata.desktop.tar 	#移出数据
wsl --unregister data-desktop	#卸载子系统
wsl --import data-desktop destDir destDirdata.desktop.tar	#导入数据

然后restart docker,docker就会自动开启这两个子系统,此后docker中的文件将保存在新的目录下。


当然也可以在上面的界面中选择不使用 wsl2 这样 docker 就会通过 Hyper-V 创建虚拟环境。

验证是否安装成功

安装后执行下面命令,如果正常显示版本则安装成功:

docker version 	# 检查版本命令
修改镜像仓库

docker默认使用官方镜像仓库,这里建议使用阿里云的镜像加速网址:

"registry-mirrors": ["https://<你的id>.mirror.aliyuncs.com"]

这样 docker 的环境基本大功告成!运行下面代码,即可启动示例项目:

docker run -d -p 8080:80 docker/getting-started

其中-d代表后台执行-p代表端口号映射,将容器中的80端口对外映射为8080。

小结
  1. 官方安装教程,官方文档十分详细完全可以满足我们安装的需要。
  2. Docker Desktop 默认使用WSL2作为后端,可以在设置中进行修改。
  3. Docker Desktop 的磁盘映像如果不希望放在C盘,可以根据上面操作修改。
  4. docker version验证是否安装成功。
  5. 更改镜像仓库,加快速度。

Docker常用命令 帮助命令
docker version 	# docker版本
docker info 	# docker系统信息
docker [opt] --help 	# docker的opt命令帮助

可以直接在Docker官方文档地址查询相关命令。

Docker 镜像命令

docker images # 查看本机所有镜像

REPOSITORY               TAG       IMAGE ID       CREATED        SIZE
tomcat                   9.0       3f3cadde9a68   2 days ago     680MB
docker/getting-started   latest    26d80cd96d69   8 days ago     28.5MB

# 可选项
-a, --all	# 列出所有镜像
-q, --quiet	# 列出镜像id
-aq	# 所有镜像id

docker search # 搜索镜像

NAME                 DEscriptION        	  STARS     OFFICIAL 
mysql                MySQL is a widely used   11803     [OK]     
mariadb              MariaDB Server is a hi   4492      [OK]  
...
# 可选项
--filter=STARTS=3000	# 搜索star不少于3000的

docker pull image[:tag] # 拉取镜像,默认tag为latest

docker pull 采用分层下载机制,联合文件系统可以共用部分文件,减少磁盘占用。

docker pull mysql:5.7	# 其中5.7版本必须出现于官网中

5.7: Pulling from library/mysql
ffbb094f4f9e: Already exists 
df186527fc46: Already exists 
fa362a6aa7bd: Already exists 
5af7cb1a200e: Already exists 
949da226cc6d: Already exists 
bce007079ee9: Already exists 
eab9f076e5a3: Already exists 
c7b24c3f27af: Pull complete 
6fc26ff6705a: Pull complete 
bec5cdb5e7f7: Pull complete 
6c1cb25f7525: Pull complete 
Digest: sha256:d1cc87a3bd5dc07defc837bc9084f748a130606ff41923f46dec1986e0dc828d
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

docker rmi [id] # 删除指定id镜像,-f 强制删除

docker rmi -f id1 id2 ...	# 批量删除镜像
docker rmi -f $(docker images -aq)	# 删除所有镜像
Docker 容器命令

新建容器并启动

docker run [opt] image
# 常用参数
--name="Name"	# 容器名字
-d	# 后台方式运行
-p	# 指定映射端口
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口
	-p 容器端口
-p 	# 随机指定端口
-it	# 进入容器,以交互模式运行

# 启动 centos 执行bash,并进入容器(小centos系统)
docker run -it centos /bin/bash 

列出所有的运行的容器

docker ps	# 列出当前运行的容器
# 常用参数
-a	# 列出所有运行过的容器
-n=k	# 显示最近k个创建的容器
-q	# 只显示容器id

退出容器

exit	# 容器停止并退出
ctrl+p+q	# 退出容器,容器继续运行

删除容器

docker rm ConTAINER
docker rm -f $(docker ps -aq)	# 支持参数传递
docker ps -aq|xargs docker rm	# 借用linux管道命令删除

启动与停止容器

docker start ConTAINER	# 启动容器
docker restart ConTAINER	# 重启容器
docker stop ConTAINER	# 停止容器
docker kill ConTAINER	# 强制杀死容器
Docker进阶常用命令

后台启动容器

docker run -d centos	
# docker ps 发现censtos停止
# docker 后台运行容器时,如果发现没有应用,则自动停止容器
# 可以用 docker run -d centos /bin/bash

查看后台日志

docker logs [opt] ConTAINER
# 可选参数
-f	# 查看接下来输出的log
-t	# 显示timestamp
--tail k	# 显示后k个log

查看容器中进程信息

docker top ConTAINER	# 查看容器内部进程信息

查看容器元数据

docker inspect ConTAINER
# 关于容器的所有元数据信息
[
    {
        "Id": "37e690bc3d38018588df3ead2ea8d84e30941ba418394c0a293c7f1e7627eb65",
        "Created": "2021-12-11T04:06:26.049296457Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 4213,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-12-11T04:06:26.335814283Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
....

进入当前运行的容器

# 进入后台运行的容器并进行操作

# 命令
# 方式一: 开启新的终端
docker exec -it ConTAINER /bin/bash	# 以bash命令进入
# 方式二: 进入正在运行的命令行,而非开启新的窗口
docker attach ConTAINER	

# docker exec 进入容器开启新的终端
# docker attach 进入正在运行的终端

从容器内拷贝文件到主机上

在容器中centos的 /home/geng.java,拷贝到主机中的/home/ 中

# 前为容器中地址,后为目的地址
docker cp CONTAINER:/home/geng.java /home/

# 未来可以使用-v卷技术
小结


上图描述了docker的基本的工作命令图,docker命令实质上没有什么技术难度,实战多用,越用越熟!


实战练习 Nginx部署

一. 拉取镜像:

方法一:拉取最新版本

# 图方便可以直接pull最新版本
git pull nginx

方法二:拉取指定版本

步骤1:打开Docker Hub

步骤2:搜索Nginx,查看提供的版本号

步骤3:拉取镜像

# 拉取制定版本 如:
docker pull nginx:1.21.4

二. 运行Nginx

# 在名为nginx01容器中运行,对外端口号为1314
docker run -d --name nginx01 -p 1314:80 nginx
# 测试是否运行成功
curl localhost:1314

# 输出内容如下
[root@GengCloud home]# curl localhost:1314



Welcome to nginx!



Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

!注意: 在服务器上运行这个命令的同学,可能迫不及待地想在浏览器上输入ip:1314,然后查看页面了,此时如果没有设置安全组,可能就会出现请求超时的情况,因此以阿里云为例,执行如下操作。

三. 设置安全组

以阿里云为例,打开阿里云官网,然后找到自己的服务器实例,侧栏中点击安全组:


我们可以创建安全组,也可以在目前使用的安全组上进行修改:

在里面可以看到原有的80,443等端口是默认开放的,我们只需要将我们希望开放的端口输入,即可完成配置。这样我们在浏览器中输入ip:1314即可显示出Nginx的欢迎页面!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/658329.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号