Docker入门基础命令学习

该笔记是根据B站Up主——遇见狂神说,讲解的视频记录完成

遇见狂神说:https://space.bilibili.com/95256449

Docker常用命令

Docker官网:https://www.docker.com/

第一部分

一、帮助命令

docker version 			# 显示docker的版本信息
docker info 			# 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help   	   # 帮助命令

二、镜像命令

安装镜像的搜索网址:

https://hub.docker.com/

2.1、下载镜像
docker images			 # 查看所有本地主机上的镜像

docker search mysql      # 搜索镜像

docker pull --help 		 # 下载镜像
docker pull mysql:5.7    # 指定MySQL的版本

2.2、删除镜像
docker rmi -f id		 # 删除指定的镜像,remove image,加上镜像ID
docker rmi -f id id id 	 # 删除多个镜像
docker rmi -f $(docker image -aq)   # 批量删除全部的image(-f表示全部删除,即force,-ap查询命令)

三、容器命令

下载CentOS镜像

docker pull centos

新建容器并启动

docker run --help
docker run [可选参数] image
# 参数说明
--name="Name"		容器名字  Tomcat1 Tomcat2 用来区分容器
-d 					后台方式运行
-it					使用交互方式运行,进入容器查看内容
-p					指定容器的端口,-p  8080:8080
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口(常用)
	-p 容器端口
-P					随机指定端口

启动并进入容器

docker run -it centos /bin/bash

从容器中退回主机

exit			# 直接停止容器并退出
Ctrl + P + Q	# 容器不停止退出
ls

列出所有的运行容器

docker ps
-a 			# 列出当前正在运行的容器,带出历史运行过的容器
-n=? 		# 显示最近创建的容器
-q			# 只显示容器的编号
docker ps -a

删除容器

docker rm 容器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		# 强制停止当前容器

四、常见其他命令

后台启动容器

docker run -d 镜像名
docker run -d centos
# 问题:docker ps,发现centos停止了

# 常见的坑:docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止

# Nginx容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序运行了

查看日志

docker logs --help
docker logs -f -t --tail 容器ID			# 容器如果没有日志
# 自己编写shell脚本
"while true;do echo OriginalCoder;sleep 1;done"
docker run -d centos /bin/sh -c "while true;do echo OriginalCoder;sleep 1;done"
docker ps # 查看容器ID

显示日志
-tf   				# 显示日志(-t:时间戳,-f:持续显示日志)
--tail number 		# 要显示的日志条数
docker logs -ft --tails 10 容器ID(10代表打印的条数)

查看容器中进程信息ps

docker ps 			# 查看容器ID
docker top 容器ID

查看镜像的元数据

docker inspect --help
docker ps -a
docker inspect 容器ID

进入当前正在运行的容器

通常情况下,容器都是后台运行的,需要进入容器中,修改一些配置

# 方式一
docker exec -it 容器ID /bin/bash
ls
ps -ef

# 方式二
docker attach 容器ID

区别
# docker exec 		进入容器后开启一个新的终端,可以在里面操作
# docker attach 	进入容器正在执行的终端,不会启动新的进程

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

docker cp 容器ID: 容器内路径 目的主机路径
docker ps
docker images
docker run -it centos /bin/bash
docker ps 


docker attach 容器ID
cd /home
ls
容器内新建一个文件
# touch test.java
exit
docker ps -a
# 将这个文件拷贝出来到主机上
docker cp 容器ID:/home/test.java /home
ls

五、 总结

attach Attach to a running container #当前shell下attach连接指定运行镜像
build Build an image from a Dockerfile #通过Dockerfile定制镜像
commit Create a new image from a containers changes #提交当前容器为新的镜像
cp Copy files/folders from a container to a HOSTDIR or to STDOUT #从容器中拷贝指定文件或者目录到宿主机中
create Create a new container #创建一个新的容器,同run 但不启动容器
diff Inspect changes on a containers filesystem #查看docker容器变化
events Get real time events from the server#从docker服务获取容器实时事件
exec Run a command in a running container#在已存在的容器上运行命令
export Export a containers filesystem as a tar archive #导出容器的内容流作为一个tar归档文件(对应import)
history Show the history of an image #展示一个镜像形成历史

