Docker容器命令部署

网友投稿 244 2022-10-22

Docker容器命令部署

​​ 传送门 ​​

yum install docker-ce docker-ce-cli containerd.io yum install -y docker-ce docker-ce-cli containerd.io

安装指定版本的,首先列出可用的版本有哪些,然后选择并安装

yum makecache #生成仓库缓存

安装docker

yum install docker -y

Start Docker 启动docker

systemctl start docker #启动dockersystemctl enable docker #开机启动dockersystemctl status docker #查看docker状态

# docker run hello-world

# docker version

查看执行过的docker进程:docker ps --all

DaoCloud 加速器 是广受欢迎的 Docker 工具,解决了国内用户访问 Docker Hub 缓慢的问题。DaoCloud 加速器结合国内的 CDN 服务与协议层优化,成倍的提升了下载速度。

yum list installed | grep docker yum -y remove xxxx

2021/2/24

1. 下载docker-ce的repocurl -o /etc/yum.repos.d/docker-ce.repo2. 安装依赖yum install 安装docker-ceyum install docker-ce4. 启动dockersystemctl start docker

不通

备份旧的配置文件mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/ 这里是改为阿里云的wget -O /etc/yum.repos.d/CentOS-Base.repo -o /etc/yum.repos.d/CentOS-Base.repo makecacheyum 包更新到最新yum update

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源yum-config-manager --add-repo ‘–skip-broken’ 来跳过无法安装的软件包 或 ‘–nobest’ 来不只使用最佳选择的软件包)

使用下面命令

yum install -y containerd.io、然后就可以顺利的安装Docker 4、 安装docker,出现输入的界面都按 yyum install -y docker-ce

查看docker版本,验证是否验证成功docker -v

Docker 要求 CentOS 系统的内核版本高于 3.10,可以使用uname -r命令来查看自己的系统内核版本

卸载重装

yum remove docker docker-common docker-selinux docker-engine

安装工具包yum-utils

yum install -y yum-utils

选择国内的源,速度会快一些,此处选择阿里云的

yum-config-manager --add-repo docker 版本

yum list docker-ce --showduplicates | sort -rLoading mirror speeds from cached hostfileLoaded plugins: fastestmirrorInstalled Packagesdocker-ce.x86_64 3:20.10.6-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.6-3.el7 @docker-ce-stabledocker-ce.x86_64 3:20.10.5-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.4-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.3-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.2-3.el7 docker-ce-stable docker-ce.x86_64 3:20.10.1-3.el7 docker-ce-stable...可以从上面中任选一个版本指定安装,将以下替换成对应版本即可

yum install docker-ce- docker-ce-cli- containerd.io

也可以通过不指定版本直接安装最新版

yum install docker-ce docker-ce-cli containerd.io

docker version

运行官方提供的验证镜像helloworld

环境介绍

CentOS7.4 基础服务器版本

Docker

Django 此为docker镜像

Nginx 此为docker镜像

MySQL 此为docker镜像

Docker安装配置

下载安装docker

yum -y install docker vim

启动docker,并设置开机启动

systemctl start dockersystemctl enable docker

下载所需镜像

docker pull centosdocker pull nginxdocker pull mysql # 如果下载别的版本MySQL加写成,如:mysql:5.6

centos镜像进行配置Django

为方便以后使用这里分为SSH和Django两步来做

SSH镜像制作

新建ssh_image文件夹并进入

mkdir -p create_docker_image/ssh_imagecd create_docker_image/ssh_image

新建Dockerfile、run.sh两个文件,并附于run.sh执行权限

touch Dockerfile run.shchmod +x run.sh

run.sh写入内容

vim run.sh

#! /bin/bash/usr/sbin/sshd -D

Dockerfile写入内容

vim Dockerfile

# 设置继承镜像FROM centos:latest# 提供一些作者的信息MAINTAINER wallie@910# 开始运行命令RUN yum install -y openssh-serverRUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_keyRUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_keyRUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_keyRUN sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_configRUN sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config RUN echo "123456" | passwd --stdin rootADD run.sh /run.shEXPOSE 22CMD ["/run.sh"]

温馨提示 注意网络安全by:aming 2021/09/28

创建镜像

docker build -t sshd:centos .

aming 温馨提示 注意后面 有个 什么小东东

aming提醒 sshd 配置 要正确 这一步 会报错

Django镜像制作

“mysite”的项目建议自己提前搭建好,直接拷贝过来用,但针对有路径需要做一些调整

新建django_centos文件夹并进入

cd /aming/.../mkdir -p django_centoscd django_centos

新建Dockerfile、run.sh两个文件,并附于run.sh执行权限

