CentOS6.7创建docker容器

docker安装流程这里不详细介绍,可参考另一篇文章:
https://blog.csdn.net/weixin_38642130/article/details/88344209

搭建部署lnmp的docker容器

查找centos6镜像
$ docker search centos6
NAME                                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
imagine10255/centos6-lnmp-php56          centos6-lnmp-php56                              50                   [OK]
lemonbar/centos6-ssh                     Installed openssh-server on centos6, defau...   15                   [OK]
guyton/centos6                           From official centos6 container with full ...   10                   [OK]
mohri1219/centos6.7-ruby2.2.2-mysql5.6   centos6.7-ruby2.2.2-mysql5.6                    4                    [OK]
sergeyzh/centos6-nginx                                                                   3                    [OK]
miko2u/centos6                           CentOS6 日本語環境                                   2                    [OK]
nclans/centos6                                                                           1                    
toolsmiths/centos6-build                                                                 0                    
nodesource/centos6                       The Official NodeSource Docker Images           0                    
prestodb/centos6-oj8                                                                     0                    
pantsbuild/centos6                       Centos6 environment for building pants          0                    
adrianotto/centos6                       CentOS 6 latest, updates with yum update h...   0                    [OK]
sondrelvp/centos6                                                                        0                    
varsy/centos6-nrpe                                                                       0                    [OK]
laitian912/centos6-java8                 Centos 6.6 and Oracle JDK8 with ssh, git 2...   0                    [OK]
tacit/centos6-chef                       Latest Centos6 release with pre installed ...   0                    
signiant/docker-jenkins-centos6-java7                                                    0                    [OK]
mconcas/centos6-autobuild-container                                                      0                    [OK]
ongar/centos6-php5510-lint-cs            centos6 php5510 composer global phplint ph...   0                    [OK]
chrisshort/docker-centos6-ansible        docker-centos6-ansible                          0                    [OK]
pivotaldata/centos6.8-dev                CentosOS 6.8 image for GPDB development         0                    
pivotaldata/gpdb6-centos6-build          CentosOS 6 image for GPDB 6 compilation         0                    
touche/centos6                           Base centos6 container.                         0                    
pivotaldata/gpdb6-centos6-test           CentosOS 6 image for GPDB 6 testing             0                    
toolsmiths/centos6.8-dev                                                                 0                    
下载镜像
$ docker pull guyton/centos6
latest: Pulling from guyton/centos6
3690474eb5b4: Pull complete 
96ead5387d77: Pull complete 
fee59e7492db: Pull complete 
c3e5b96bce6d: Pull complete 
c0e5d9709459: Pull complete 
fbae9b32c6e8: Pull complete 
f74b0e550f27: Pull complete 
Digest: sha256:e132720671b6793c918d81accf6730a542fadd7d91731e2ff9e20df6af2aeebf
Status: Downloaded newer image for guyton/centos6:latest
查看docker镜像
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
guyton/centos6      latest              f74b0e550f27        11 weeks ago        227.9 MB
centos              latest              ab9a80ab07d0        3 months ago        201.8 MB
创建并查看容器
$ docker run --name=web -it --net=bridge -p 80:80 -d guyton/centos6 /bin/bash
92c794ac9de45c76c0c0c8954dc067fe67bd0c5e850c66c7f888d4e877871a04
--name 为container取一个别名
-i表示打开并保持stdout
-t表示分配一个终端
--net 为container指定网络模式
-p 将container的80端口发布到主机的80端口
-d 在后台运行容器并打印容器ID

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                NAMES
92c794ac9de4        guyton/centos6      "/bin/bash"         About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   web      

容器每一次启动都会重新分配地址,然后添加一条 iptables做端口转发,关闭容器,则会把添加的iptables自动删除。
进入容器
$ docker attach 92c794ac9de4
92c794ac9de4是指容器ID,可以使用docker ps查看

[root@92c794ac9de4 /]# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:03  
          inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:468 (468.0 b)  TX bytes:558 (558.0 b)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

docker遇到的问题

挂载目录

1.挂载宿主目录
如果想挂载目录,需在创建容器时指定-v参数,docker可以支持把一个宿主机上的目录挂载到镜像里。

$ docker run --name=NAME -it --net=bridge -p 80:80 -d -v /web:/web IMAGE /bin/bash
通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。

2.远程挂载目录
在创建容器的时候加上–privileged=true参数,默认为false。该参数意思是“授予此容器扩展权限”,不加该参数,挂载为失败。

$ docker run --name=web -it --net=bridge -p 80:80 -d --privileged=true lnmp /bin/bash
[root@92c794ac9de4 /]# yum install -y nfs-utils
[root@92c794ac9de4 /]# mount -t nfs 192.168.0.68:/web /web -o proto=tcp -o nolock
重建网桥

docker启动iptables报错:

在这里插入图片描述

解决办法:重建docker0网络恢复

1、按照进程名杀死docker进程
$ pkill docker
2、清空防火墙规则-清空nat表的所有链
$ iptables -t nat -F
#查看定义规则的详细信息
$ iptables -L -n -v  
3、关闭docker0接口
$ ifconfig docker0 down
4、删除docker0接口
$ brctl delbr docker0
5、重启docker
$ service docker restart 
6、查看是否启用
$ docker ps -a

docker常用命令

查看docker版本
docker version

查看docker信息
docker info

搜索docker镜像
docker search NAME

下载镜像
docker pull NAME

列出所有本地镜像
docker images

删除镜像
docker rmi IMAGE
(用docker rmi删除镜像时,首先删除容器,再删除镜像。)

创建容器,状态是停止
docker create IMAGE

启动/停止容器
docker start/stop CONTAINER_ID
(container_id是容器id,可以通过docker ps -a查看)

创建并启动容器
docker run --name=web -it --net=bridge -p 80:80 -d IMAGE /bin/bash
--name 为container取一个别名
-i表示打开并保持stdout
-t表示分配一个终端
--net 为container指定网络模式
-p 将container的80端口发布到主机的80端口
-d 在后台运行容器并打印容器ID

查看运行中的容器
docker ps
查看所有容器
docker ps -a

进入容器
docker attach CONTAINER_ID
docker exec -it CONTAINER_ID /bin/bash

从容器回到OS
ctrl+p,ctrl+q
(ctrl+d则把容器的进程直接结束掉了)

导出容器为tar包
docker export CONTAINER > ./***.tar
导入tar包为镜像
cat ***.tar | docker import - NAME

从容器内拷贝文件到主机上
docker cp CONTAINER_ID:/web /web

CentOS6.7创建docker容器_第1张图片

参考链接:
1、Docker入门与实战讲解
https://www.cnblogs.com/cxxjohnson/p/8411045.html
2、Docker:网络模式详解
https://www.cnblogs.com/zuxing/articles/8780661.html
3、centos7 docker RPM包下载
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

你可能感兴趣的:(运维)