images List images #列出系统当前镜像
import Import the contents from a tarball to create a filesystem image #从tar包中的内容创建一个新的文件系统映像(对应export)
info Display system-wide information #显示系统相关信息
inspect Return low-level information on a container or image #查看容器详细信息
kill Kill a running container #kill指定docker容器
load Load an image from a tar archive or STDIN #从一个tar包中加载一个镜像(对应save)
login Register or log in to a Docker registry#注册或者登陆一个docker源服务器
logout Log out from a Docker registry #从当前Docker registry退出
logs Fetch the logs of a container #输出当前容器日志信息
pause Pause all processes within a container#暂停容器
port List port mappings or a specific mapping for the CONTAINER #查看映射端口对应的容器内部源端口
ps List containers #列出容器列表
pull Pull an image or a repository from a registry #从docker镜像源服务器拉取指定镜像或者库镜像
push Push an image or a repository to a registry #推送指定镜像或者库镜像至docker源服务器

rename Rename a container #重命名容器
restart Restart a running container #重启运行的容器
rm Remove one or more containers #移除一个或者多个容器
rmi Remove one or more images #移除一个或多个镜像(无容器使用该镜像才可以删除,否则需要删除相关容器才可以继续或者-f强制删除)
run Run a command in a new container #创建一个新的容器并运行一个命令
save Save an image(s) to a tar archive#保存一个镜像为一个tar包(对应load)
search Search the Docker Hub for images #在docker
hub中搜索镜像
start Start one or more stopped containers#启动容器
stats Display a live stream of container(s) resource usage statistics #统计容器使用资源
stop Stop a running container #停止容器
tag Tag an image into a repository #给源中镜像打标签
top Display the running processes of a container #查看容器中运行的进程信息
unpause Unpause all processes within a container #取消暂停容器
version Show the Docker version information#查看容器版本号
wait Block until a container stops, then print its exit code #截取容器停止时的退出状态值

六、练习

Docker安装Nginx

PS:建议在DockerHub上搜索镜像,这样你可以找到自己想要的镜像版本,地址:https://hub.docker.com/

docker search nginx
docker push nginx
docker images

# -d 后台运行
# --name 给容器命名
# -p 宿主机端口:容器内端口
docker run -d --name Nginx01 -p 3344:80 nginx
# 测试
curl localhost:3344


# 进入容器
docker exec -it nginx01 /bin/bash
whereis nginx 
cd /etc/nginx
ls

上面代码可能涉及到的问题:

# 永久关闭防火墙
systemctl disable firewalld.service

端口暴露的概念

思考问题:我们每次修改Nginx的配置文件,都需要进入容器内部,十分麻烦。可以在容器外提供一个映射的路径,达到在容器修改文件名,容器内部就可以自动修稿同步?-v,数据卷

-v /usr/share/nginx:/user/nginx

Docker安装Tomcat

# 官方的使用
docker run -it --rm tomcat:9.0

# 之前启动的都是后台,停止了容器之后,容器还是可以查到,docker run -it --rm ,一般用来测试,用完即删
# 建议使用以下
docker pull tomcat:9.0			# 下载Tomcat
docker images
# 启动运行
docker run -d -p 3355:8080 --name tomcat tomcat


说明:通过以上方式就能测试访问成功,但是通过外网访问时,出现404
# 进入容器
docker exec -it tomcat01 /bin/bash

# 发现问题:1.Linux命令少了;2.没有webapps。		原因:阿里云镜像默认是最小的镜像,所以不必要的都被剔除

Docker安装Redis

docker pull redis
docker image inspect redis:latest

七、Commit镜像

docker commit 提交容器成为一个新的副本

docker commti -m "提交的描述信息"  -a="作者" 容器ID 目标镜像名:[TAG]

