docker安装
- 查看官网(https://docs.docker.com/get-docker),根据系统版本安装。
-
删除老版本
sudo apt-get remove docker docker-engine docker.io containerd runc
-
设置储存库
sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
-
添加官方秘钥
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
-
授权docker并更新apt
sudo chmod a+r /etc/apt/keyrings/docker.gpg sudo apt-get update
-
安装最新docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
-
试运行
sudo docker run hello-world
docker卸载
-
卸载应用
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
-
删除目录
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
-
默认路径
/var/lib/docker
更换docker源
-
登录阿里云平台(支付宝就能登录)
-
找到容器镜像服务
控制台-产品与服务-弹性计算-容器镜像服务 -
找到镜像加速器
容器镜像服务-镜像工具-镜像加速器 -
找到相关文档,配置使用
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://*********.mirror.aliyuncs.com"] # 这里的地址每个人都有自己的 } EOF sudo systemctl daemon-reload sudo systemctl restart docker
Docker的常用命令
帮助命令
-
查看信息
docker version # 显示docker版本信息 docker info # 显示docker的系统信息,包括镜像和容器的数量 docker 命令 --help # 帮助命令 例如: docker images --help
- 帮助文档地址:https://docs.docker.com/engine/reference/commandline/docker/
镜像命令
-
查看镜像命令
docker images # 可选项 -a, --all # 列出所有镜像 -q, --quiet 只显示镜像的id
-
搜索镜像
docker search # 可选项 --filter=Stars=3000 # 搜索出来的就是start大于3000的 # 例如搜索星数量大于3000的: root@mediaServer:~# docker search mysql --filter=stars=3000 NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 13622 [OK] mariadb MariaDB Server is a high performing open sou… 5202 [OK]
-
下载镜像
docker pull [:tag] # 例如 root@mediaServer:~# docker pull mysql Using default tag: latest # 不写 tag,则默认是 latest (最新版) latest: Pulling from library/mysql 72a69066d2fe: Pull complete # 这里是分层下载,docker image的核心 -联合文件系统 93619dbc5b36: Pull complete # 通过联合文件系统,不同版本间会有相同的分层,相同分层可以共用,极大的节省空间 99da31dd6142: Pull complete 626033c43d70: Pull complete 37d5d7efb64e: Pull complete ac563158d721: Pull complete d2ba16033dad: Pull complete 688ba7d5c01a: Pull complete 00e060b6d11d: Pull complete 1c04857f594f: Pull complete 4d7cfa90e6ea: Pull complete e0431212d27d: Pull complete Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709 # 签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest # 真实地址 # docker pull mysql 等价于 docker pull docker.io/library/mysql:latest # 如果要下载指定版本,将tag换成版本号,版本号需要在docker hub中存在 # docker hub地址 https://hub.docker.com/ # 例如 指定版本号 root@mediaServer:~# docker pull mysql:5.7 5.7: Pulling from library/mysql # 指定的5.7版本 72a69066d2fe: Already exists # 共用分层,不用下载 93619dbc5b36: Already exists 99da31dd6142: Already exists 626033c43d70: Already exists 37d5d7efb64e: Already exists ac563158d721: Already exists d2ba16033dad: Already exists 0ceb82207cd7: Pull complete 37f2405cae96: Pull complete e2482e017e53: Pull complete 70deed891d42: Pull complete Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94 Status: Downloaded newer image for mysql:5.7 docker.io/library/mysql:5.7 # 下载完毕后使用docker images可以查看当前docker拥有镜像 root@mediaServer:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7 c20987f18b13 12 months ago 448MB # 5.7版本mysql mysql latest 3218b38490ce 12 months ago 516MB # 最新版mysql hello-world latest feb5d9fea6a5 15 months ago 13.3kB # 之前测试时下载的镜像
-
删除镜像
docker rmi -f 镜像id # 删除指定容器,rmi中的i理解成image,比较容易记忆 docker rmi -f 镜像id 镜像d 镜像id 镜像id #删除多个镜像 docker rmi -f $(docker images -aq) # 删除全部镜像 # 删除全部镜像 root@mediaServer:~# docker rmi -f $(docker images -aq) #括号中可使用镜像id查询命令 root@mediaServer:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE
容器命令
-
说明:有了镜像后才能创建容器,下载一个centerOS镜像来测试
docker pull centos
-
新建容器并启动
docker run [可选参数] image # 参数说明 --name="Name" 容器名字 tomcat01 tomcat02,用来区分容器 -d 后台方式运行 -it 使用交互方式运行,进入容器查看内容 -p 指定容器的端口 -p 8080:8080 -p ip:主机端口:容器端口 -p 主机端口:容器端口(常用) -p 容器端口 容器端口 -P 随机指定端口 # 例如,启动并进入容器 root@mediaServer:~# docker run -it centos /bin/bash [root@031b6283750a /]# ls # 查看容器内的centos,基础版本,很多容器都是不完善的! bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var # 从容器中退出 [root@f7ac477f37cc /]# exit exit root@mediaServer:/# ls # 这里主机版本是ubuntu,镜像版本centeros,可以看出目录是不一样的 bin boot cdrom dev etc home initrd.img initrd.img.old lib lib64 lost+found media mnt opt proc root run sbin snap srv swapfile sys tmp usr var vmlinuz vmlinuz.old
-
列出所有的运行的容器
# docker ps 命令 --列出当前正在运行的容器 -a # 列出当前正在运行的容器 + 历史运行过的容器 -m=? # 显示最近创建的容器 -q # 只显示容器的编号 # 举例 root@mediaServer:/# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES root@mediaServer:/# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f7ac477f37cc centos "/bin/bash" 8 minutes ago Exited (0) 8 minutes ago naughty_banzai 031b6283750a centos "/bin/bash" 11 minutes ago Exited (130) 9 minutes ago quizzical_merkle
-
退出容器
exit # 直接容器停止并退出 Ctrl + p + Ctrl + q # 容器不停止退出 # 举例 退出不停止 root@mediaServer:/# docker run -it centos /bin/bash [root@39160141a464 /]# root@mediaServer:/#
-
删除容器
docker rm 容器id # 删除指定容器,不能删除正在运行的容器,如果要强制删除添加 -f docker rm (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 镜像名! root@mediaServer:~# docker run -d centos 37d229c7fedaf7d65b83ea19027e9135b9f6eb5e6d545cc94d64dd86724d7c38 root@mediaServer:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES # 问题docker ps,发现centos停止了 # 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止 # nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
-
查看日志
# 启动容器,为了显示日志, -c 后面添加一段可执行的shell脚本 root@mediaServer:~# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done" 88fc27d4690887e96dce9ba923c5fb9e90326292be9fa70e80a3d7520794c8d8 root@mediaServer:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 88fc27d46908 centos "/bin/sh -c 'while t…" 5 seconds ago Up 4 seconds admiring_mendel # 显示日志 docker logs -f -t --tail number 容器id -tf # 显示日志 -tail number # 要显示的日志条数 number 条数 root@mediaServer:~# docker logs -tf --tail 10 88fc27d46908 2022-12-30T01:57:20.130177221Z kuangshen 2022-12-30T01:57:21.134535761Z kuangshen 2022-12-30T01:57:22.140011966Z kuangshen 2022-12-30T01:57:23.145330842Z kuangshen 2022-12-30T01:57:24.148903390Z kuangshen 2022-12-30T01:57:25.154288654Z kuangshen ...
-
查看容器中进程信息
# 命令 docker top 容器id root@mediaServer:~# docker top e1f35e5177e3 UID PID PPID C STIME TTY TIME CMD root 66679 66651 0 10:05 pts/0 00:00:00 /bin/bash
-
查看容器中的元数据
# 命令 docker inspect 容器id # 例如 root@mediaServer:~# docker inspect e1f35e5177e3 [ { "Id": "e1f35e5177e387ea5f8da2f906c686e26a80b4deef458d8a4a0a2271b32ad757", "Created": "2022-12-30T02:05:28.75979358Z", "Path": "/bin/bash", "Args": [], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 66679, "ExitCode": 0, "Error": "", "StartedAt": "2022-12-30T02:05:29.214918372Z", "FinishedAt": "0001-01-01T00:00:00Z" }, ... } ]
-
进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置 # 命令1 docker exec -it 容器id # 例如 root@mediaServer:~# docker exec -it e1f35e5177e3 /bin/sh sh-4.4# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var sh-4.4# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 02:05 pts/0 00:00:00 /bin/bash root 15 0 0 02:18 pts/1 00:00:00 /bin/sh root 22 15 0 02:18 pts/1 00:00:00 ps -ef # 命令2 docker attach 容器id # 例如 root@mediaServer:~# docker attach e1f35e5177e3 [root@e1f35e5177e3 /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var # docker exec # 进入容器后开启一个新的终端,可以在里面操作(常用) # docker attach # 进入容器正在执行的终端,不会启动新的进程
-
从容器内拷贝文件到主机上
# 查看当前主机/home下的文件目录 root@mediaServer:/home# ls administrator kuangshen.java root@mediaServer:/home# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e1f35e5177e3 centos "/bin/bash" 42 minutes ago Up 42 minutes vigilant_leavitt # 进入docker内部 root@mediaServer:/home# docker attach e1f35e5177e3 [root@e1f35e5177e3 /]# cd /home/ [root@e1f35e5177e3 home]# ls # 在home文件夹下新建一个文件 [root@e1f35e5177e3 home]# touch test.java [root@e1f35e5177e3 home]# ls test.java [root@e1f35e5177e3 home]# exit exit # 将文件拷贝出来到主机上 root@mediaServer:/home# docker cp e1f35e5177e3:/home/test.java /home root@mediaServer:/home# ls administrator kuangshen.java test.java root@mediaServer:/home# # 拷贝是一个手动过程,未来我们使用 -v 卷的技术,可以实现同步
镜像
-
镜像是什么
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
所有的应用,直接打包docker镜像,就可以直接跑起来!
如何得到镜像:- 从远程仓库下载
- 朋友拷贝给你
- 自己制作一个镜像DockerFile
-
commit镜像文章来源:https://www.toymoban.com/news/detail-448311.html
1. # 提交容器成为一个新的副本 2. docker commit 3. # 命令和git原理类似 4. docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
如果你想要保存当前容器的状态,就可以通过commit来提交,获得一个镜像,就虚拟机的快照!文章来源地址https://www.toymoban.com/news/detail-448311.html
常用命令小结
- attach 容器id # 进入容器正在执行的终端,不会启动新的进程
- cp # 从容器内拷贝文件到主机上
- Ctrl + p + Ctrl + q # 容器不停止退出
- exec -it 容器id # 进入容器后开启一个新的终端,可以在里面操作(常用)
- exit # 直接容器停止并退出
- images # 查看镜像
- info # 显示docker的系统信息,包括镜像和容器的数量
- inspect 容器id # 查看容器中的元数据
- kill 容器id # 杀掉容器
- logs # 查看容器日志
- ps # 列出所有的运行的容器
- pull [:tag] # 下载镜像
- restart 容器id # 重启容器
- rm 容器id # 删除指定容器
- rmi [镜像id] # 删除镜像
- run [可选参数] 镜像 # 从一个镜像启动容器
- search 镜像名 # 搜索镜像
- start 容器id # 启动一个容器
- stop 容器id # 停止容器
- top 容器id # 查看容器中的进程信息
- version # 显示docker版本信息
参考
- 【狂神说java】Docker教程
https://www.kuangstudy.com/bbs/1552836707509223426
到了这里,关于ubuntu安装、使用docker超级详细的入门教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!