touch Dockerfile run.sh chmod +x run.sh

run.sh写入内容

#! /bin/bash# 同步数据库python manage.py makemigrate --noinputpython manage.py migrate --noinput# uwsgi启动djangouwsgi quwan_app/uwsgi.ini/usr/sbin/sshd -Dtail -f /dev/null

Dockerfile写入内容

# 指定操作的镜像FROM sshd:centos# 指定操作的镜像FROM sshd:centos# 创建文件夹RUN mkdir -p /data/ # 项目存放路径 RUN mkdir -p /data/staticRUN mkdir -p /data/media# 拷贝文件, COPY quwan_app /data/# “mysite” 为你自己的django项目可以自行更改COPY run.sh /data/ #这句指令相当与:cd /data//data/安装软件RUN yum install epel-release -yRUN yum -y install gcc python36 net-toolsRUN yum -y install python36-devel mysql-develRUN ln /usr/bin/python3.6 /usr/bin/python -fRUN cp /usr/bin/yum /usr/bin/yum.bakRUN cp /usr/libexec/urlgrabber-ext-down /usr/libexec/urlgrabber-ext-down.bakRUN cp /usr/bin/yum-config-manager /usr/bin/yum-config-manager.bakRUN sed 's/python/python2/g' /usr/bin/yum.bak > /usr/bin/yumRUN sed 's/python/python2/g' /usr/libexec/urlgrabber-ext-down.bak > /usr/libexec/urlgrabber-ext-downRUN sed 's/python/python2/g' /usr/bin/yum-config-manager.bak > /usr/bin/yum-config-managerRUN pip3 install --upgrade pip -i RUN pip3 install django -i RUN pip3 install django_crontab -i RUN pip3 install pymysql -i RUN pip3 install mysqlclient -i RUN pip3 install uwsgi -i RUN pip3 install cryptography -i EXPOSE 8080RUN sh web_run.sh# linux运行会报错修复#RUN cp /usr/local/lib64/python3.6/site-packages/django/db/backends/mysql/operations.py /usr/local/lib64/python3.6/site-packages/django/db/backends/mysql/operations.py.bak#RUN cp /usr/local/lib64/python3.6/site-packages/django/db/backends/mysql/base.py /usr/local/lib64/python3.6/site-packages/django/db/backends/mysql/base.py.bak#RUN sed 's/query.decode/query.encode/g' /usr/local/lib64/python3.6/site-packages/django/db/backends/mysql/operations.py.bak > /usr/local/lib64/python3.6/site-packages/django/db/backends/mysql/operations.py#RUN sed '35,36d' /usr/local/lib64/python3.6/site-packages/django/db/backends/mysql/base.py.bak > /usr/local/lib64/python3.6/site-packages/django/db/backends/mysql/base.py

准备好项目 目录

创建镜像

docker build -t web:django .

Nginx镜像制作

新建django_nginx文件夹并进入

cdmkdir -p create_docker_image/django_nginxcd create_docker_image/django_nginx

Dockerfile写入内容

# 指定操作的镜像FROM docker.io/nginx# 作者MAINTAINER zhoufan# 系统部署RUN mkdir -p /data/static

创建镜像

docker build -t web:nginx .

MySQL镜像制作

touch Dockerfile setup.shchmod +x setup.sh

Dockerfile写入内容

setup.sh写入内容

#!/bin/bashset -e# 启动mysqlservice mysql start# 用来检测问题echo '导入开始'# 输入数据库project.sqlmysql < /root/project.sqlecho `service mysql status`# 用来检测问题echo '开始修改密码'# 导入数据库privileges.sqlmysql < /root/privileges.sqlecho `service mysql status`tail -f /dev/null

privileges.sql数据库