docker images
docker run -it -p 8080:8080 镜像名
docker ps
docker exec -it 容器ID /bin/bash

docker commit -a="作者" -m="描述信息" 容器ID 新容器名称:表情

八、容器数据卷

什么是容器数据卷?

将应用和环境,打包成一个镜像。数据如果都在容器中,那么容器删除,数据就会丢失。

需求:数据可以持久化

MySQL:容器删了,就相当于删库跑路!需求:MySQL数据可以存储在本地!

容器之间有一个数据共享的技术!Docker容器中产生的数据,同步到本地!这就是卷技术。

目录的挂载, 将我们容器内的目录,挂载到Linux上。

总结:容器的持久化和同步操作!容器间也是可以数据共享的!

使用数据卷

方式一:直接使用命令来挂载 -V

docker run -it -V 主机目录 容器内目录

# 测试
docker run -it -v /home/ceshi:/home centos /bin/bash

# 回到容器之外的控制台,使用以下命令,查看是否挂载成功
docker inspect 容器ID	

测试文件的同步

再次测试

1、停止容器

2、宿主机上修改文件

3、启动容器

4、容器内的数据依旧是同步的

好处:我们以后修改只需要在本地修改即可,容器内自动同步!

第二部分

一、实战:安装MySQL

思考:MySQL的数据持久化问题

# 获取镜像
docker search mysql
docker pull mysql:5.7

# 运行容器,需要做数据挂载
# 安装启动mysql,需要配置密码(注意点)
# 官方测试:docker run -it --network some-network --rm mysql mysql -hsome-mysql -uexample-user -p
# 运行
-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
--name 容器名字	
docker run -d -p 3310:3306 -v /home/mysql.conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
# 启动成功之后,可以在Windows本地机测试

假设我们将容器删除

docker rm -f mysql01
docker ps
docker ps -a

回到宿主机查看,发现数据都还在! 我们挂载到本地的数据卷没有丢失,这就实现了容器数据持久化功能。

二、具名挂载和匿名挂载

# 匿名挂载
-v 容器内路径
docker run d -P --name nginx01 -v /etc/nginx nginx

# 查看所有数据卷的情况
docker volume ls

 

三、DockerFile

DockerFile就是用来构建docker镜像的构建文件!命令脚本

mkdir docker-test-volume
ls
pwd
cd docker-test-volume/
pwd

# 通过下面这个脚本,可以生成镜像,镜像是一层一层的,脚本是一层层的命令,每一个命令都是一层
vim dockerfile1
	FROM centos
	VOLUME ['volume01','volume02']
	CMD echo "----end----"
	CMD /bin/bash
	ESC
	:wq

# 查看dockerfile1
cat dockerfile1
# 
docker build -f /home/docker-test--volume/docekrfile1 -t rich/centos:1.0 .

启动自己写的容器

这个卷和外部一定有一个同步的目录

四、数据卷容器

五、SpringBoot+Vue博客打包Docker镜像

1、构建SpringBoot项目

2、打包应用

3、编写DockerFile

4、构建镜像

5、发布运行

以后在使用Docker的时候,给别人一个Docker的镜像就可以

Docker Compose
Docker Swarm
CI/CD之Jenkins

,‘volume02’]
CMD echo “----end----”
CMD /bin/bash
ESC
:wq

查看dockerfile1

cat dockerfile1

docker build -f /home/docker-test–volume/docekrfile1 -t rich/centos:1.0 .


启动自己写的容器

[外链图片转存中...(img-IZW2CC6R-1626020303473)]

这个卷和外部一定有一个同步的目录

### 四数据卷容器

[外链图片转存中...(img-DttAw1Lb-1626020303474)]

### 五、SpringBoot+Vue博客打包Docker镜像

1、构建SpringBoot项目

2、打包应用

3、编写DockerFile

4、构建镜像

5、发布运行

以后在使用Docker的时候,给别人一个Docker的镜像就可以





#### Docker Compose

#### Docker Swarm

#### CI/CD之Jenkins

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值