【虚拟化docker】(一)—对Docker虚拟化容器技术的介绍和操作
关于 Docker
Docker 大家听起来肯定不陌生,由于云原生的爆火现在 Docker 也逐渐映入人们眼帘,那么它是干什么的呢,本篇就给大家介绍一下,然后再说一下 Docker 的一些基本概念。众所周知网站或者桌面 App 的开发需要分工合作,开发岗、测试岗、运维岗、等等。开发岗就是进行软件需求的实现,运维就是负责软件的运行与维护,这两个岗位也是打交道最多的岗位之一,他们是两群人面对的是一个软件同一份代码,但是由于他们所处的环境,他们所拥有的电脑环境不一样,对软件操作起来就显得很鸡肋,比如开发岗张三写了一个软件,让运维岗李四去运行维护,但是他们电脑配置不一样。李四连软件跑都跑不起来。李四就让张三把运行软件需要的配置写出来。张三就不耐烦了,因为运行环境太复杂自己也不知道。于是就产生了矛盾。Docker 最直接的功能就是解决他们的矛盾。利用 Docker 开发岗人员可以直接将软件所处的环境及软件打包一份发给运维岗,运维再使用 Docker 将所需要的环境拉取过来。直接极大地提高了软件的可移植性。有了 Docker 开发岗可以直接变为(开发 + 运维)岗,提高软件的开发效率。
对于 Docker 的介绍可以查看该关于 Docker 的 wiki 词条链接。
Docker 安装
参考 Docker 安装
Mac 切换 docker 镜像源
修改 Preferences->Docker Engine 配置文件,在后面加入:
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
如下
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
},
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn"
]
}
Docker 常用指令
基本命令
1. 运行应用程序
Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。
[root@fuyimin home]# docker run centos /bin/echo "hellow world"hellow world
2. 运行交互式的容器
docker run -it centos /bin/bash
参数解析:
- -t : 在新容器内指定一个伪终端或终端。
- -i : 允许你对容器内的标准输入(STDIN)进行交互。
3. 退出容器命令
exit
4. 后台模式启动容器
[root@fuyimin home]# docker run -d centos /bin/sh -c "while true;do echo hello world;sleep 1 ;done"716fdf9d9ba4ae9008a5c4bf89b8ff8871c8ca8212403a0b445fca30b4ec841c
5. 列出正在运行的容器:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- CONTAINER ID:容器 ID。
- IMAGE: 使用的镜像。
- COMMAND: 启动容器时运行的命令。
- CREATED: 容器的创建时间。
- STATUS: 容器状态。
- PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
- NAMES: 自动分配的容器名称。
状态有 7 种:
- created(已创建)
- restarting(重启中)
- running 或 Up(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
镜像的基本命令
1. 列出镜像
我们可以使用 docker images 来列出本地主机上的镜像。
1. docker images #列出本机上的镜像
[root@fuyimin home]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 7 months ago 209MB# -a , --all 列出所有镜像
# -q , --quiet 只显示镜像的id
各个选项的说明:
- REPOSITORY:表示镜像的仓库源。
- TAG :镜像的标签。
- IMAGE ID :镜像的 ID。
- CREATED :镜像的创建时间。
- SIZE :镜像的大小。
2. 删除镜像
[root@fuyimin home]# docker rmi -f 容器id #删除指定镜像
[root@fuyimin home]# docker rmi -f 容器id 容器id 容器id #删除多个镜像
[root@fuyimin home]# docker rmi -f $(docker images -aq) #删除全部镜像
3. 搜索镜像
[root@fuyimin home]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11205 [OK]
mariadb MariaDB Server is a high performing open sou… 4259 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 833 [OK]
[root@fuyimin home]# docker search mysql --filter=STARS=3000 #按照STARS来过滤
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11205 [OK]
mariadb MariaDB Server is a high performing open sou… 4259 [OK]
- NAME: 镜像仓库源的名称。
- DESCRIPTION: 镜像的描述。
- OFFICIAL: 是否 docker 官方发布。
- stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
- AUTOMATED: 自动构建。
4. 下载镜像
docker pull 镜像名[:tag] #不写tag默认最新
容器的基本命令
注:有了镜像才能创建容器。
1. 下载镜像
docker pull centos #下载一个centos镜像
2. 启动容器
docker run -it centos /bin/bash
参数说明:
- -i: 交互式操作。
- -t: 终端。
- ubuntu: ubuntu 镜像。
- /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
3. 列出所有运行的容器
docker ps #列出当前正在运行的容器-a #列出当前正在运行的容器+带出历史运行过的容器-n=?#显示最近创建的容器-q #只显示容器编号
4. 退出容器
exit #直接退出停止容器ctrl +P +Q #容器不停止退出
5. 删除镜像
docker rm 容器id #删除指定镜像,不能删除正在运行的镜像
docker rm -f $(docker ps -aq) #删除所有镜像
docker ps -a -q |xargs docker rm #删除所有镜像
6. 启动和停止容器操作
docker start 容器id #启动容器docker restart 容器id #重启容器docker stop 容器id #停止当前正在运行的容器docker kill 容器id #强制停止当前容器
7. 后台启动容器
docker run -d 镜像名[root@fuyimin ~]# docker run -d centos
9f7e1269ae08c802cdd8342f6e90367b252cc9a0081fef5745768a09f54fbaf9#docker容器使用后台运行 ,就必须要有一个前台进程,docker发现没有应用,就会自动停止
8. 查看日志
docker logs -f -t --tail 容器# --tf 显示日志# --tail number 要显示日志条数
9. 查看容器中进程信息
docker top 容器id #容器必须启动状态[root@fuyimin ~]# docker top eb21e0562d06
UID PID PPID C STIME TTY TIME CMDroot 11620 11600 0 20:32 pts/0 00:00:00 /bin/bash
10. 查看镜像的元数据
docker inspect 容器id[root@fuyimin ~]# docker inspect eb21e0562d06[{"Id": "eb21e0562d06435a3a1d8e36fe3c0f68b0aa955b1e85327ba86021a1bfb4e9d7","Created": "2021-08-04T12:32:56.680271569Z","Path": "/bin/bash","Args": [],"State": {"Status": "running","Running": true,"Paused": false,
11. 进入当前正在运行的容器
1.docker exec -it 容器id /bin/bash #推荐大家使用,因为此退出容器终端,不会导致容器的停止。[root@fuyimin ~]
# docker exec -it eb21e0562d06 /bin/bash[root@eb21e0562d06 /
2. docker attach 容器id[root@fuyimin ~]# docker attach eb21e0562d06
12. 文件拷贝进主机
docker cp 容器id:/文件目录/文件名 /主机文件目录
参考文档
感悟
相逢恨晚,再也不用为搭环境而扯皮浪费时间了