确认数据库文件开关是否有创建库文件和使用库文件的语句就 是 p r o j e c t . s q l , 前 两 句

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `project` default character set utf8 collate utf8_general_ci;USE `project`;DROP TABLE IF EXISTS `abc`;CREATE TABLE `abc` ( `id` int(11) DEFAULT NULL, `name` varchar(25) DEFAULT NULL, `deptid` int(11) DEFAULT NULL, `salary` float DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;LOCK TABLES `abc` WRITE;UNLOCK TABLES;

privileges.sql数据库

这个库文件是设置本地和远程root帐号和密码的,“test”为密码

use mysql;/*修改root密码*/update user set password=password('test') where user='root' and host='localhost'; /*添加root远程登陆*/grant all privileges on *.* to root@'%' identified by 'test';flush privileges;

三个主程序的镜像已经做完了,可以进行容器运行 容器的启动配置 把启动命令分别写到不同的sh文件中,方便修改

cdmkdir django_runcd django_run

数据库容器启动 配置启动文件start_db.sh

#!/bin/bashdocker run --restart=always -d --name db --privileged=true web:mysql

--restart=always    这是保持容器自动启动--name db       容器的别名改为db --privileged=true   获取mysql容器权限-v          指定映射文件夹,这里指定的是库文件到本地web:mysql      镜像名

运行启动文件

sh start_db.shdocker ps

指定容器为空,请查看最后的命令操作查看错误和删除容器

Django启动

因 为 d j a n g o 与 数 据 库 d b 有 链 接 , 所 以 数 据 库 运 行 成 功 后 , d j a n g o 才 能 运 行 , 不 然 会 报 错

vim start_web.sh

#!/bin/bashdocker run --restart=always -d --name web --link db -p 8000:8000 -v /data/nginx/static/:/data/static web:django

--restart=always    这是保持容器自动启动--name web     容器的别名改为web--link db      指定db的关联,django中连接数据的IP地址可以直接写成“db”-p 8000:8000     映射端口到主机,可不用加-v 挂载web:django     镜像名

运行启动文件

sh start_web.shdocker ps

Nginx启动

因 为 N g i n x 与 d j a n g o 有 链 接 , 所 以 d j a n g o 运 行 成 功 后 , N g i n x 才 能 运 行 , 不 然 会 报 错

vim start_nginx.sh

#!/bin/bashdocker run --restart=always -d --name nginx --privileged=true -p 80:80 -v /data/nginx/conf.d/web.conf:/etc/nginx/nginx.conf -v /data/nginx/logs:/var/log/nginx -v /data/nginx/statc:/data/static --link web web:nginx

--restart=always    这是保持容器自动启动--name web     容器的别名改为nginx--link db      指定django的关联,nginx中连接django的IP地址可以直接写成“web”-p 80:80     映射端口到主机web:django     镜像名

运行启动文件

sh start_nginx.shdocker ps

docker ps 命令查看容器的运行信息

运行容器,并且可以通过 exec 命令进入 容器。

docker images -a

docker rmi

docker rmi REPOSITORY:TAG

docker system prune --volumes

# 杀死所有正在运行的容器.alias dockerkill='docker kill $(docker ps -a -q)'# 删除所有已经停止的容器.alias dockercleanc='docker rm $(docker ps -a -q)'# 删除所有未打标签的镜像.alias dockercleani='docker rmi $(docker images -q -f dangling=true)'# 删除所有已经停止的容器和未打标签的镜像.alias dockerclean='dockercleanc || true && dockercleani'

使用image创建container并进入交互模式, login shell是/bin/bash

docker run -i -t centos:7 /bin/bash

接着终端就是容器中的centos的了,默认是root用户登录,接下来的操作都在容器中了二、容器中安装passwd,openssl,openssh-server

yum install passwd openssl openssh-server -y

安装完成后启动sshd:# /usr/sbin/sshd -D

这时报以下错误:[root@ b3426410ff43 /]# /usr/sbin/sshdCould not load host key: /etc/ssh/ssh_host_rsa_keyCould not load host key: /etc/ssh/ssh_host_ecdsa_keyCould not load host key: /etc/ssh/ssh_host_ed25519_key执行以下命令解决:[root@b3426410ff43 /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' [root@b3426410ff43 /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''[root@b3426410ff43 /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N '' 然后,修改 /etc/ssh/sshd_config 配置信息:UsePAM yes 改为 UsePAM noUsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no可以用vi改,也可以用下面命令[root@b3426410ff43 /]# sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config[root@b3426410ff43 /]# sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config

修改完后,重新启动sshd[root@b3426410ff43 /]# /usr/sbin/sshd -D 然后修改root密码passwd root 或者直接一句修改echo “123456″ | passwd --stdin root 接着需要把修改后的镜像保存了,首先输入exit退出容器,再使用下面命令查看刚运行过的,docker commit将修改后镜像保存到本地,参数是ID,名字#docker ps -allCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb3426410ff43 centos:7 "/bin/bash" 4 minutes ago Exited (0) 4 seconds ago centos7ssh#docker commit b5926410fe60 myimage/centos7-ssh 下次可以输入刚保存的名字启动修改过安装了ssh服务的镜像了。

1、启动所有容器

docker start $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)

2、关闭所有容器

docker stop $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)

3、删除所有容器

docker rm $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)

4、删除所有镜像(慎用)

docker rmi $(docker images | awk ‘{print $3}’ |tail -n +2)

删除docker中的容器可以使用如下命令:

docker rm 容器id

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:火车票查询12306(火车票查询12306下载app)
下一篇:历史车辆违章(历史车辆违章记录查询)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~