docker安装流程这里不详细介绍,可参考另一篇文章:
https://blog.csdn.net/weixin_38642130/article/details/88344209
$ 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 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)
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 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
参考链接:
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/