Python开发加薪利器之Docker的使用_docker python 免费开发工具(2)

文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

2.1.1 查看内核版本
uname -r

image-20210412204343675

2.1.2 查看系统信息
sudo cat /etc/os-release 

image-20210412204537598

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.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

上面是官网提供的,但是速度很慢,建议使用阿里云的GPG Key。

curl -fsSL https://mirrors.aliyun.com/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.com/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.com/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.com/linux/ubuntu $(lsb\_release -cs) stable"

image-20210412211309428

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

image-20210412212316466

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

image-20210412214628245

2.9 配置阿里云镜像加速
sudo mkdir -p /etc/docker

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

sudo systemctl daemon-reload

sudo systemctl restart docker

3. Docker run 运行流程图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4. Docker工作原理

Docker是一个Client·Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问,DockerServer接受到DockerClient的指令,就会去执行这个指令。

image-20210414200137097

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

搜索镜像

image-20210414210140452

# 可选项
--filter=STARS=3000		# 搜索出来的镜像就是STARS大于3000的

image-20210414210519271

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		# 只显示容器的编号

image-20210415210733210

5.3.3 退出容器
exit	# 直接停止容器并退出
ctrl+P+Q	# 容器不停止退出

image-20210415211353920

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,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

image-20210415214457904

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"

image-20210415222954446

5.4.3 查看容器中进程信息
docker top 容器ID

image-20210415224704528

5.4.4 查看镜像的元数据
docker inspect 容器ID

image-20210415225755698

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 数据卷的技术,可以实现自动同步。

image-20210421215842934

5.4.5 小结

Docker-Command-Diagram

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.com/search?q=nginx&type=image

image-20210422140913754

第二步:拉取镜像

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


image-20210422141708715

第四步:公网访问

image-20210422145139506

image-20210422150021457

6.2 端口暴露(端口转发)

image-20210422143659432

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

image-20210426001139297

# 测试es是否安装成功
curl localhost:9200

image-20210426153149987

6.4 可视化
  • Portainer

Docker图形化界面管理工具,提供一个后台面板供我们操作。

访问测试:

http://192.168.2.143:8088
http://localhost:8088

为用户 admin 设置密码 admin123456

登录成功后,选择本地Docker环境

image-20210426163654688

进入之后的面板

image-20210426163805383

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

dnimg.cn/img_convert/0c62acab062c83c7844f0d0f629a8027.png)

# 测试es是否安装成功
curl localhost:9200

image-20210426153149987

6.4 可视化
  • Portainer

Docker图形化界面管理工具,提供一个后台面板供我们操作。

访问测试:

http://192.168.2.143:8088
http://localhost:8088

为用户 admin 设置密码 admin123456

登录成功后,选择本地Docker环境

image-20210426163654688

进入之后的面板

image-20210426163805383

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值