为了账号安全,请及时绑定邮箱和手机立即绑定

请教一下各位,该如何将docker容器中的镜像跑在服务器上?

/ 猿问

请教一下各位,该如何将docker容器中的镜像跑在服务器上?

一只萌萌小番薯 2019-11-11 13:09:12

如何将docker容器中的镜像跑在服务器上


查看完整描述

3 回答

?
慕斯卡3215842

步骤1:为我们的容器创建第一个镜像
# 以 centos 镜像作为基础镜像,我们启动自己的容器并在其中执行/bin/bash命令
# 注:-t -i 参数用于创建一个虚拟的命令行。
sudo docker run -t -i centos /bin/bash
现在我们已经成功的运行了自己的第一个容器,并且进入到容器的命令行界面中。在容器中,我们执行下面的命令:

yum -y update # 更新软件包
yum install which # 安装which命令
yum install git # 安装Git

安装完成后,按 Ctrl + d 来退出容器的命令行。
# 执行sudo docker ps -a,可以看到被我们终止的容器
CONTAINER ID IMAGE COMMAND CREATED……
da9031d3568f centos:6.4 /bin/bash 5 minutes ago…..
把我们所做的改变提交到一个新的容器:
# 这里我们创建一个自己的基础容器,容器中安装好了文章中所需的常用工具。读者的容器 id 可能与文章中的有所不同,以上一步 docker ps -a 的结果为准。
sudo docker commit da90 custom/base
容器成功提交后,执行 sudo docker images ,我们会看到刚才提交的容器(如下面的结果所示)。我们就以这个容器为基础容器,再来创建一个新的容器。
REPOSITORY TAG IMAGE ID CREATED
custom/base latest 05b6cecd370b 2 minutes ago
centos 6.4 539c0211cd76 10 months ago
centos latest 539c0211cd76 10 months ago…
步骤2:创建新的容器,并安装 apache
# 以 custom/base 容器为基础,运行一个新的容器。

sudo docker run -t -i custom/base /bin/bash

# 安装 httpd

yum install httpd

步骤3:再次提交新的容器
按 Ctrl + d 来退出容器的命令行,然后执行命令:
# 这个命令会把步骤2中我们安装 httpd 带来的改变提交到新的名为 custom/httpd 的容器镜像中。你的容器 id 可能会和文章中有所不同,以 sudo docker ps -a 命令的结果为准。

sudo docker commit aa6e2fc0b94c custom/httpd

你应该已经发现了,我们创建了一个带有 http 服务器并可以复用的容器镜像。你可以根据这种思想,为自己所需的每个组件都创建一个容器,然后把这些容器复用于开发环境或者生产环境。
步骤7:运行 http 服务器
# -v will Mount a volume from VM to the container which was also shared from host to Vagrant VM.
# -v 参数把主机共享给虚拟机的一个卷挂载到容器中
# -p forward VM port 80 to container port 80; VM port 80 is mapped to host port 8080 in Vagrantfile
# -p 参数把虚拟机的80端口映射到容器的80端口;虚拟机的80端口在 Vagrantfile 中被绑定到主机的8080端口,也就是:主机8080->虚拟机80->容器80
sudo docker run -t -i -p 80:80 -v /vagrant/htdocs:/var/www/html custom/httpd /bin/bash
# 启动 Apache
apachectl -k start



查看完整回答
反对 回复 2019-11-24
?
烧仙草VB

初次安装部署好docker后,大多数镜像可以从DockerHub 提取,但是大多数人都希望自己可以完全自定义一个镜像,那么这里需要一个第三方工具 febootstrap   epel6的源提供febootstrap的RPM包   yum install docker-io febootstrap -y   service docker start   chkconfig docker --level35 on 复制代码  制作CentOS6.6镜像目录   febootstrap -i yum -i iputils -i iproute -i bash -i vim-minimal -i coreutils -i tar -i net-tools centos6 base    -u 复制代码  -i 表示镜像里面安装的RPM包(包括一些人为有必要的软件包)   centos6 表示镜像的版本说明   base 表示生成的镜像目录   后面之后了系统安装源和更新源为USTC   安装执行后,会开始一系列的RPM包下载安装,过程与yum类似,安装完成后当前目录会多了base目录,里面就是一个镜像的系统文件   进入base目录等于进入镜像的根目录   [root@image ~]# cd base/   [root@image base]# ls   bin boot dev etc home lib lib64 media mnt opt proc root sbin selinux ...

查看完整回答
反对 回复 2019-11-24
?
吃鸡游戏

1.先下载centos镜像
[root@docker ~]# docker pull centos
2.启动容器并进行配置
启动容器,
[root@docker ~]# docker run -it -d --name test-centos1 centos
d72250ecaa5e3e36226a1edd749f494d9f00eddc4143c81ac3565aa4e551791a
命令注释:-it : 进行交互式操作
-d : 等同于 -d=true,容器将会在后台运行,不然执行一次命令后,退出后,便是exit状态了。
--name : 容器启动后的名字,默认不指定,将会随机产生一个名字。或者使用 -name="containers_name"
centos:使用的镜像名称
进入容器,安装ssh server,以及配置开机启动
[root@docker ~]# docker exec -it test-centos1 /bin/bash
[root@d72250ecaa5e /]# ifconfig
bash: ifconfig: command not found
注:命令最后参数 /bin/bash: 指进入容器时执行的命令(command)
我们检查了下容器,暂时安装以下必用的软件吧 net-tools,openssh-server
[root@d72250ecaa5e /]# yum install openssh-server net-tools -y
创建ssh 所需的目录,并在根目录创建sshd 启动脚本
复制代码
[root@d72250ecaa5e /]# mkdir -pv /var/run/sshd
mkdir: created directory '/var/run/sshd'
[root@d72250ecaa5e /]# cat /auto_sshd.sh
#!/bin/bash
/usr/sbin/sshd -D
[root@d72250ecaa5e /]# chmod +x /auto_sshd.sh
复制代码
修改容器内root 的账户密码
[root@d72250ecaa5e /]# echo "root:iloveworld" | chpasswd
生成ssh 主机dsa 密钥(不然ssh 该容器时,会出现错误。)
[root@d72250ecaa5e /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
[root@d72250ecaa5e /]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
我们加一个history记录的时间功能吧,这样方便后期查看
echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/profile
OK,配置基本完毕咯。清理命令历史纪录,之后退出容器。现在可以生成一个新的docker 镜像了。

3.配置完成后,进行打包成新的镜像
复制代码
[root@docker ~]# docker commit test-centos1 centos_sshd:7.0
sha256:6e3330b30dfff5f029f102874e54cfffffbc37dcf2a4eb7304c817148fbc944d
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_sshd 7.0 6e3330b30dff 8 seconds ago 310.1 MB
docker.io/ubuntu latest e4415b714b62 12 days ago 128.1 MB
复制代码
命令注释:commit: 提交一个具有新配置的容器成为镜像,后面跟容器的name 或者容器Id ,最后是生成新镜像的名字
更新:这条命令更方便以后启动,如下:
[root@docker ~]# docker commit --change='CMD ["/auto_sshd.sh"]' -c "EXPOSE 22" test-centos1 centos_sshd:7.0
sha256:7bb4efd82c4ff1f241cbc57ee45aab1b05d214b1e9fcd51196696c67d480e70b
命令注释: --change : 将后期使用此镜像运行容器时的命令参数、开放的容器端口提前设置好。



查看完整回答
反对 回复 2019-11-24
  • 3 回答
  • 0 关注
  • 148 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信