admin 管理员组文章数量: 887021
文末有福利领取哦~
👉一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉二、Python必备开发工具
👉三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉 四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化学习资料的朋友,可以戳这里获取
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
2.1.1 查看内核版本
uname -r
2.1.2 查看系统信息
sudo cat /etc/os-release
2.2 卸载旧的版本
sudo apt-get remove docker docker-engine docker.io containerd runc
2.3 安装必要的包
2.3.1 更新apt程序包索引
sudo apt-get update
2.3.2 安装必要的包
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
2.4 添加GPG密钥
curl -fsSL https://download.docker/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
上面是官网提供的,但是速度很慢,建议使用阿里云的GPG Key。
curl -fsSL https://mirrors.aliyun/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
2.5 添加稳定Docker-ce软件源
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker/linux/ubuntu \
$(lsb\_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
上面是官网提供的,但是速度很慢,建议使用阿里云提供的。
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun/docker-ce/linux/ubuntu \
$(lsb\_release -cs) stable"
注意:添加错了可以用以下命令删除
#查询keyid,下图
sudo apt-key list
#keyid 就是9DC8那一串
sudo apt-key del <keyid>
#加参数-r可以移除
sudo add-apt-repository -r "deb [arch=amd64] https://download.docker/linux/ubuntu $(lsb\_release -cs) stable"
2.6 安装Docker引擎
2.6.1 安装apt包索引
这样就可以安装Docker Engine和containerd的最新版本
sudo apt-get update
2.6.2 安装
sudo apt-get install docker-ce docker-ce-cli containerd.io
如果要安装指定版本的Docker引擎,在repo中列出可用版本,然后选择安装
apt-cache madison docker-ce
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
2.7 添加当前用户到 docker 用户组
添加后,以后就可以不用 sudo 运行 docker 了。
- 将当前用户添加到 docker 组
sudo gpasswd -a ${USER} docker
- 重新登录或者用以下命令切换到docker组(建议重启Ubuntu)
newgrp - docker
- 重启docker服务
sudo service docker restart
- 不加sudo直接执行docker命令检查效果
docker ps
2.8 测试是否安装成功
首先启动Docker
systemctl start docker
查看Docker版本来判断是否安装成功
docker version
2.9 配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://eko3tl65.mirror.aliyuncs"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3. Docker run 运行流程图
4. Docker工作原理
Docker是一个Client·Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问,DockerServer接受到DockerClient的指令,就会去执行这个指令。
5. Docker常见命令
5.1 帮助命令
# 显示docker的版本信息
docker version
# 显示docker的系统信息 包括镜像和容器的数量
docker info
# 帮助命令
docker 命令 --help
帮助文档地址:官方文档
5.2 镜像命令
5.2.1 docker images
查看所有本地的主机上的镜像
malulu@malulu:~/桌面$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 519e12e2a84a 4 days ago 133MB
hello-world latest d1165f221234 5 weeks ago 13.3kB
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像的创建时间
SIZE 镜像的大小
# 可选项
-a, --all # 列出所有镜像
-q, --quiet # 只显示镜像的ID
5.2.2 docker search
搜索镜像
# 可选项
--filter=STARS=3000 # 搜索出来的镜像就是STARS大于3000的
5.2.3 docker pull
下载镜像
# 下载镜像
docker pull 镜像名[:tag]
malulu@malulu:~/桌面$ docker pull mysql
Using default tag: latest # 如果不写tag(版本) 默认就是latest
latest: Pulling from library/mysql
f7ec5a41d630: Already exists # 分层下载 docker image的核心 联合文件系统
9444bb562699: Pull complete
6a4207b96940: Pull complete
181cefd361ce: Pull complete
8a2090759d8a: Pull complete
15f235e0d7ee: Pull complete
d870539cd9db: Pull complete
5726073179b6: Pull complete
eadfac8b2520: Pull complete
f5936a8c3f2b: Pull complete
cca8ee89e625: Pull complete
6c79df02586a: Pull complete
Digest: sha256:6e0014cdd88092545557dee5e9eb7e1a3c84c9a14ad2418d5f2231e930967a38 # 签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址
# 下面两条命令等价
docker pull mysql
docker pull docker.io/library/mysql:latest
# 指定版本下载 必须在仓库有这个版本
malulu@malulu:~/桌面$ docker pull mysql:5.7
5.7: Pulling from library/mysql
f7ec5a41d630: Already exists
9444bb562699: Already exists
6a4207b96940: Already exists
181cefd361ce: Already exists
8a2090759d8a: Already exists
15f235e0d7ee: Already exists
d870539cd9db: Already exists
7310c448ab4f: Pull complete
4a72aac2e800: Pull complete
b1ab932f17c4: Pull complete
1a985de740ee: Pull complete
Digest: sha256:e42a18d0bd0aa746a734a49cbbcc079ccdf6681c474a238d38e79dc0884e0ecc
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
5.2.4 docker rmi
删除镜像
# 删除指定的镜像
docker rmi -f 镜像ID
# 删除多个镜像
docker rmi -f 镜像ID 镜像ID 镜像ID 镜像ID
# 删除全部镜像
docker rmi -f $(docker images -aq)
5.3 容器命令
说明:我们有了镜像才可以创建容器。
这里下载一个centos镜像来测试学习。
docker pull centos
5.3.1 新建容器并启动
docker run [可选参数] image
# 参数说明
--name="Name" # 容器名字 mysql01 mysql02 用来区分容器
-d # 后台方式运行
-it # 使用交互方式运行(需要提供一个控制台) 进入容器查看内容
-p # 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口 (常用)
-p 容器端口
容器端口
-P # 随机指定端口
# 测试
# 启动并进入容器
malulu@malulu:~/桌面$ docker run -it centos /bin/bash
[root@a8d9ce9627a4 /]# ls # 查看容器内的centos 基础镜像 很多命令都是不完善的
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
# 从容器中退回主机
[root@a8d9ce9627a4 /]# exit
exit
malulu@malulu:~/桌面$
5.3.2 列出所有的运行的容器
# 列出当前正在运行的容器
docker ps
# 可选项
-a # 列出当前正在运行的容器 + 历史运行过的容器
-n=? # 显示最近创建的n个容器
-q # 只显示容器的编号
5.3.3 退出容器
exit # 直接停止容器并退出
ctrl+P+Q # 容器不停止退出
5.3.4 删除容器
# 删除指定的容器 不能删除正在运行的容器 强制删除用rm -f
docker rm 容器ID
# 删除所有的容器
# 方式一 常用
docker rm -f $(docker ps -aq)
# 方式二
docker ps -a -q|xargs docker rm
5.3.5 启动和停止容器的操作
docker start 容器ID # 启动容器
docker restart 容器ID # 重启容器
docker stop 容器ID # 停止当前正在运行的容器
docker kill 容器ID # 强制删除当前容器
5.4 常见其他命令
5.4.1 后台启动容器
# 后台启动容器
docker run -d 镜像名
# 比如 后台启动centos
docker run -d centos
# 问题 docker ps 时 发现 centos 停止了
# 常见的坑:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
# 比如nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
5.4.2 查看日志
docker logs -f -t --tail number 容器ID
# 可选项
-tf # 显示日志
--tail number # 要显示日志条数
# 自己编写一段shell脚本
docker run -d centos /bin/sh -c "while true;do echo 666;sleep 1;done"
5.4.3 查看容器中进程信息
docker top 容器ID
5.4.4 查看镜像的元数据
docker inspect 容器ID
5.4.5 进入当前正在运行的容器
我们通常容器都是使用后台方式运行的,有时需要进入容器,修改一些配置
# 方式一
# 命令
docker exec -it 容器ID bashShell
# 测试
malulu@malulu:~/桌面$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9ff3b9c7ebd5 centos "/bin/sh -c 'while t…" 8 seconds ago Up 6 seconds lucid_wright
malulu@malulu:~/桌面$ docker exec -it 9ff3b9c7ebd5 /bin/bash
[root@9ff3b9c7ebd5 /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@9ff3b9c7ebd5 /]#
# 方式二
docker attach 容器ID
# 测试
malulu@malulu:~/桌面$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9ff3b9c7ebd5 centos "/bin/sh -c 'while t…" 8 minutes ago Up 8 minutes lucid_wright
malulu@malulu:~/桌面$ docker attach 9ff3b9c7ebd5
666
666
666
666
666
666
# docker exec # 进入容器后开启一个新的终端 可以在里面操作(常用)
# docker attach # 进入容器正在执行的终端 不会启动新的终端
5.4.6 从容器内拷贝文件到主机
注意:是从容器内拷贝到主机。
docker cp 容器Id:容器内路径 目的的主机路径
只要容器存在就可以,跟容器是否运行没有关系。
拷贝是一个手动过程,后面我们使用 -V
数据卷的技术,可以实现自动同步。
5.4.5 小结
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes
6. 实战
6.1 部署Nginx
第一步:搜索镜像,建议去DockerHub搜索,可以看到帮助文档
https://registry.hub.docker/search?q=nginx&type=image
第二步:拉取镜像
malulu@malulu:~/桌面$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
f7ec5a41d630: Already exists
aa1efa14b3bf: Pull complete
b78b95af9b17: Pull complete
c7d6bca2b8dc: Pull complete
cf16cd8e71e0: Pull complete
0241c68333ef: Pull complete
Digest: sha256:75a55d33ecc73c2a242450a9f1cc858499d468f077ea942867e662c247b5e412
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
malulu@malulu:~/桌面$
第三步:运行测试
# -d 后台运行
# --name 给容器命名
# -p 宿主机端口:容器内部端口
malulu@malulu:~/桌面$ docker run -d --name nginx01 -p 3344:80 nginx
699b9cecd0a07f8db6e888722a2dada1c9b9be6d77efc7996c4b6758dd72f587
malulu@malulu:~/桌面$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
699b9cecd0a0 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:3344->80/tcp nginx01
malulu@malulu:~/桌面$ curl localhost:3344
# 进入容器
malulu@malulu:~/桌面$ docker exec -it nginx01 /bin/bash
root@699b9cecd0a0:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@699b9cecd0a0:/# cd /etc/nginx/
root@699b9cecd0a0:/etc/nginx# ls
conf.d fastcgi_params koi-utf koi-win mime.types modules nginx.conf scgi_params uwsgi_params win-utf
root@699b9cecd0a0:/etc/nginx# exit
第四步:公网访问
6.2 端口暴露(端口转发)
6.3 部署Elasticsearch
# es 暴露的端口很多
# es 十分的耗内存
# es 数据一般需要放置到安全目录 挂载
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
# --net somenetwork 网络配置
# 启动 Elasticsearch
docker run -d --name elasticsearch01 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.12.0
# 启动之后,服务器会特别卡
# 所以需要增加内存的限制
# 修改配置文件 -e 环境配置修改
docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES\_JAVA\_OPTS="-Xms64m -Xmx512m" elasticsearch:7.12.0
# 查看CPU使用情况
docker stats 容器ID
# 测试es是否安装成功
curl localhost:9200
6.4 可视化
- Portainer
Docker图形化界面管理工具,提供一个后台面板供我们操作。
访问测试:
http://192.168.2.143:8088
http://localhost:8088
为用户 admin 设置密码 admin123456
登录成功后,选择本地Docker环境
进入之后的面板
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化学习资料的朋友,可以戳这里获取
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
dnimg/img_convert/0c62acab062c83c7844f0d0f629a8027.png)
# 测试es是否安装成功
curl localhost:9200
6.4 可视化
- Portainer
Docker图形化界面管理工具,提供一个后台面板供我们操作。
访问测试:
http://192.168.2.143:8088
http://localhost:8088
为用户 admin 设置密码 admin123456
登录成功后,选择本地Docker环境
进入之后的面板
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化学习资料的朋友,可以戳这里获取
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
版权声明:本文标题:Python开发加薪利器之Docker的使用_docker python 免费开发工具(2) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726377320h948187.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论