docker入门命令

本文详细介绍了Docker的基本概念、工作原理、安装过程、镜像管理、容器操作及使用场景,包括镜像的下载、删除,容器的创建、启动、停止等,并展示了通过Docker部署Nginx和Tomcat的示例。此外,还提到了Docker的可视化管理和镜像制作流程。
摘要由CSDN通过智能技术生成

Docker

Docker基于Go语言开发。

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

文档地址:https://docs.docker.com/

仓库地址:https://hub.docker.com/

Docker与传统虚拟机的区别

  1. 虚拟机是虚拟一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
  2. 容器内的应用直接运行在宿主的内容,容器是没有自己的内核,也没有虚拟我们的硬件。所以就变轻了。
  3. 每个容器之间都是相互隔离,每个容器都有一个属于自己的文件系统互不影响
  4. Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任何Linux机器上。可以实现虚拟化,
  5. 容器是完全使用沙箱机制,相互之间不会有任何接口。更重要的是容器开销低。

Docker 的优点

​ Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

安装Docker

  1. 卸载旧版本

    yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    
  2. 安装需要的安装包

    yum install -y yum-utils
    
  3. 设置镜像的仓库

    yum-config-manager \
        --add-repo \	# 默认是国外的
        https://download.docker.com/linux/centos/docker-ce.repo
        
        # 阿里云
        yum-config-manager \
        --add-repo \
        http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    
  4. 安装docker相关的内容

    # 更新软件包的索引
    yum makecache fast
    # 安装相关依赖
    yum install docker-ce docker-ce-cli containerd.io
    
  5. 启动docker

    systemctl start docker
    # 查看版本
    docker version
    
  6. 测试docker

    docker run hello-word
    
  7. 卸载docker

    yum remove docker-ce docker-ce-cli containerd.io
    
  8. 删除docker目录

    rm -rf /var/lib/docker
    rm -rf /var/lib/containerd
    
  9. 阿里云镜像

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
	"registry-mirrors":["https://qiyb9988.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

底层原理

docker是怎么工作的?

Docker是一个Client-Server 结构的系统,Docker的守护进程在主机上,通过Socket客户端访问。

Docker-Server接收到Docker-Client的指令。就会执行这个命令!

镜像命令

docker images 查看所有本地主机上的镜像

搜索命令
docker search --help

# 搜索3000以上的
docker search mysql --filter=STARS=3000
下载镜像

docker pull --help

[root@localhost ~]# docker pull mysql[:tag]
Using default tag: latest	# 如果不写tag. 默认就是latest,最新版!
latest: Pulling from library/mysql
69692152171a: Pull complete		# 分层下载,docker images的核心联合文件系统
1651b0be3df3: Pull complete
951da7386bc8: Pull complete
0f86c95aa242: Pull complete
37ba2d8bd4fe: Pull complete
6d278bb05e94: Pull complete
497efbd93a3e: Pull complete
f7fddf10c2c2: Pull complete
16415d159dfb: Pull complete
0e530ffc6b73: Pull complete
b0a4a1a77178: Pull complete
cd90f92aa9ef: Pull complete
Digest: sha256:d50098d7fcb25b1fcb24e2d3247cae3fc55815d64fec640dc395840f8fa80969# 签名防伪信息
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest		# 真实地址

# 指定版本下载
[root@localhost ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
69692152171a: Already exists
1651b0be3df3: Already exists
951da7386bc8: Already exists
0f86c95aa242: Already exists
37ba2d8bd4fe: Already exists
6d278bb05e94: Already exists
497efbd93a3e: Already exists
a023ae82eef5: Pull complete
e76c35f20ee7: Pull complete
e887524d2ef9: Pull complete
ccb65627e1c3: Pull complete
Digest: sha256:a682e3c78fc5bd941e9db080b4796c75f69a28a8cad65677c23f7a9f18ba21fa
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
删除镜像
# 删除所有镜像
docker rmi -f $(docker images -aq)
# 删除执行的容器
docker rmi -f 容器ID 
# 删除多个容器
docker rmi -f 容器ID 容器ID 容器ID
容器命令

说明:我们有了镜像才可以创建容器,Linux,下载一个centos镜像来测试学习

docker pull centos

新建容器并启动

docker run [可选参数] images
# 参数说明
--name="Name"		容器名字
-d 					后台运行方式
-i -t				使用交互方式运行,进入容器查看内容/
-p					指定容器的端口  -p 8080:8080

	-p 主机端口映射到容器端口(常用)
	-p 容器端口
	
# 启动并进入容器
docker run -it centos /bin/bash

列出所以运行的容器

docker ps -a

退出容器

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

删除容器

docker rm 容器ID				    # 删除指定的容器
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 发现没有应用,就会自动停止

查看镜像的元数据

docker inspect 498d3953de8c

进入当前正在运行的容器

# 方式一 进入容器后开启新终端(常用)
docker exec -it 容器ID

# 方式二 进入容器正在执行的终端(不会启动新的进程)
docker attach 容器ID

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

# 查看当前镜像
docker images

# 开启centos镜像
docker run -it centos /bin/bashs

# 在home文件下创建文件
cd /home
touch text.java

# 退出当前镜像
exit

# 查看历史版本(虽然容器没有在运行,但丝毫不影响复制文件)
docker ps -a

# 进行复制
docker cp 容器ID:/home/text.java /home

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IFsJNxoT-1622790554694)(C:/Users/Andy/AppData/Roaming/Typora/typora-user-images/image-20210604092930272.png)]

Docker安装

nginx

# 搜索镜像
docker search nginx

# 下载
docker pull nginx

# 运行
docker run -d --name nginx01 -p:9527:80 nginx

# 本机测试
curl localhost:9527

tomcat

# 下载tomcat
docker pull tomcat

# 后台运行tomcat
docker run -d --name tomcat01 -p 9528:8080 tomcat

# 虽然能运行但是404 进入容器一探究竟
docker exec -it tomcat01 /bin/bash

# 查看目录
ls al

# 进入 webapps
cd webapps

# 查看内容是否有项目
ls

# 发现问题,命令少了,webapps没有项目(因为阿里云的原因,默认是最小的镜像,把不必要的都提除掉。)
#解决问题:把webapp.dist/*的文件复制到webapps中即可
cd -r wabapps.dist/* webapps

可视化

  • portainer

    docker run -d -p 8088:9000 \
    > --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
    
    # 访问外网8088
    

Docker镜像讲解

镜像是什么

​ 镜像是一种轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含某个软件需要的所有内容,包括代码,运行时、库、环境变量和配置文件

所有的应用,直接打包docker镜像,就可以直接跑起来。

如何得到镜像

  • 从远程仓库下载。
  • 朋友拷贝给你
  • 自己制作镜像DockerFile
commit镜像
# docker commit 提交容器成为新版本

#命令和git一致
docker commit -m "提交的描述信息" -a="作者" 容器ID 目标镜像名,[TAG]

实战测试

#启动tomcat
docker run -d -p 8888:8080 tomcat

#进入tomcat
docker exec -it ID /bin/bash

# 将webapps.dist包下复制到webapps文件下
cp -r webapps.dist/* webapps/

# 将修改好的镜像提交到本地。
docker commit -m="提交信息" -a="作者" 容器ID 目标镜像名 【TAG】

#启动commit的镜像
docker run -d -p 宿主端口:8080 目标镜像名:[TAG]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值