1、安装docker

每台机器上执行下面的命令

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭selinux
# 永久关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config  
# 临时关闭
setenforce 0  

# 关闭swap
# 临时
swapoff -a 
# 永久关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab

# 根据规划设置主机名【master节点上操作】
hostnamectl set-hostname k8smaster
# 根据规划设置主机名【node1节点操作】
hostnamectl set-hostname k8snode1
# 根据规划设置主机名【node2节点操作】
hostnamectl set-hostname k8snode2

# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.129.150 k8s-master
192.168.129.151 k8s-node1
192.168.129.152 k8s-node2
EOF


# 所有虚拟机将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 生效
sysctl --system  

# 时间同步
yum install ntpdate -y
ntpdate time.windows.com

安装Docker

首先配置一下Docker的阿里yum源

cat >/etc/yum.repos.d/docker.repo<<EOF
[docker-ce-edge]
name=Docker CE Edge - \$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/\$basearch/edge
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF

然后yum方式安装docker

# yum安装
yum -y install docker-ce

# 查看docker版本
docker --version  

# 启动docker
systemctl enable docker
systemctl start docker

配置docker的镜像源

    cat >> /etc/docker/daemon.json << EOF
    {
      "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
    }
    EOF

重启docker

    systemctl restart docker

2、拉取镜像

# 拉取镜像
docker search pytorch

# 下载镜像
docker pull mysql

# 指定版本
docker pull mysql:5.7

# 删除镜像
docker rmi -f 镜像id # 删除单个
docker rmi -f 镜像名:tag 镜像名:tag # 删除多个
docker rmi -f $(docker images -qa) # 删除全部

根据镜像创建容器

docker run -it [镜像名] /bin/bash

# 常用参数说明
--name="Name" # 给容器指定一个名字
-d # 后台方式运行容器,并返回容器的id!
-i # 以交互模式运行容器,通过和 -t 一起使用
-t # 给容器重新分配一个终端,通常和 -i 一起使用
-P # 随机端口映射(大写)
-p # 指定端口映射(小结),一般可以有四种写法
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort (常用)
containerPort

退出容器

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

 删除容器

docker rm 容器id # 删除指定容器
docker rm -f $(docker ps -a -q) # 删除所有容器
docker ps -a -q|xargs docker rm # 删除所有容器

运行已经停止的容器

docker start [容器id]
docker attach [容器id]

进入正在运行的容器

# 命令1
docker exec -it 容器id bashShell
# 测试1
[root@kuangshen ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
c8530dbbe3b4 centos "/bin/sh -c 'while t…" 12 minutes
ago Up 12 minutes happy_chaum
[root@kuangshen ~]# docker exec -it c8530dbbe3b4 /bin/bash
[root@c8530dbbe3b4 /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:43 ? 00:00:00 /bin/sh -c while true;do
echo kuangshen;sleep
root 751 0 0 08:56 pts/0 00:00:00 /bin/bash
root 769 1 0 08:56 ? 00:00:00 /usr/bin/coreutils --
coreutils-prog-shebang=s
root 770 751 0 08:56 pts/0 00:00:00 ps -ef
# 命令2
docker attach 容器id
# 测试2
[root@kuangshen ~]# docker exec -it c8530dbbe3b4 /bin/bash
[root@c8530dbbe3b4 /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:43 ? 00:00:00 /bin/sh -c while true;do
echo kuangshen;sleep
root 856 0 0 08:57 pts/0 00:00:00 /bin/bash
root 874 1 0 08:57 ? 00:00:00 /usr/bin/coreutils --
coreutils-prog-shebang=s
root 875 856 0 08:57 pts/0 00:00:00 ps -ef
# 区别
# exec 是在容器中打开新的终端,并且可以启动新的进程
# attach 直接进入容器启动命令的终端,不会启动新的进程

python安装库

国内的pip源
阿里云:https://mirrors.aliyun.com/pypi/simple/ 
清华:https://pypi.tuna.tsinghua.edu.cn/simple 
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 
华中理工大学:http://pypi.hustunique.com/ 
山东理工大学:http://pypi.sdutlinux.org/ 
豆瓣:http://pypi.douban.com/simple/ 

pip3 install 库名 -i 镜像地址

pip3 install django-excel -i https://mirrors.aliyun.com/pypi/simple/

3、将程序从主机拷贝到容器

[root@k8s-master ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ad135fd192c7        pytorch/pytorch     "/bin/bash"         7 minutes ago       Up 7 minutes                            tianjin_scenario
[root@k8s-master ~]# docker inspect -f   '{{.Id}}' ad135fd192c7
ad135fd192c743ad35f06b6510a49720846288e74a02498648515ca40d003aa6
[root@k8s-master ~]# ^C
[root@k8s-master ~]# cd
[root@k8s-master ~]# ls
anaconda-ks.cfg  version
[root@k8s-master ~]# cd/root
-bash: cd/root: No such file or directory
[root@k8s-master ~]# ls
anaconda-ks.cfg  tianjin_scenario  version
[root@k8s-master ~]# docker cp tianjin_scenario ad135fd192c743ad35f06b6510a49720846288e74a02498648515ca40d003aa6:/home

删除文件夹
rm -rf XXX

4、容器id打包镜像

[root@k8s-master ~]# docker commit -m "tianjin_scenario" -a "maozhihang" ad135fd192c7 tianjin_scenario:1.0
sha256:2df08b11649a942a375b060d13b4f8ba9d8358f3929a8d1460d1d98ec1233f2d
[root@k8s-master ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tianjin_scenario    1.0                 2df08b11649a        15 seconds ago      6.39GB
pytorch/pytorch     latest              c3f17e5ac010        11 months ago       6.26GB


# 将打包的镜像储存为tar
docker save -o tianjin_scenario_1.0.tar tianjin_scenario:1.0


# 解压镜像
docker load -i pythonml1.0.tar  # 将打包后的镜像传到node,并在node解压镜像

5、镜像运行脚本

使用步骤
# 导入本地镜像
docker load -i tianjin_scenario_1.0.tar
# 根据镜像创建容器
docker run -it --name="run_tianjin_scenario" tianjin_scenario:1.0 /bin/bash
# cd到程序所在文件夹
cd /home/tianjin_scenario
# 执行接口程序
python scenario_generation_flask.py

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