Docker初次使用笔记

Docker容器技术绝对是运营同学的福音,不需要重复在安装系统、业务,构建环境等体力活间消耗宝贵的青春!


1、安装docker;

在线安装:curl -fsSL https://get.docker.com/ | sh


2、配置docker镜像包和容器存储所在的路径,否则到后面突然发现容器空间不够了就麻烦了,修改方法网上有多种,以centos系统为例,建议是直接添加一个daemon.json配置文件进行修改:

[root@abc~]# cat /etc/docker/daemon.json

{

"graph": "/mnt/docker/data",   //路径配置为你系统内中磁盘空间最大的路径

"log-driver": "json-file",

"exec-opts":["native.cgroupdriver=systemd"]

}

[root@abc~]#


3、搜索你需要的基础镜像包,然后安装:

[root@abc data]# docker search centos

NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED

centos                             The official build of CentOS.                   5911                [OK]        

安装:docker pull centos

安装完成后使用 docker images查看该镜像:

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE

kecikeci/centos7.2-tools   latest              7e7d21d26e64        22 months ago       584MB


4、创建容器,启动镜像:

> 准备好网络

docker network ls 查看网络,默认只有bridge、host、none三种网桥,创建容器时默认使用bridge

创建自定义IP段和子网掩码的网桥

docker network create --subnet=172.72.0.0/24 mynetwork 

> 运行

docker run -d  --net mynetwork --ip 172.72.0.2  -p 50001:22  -p 443:443 -p 5060:5060  -p 80:80  -p 8081:8081  --name ov500  -ti 7e7d21d26e64

使用 docker ps检查启动状态:

CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                   NAMES

d2d152ebe6fe        7e7d21d26e64        "/usr/sbin/sshd -D"   56 seconds ago      Up 55 seconds       0.0.0.0:50001->22/tcp   ov500

进入该容器后修改root的初始密码:

docker exec -i ov500 /bin/sh

passwd root #修改root的,默认密码



5、使用当前ip和50001端口远程连接到你的镜像;


6、重新启停容器;

docker start ov500

docker stop ov500

docker restart ov500

停止所有容器:docker stop $(docker ps -q)


7、删除所有容器;

docker container rm $(docker ps -aq)


8、将容器打包成本地镜像,后续可以作为环境包输出使用;

docker commit -m  "package container to image."   -a  "john"   d2d152ebe6fe john-centos:7.2

解释:docker commit -m  "[镜像描述]"   -a  "[作者]"   [容器ID]  [镜像名称]:[镜像tag] 


9、Docker中无法使用 systemd(systemctl) 相关命令的原因是 1号进程不是 init ,而是其他例如 /bin/bash ,所以导致缺少相关文件无法运行。(System has not been booted with systemd as init system (PID 1). Can't operat),以特权模式启动,支持运行systemctl服务:

CentOS的容器:

# docker run -d -name centos7 --privileged=true centos:7 /usr/sbin/init

进入容器:

# docker exec -it centos7 /bin/bash

这样可以使用systemctl启动服务了。

 

Ubuntu的容器:

docker run -tid --name test --privileged=true ubuntu:18.04 /sbin/init

docker exec -it test /bin/bash

PS:--privilaged=true一定要加上的。


10、修改容器启动命令:

docker container update --privileged=true 容器名字


报错:Docker 启动时报错:iptables:No chain/target/match by the name ;要解决这个问题,只要重启docker服务,之后,正确的iptables规则就会被创建出来


11、给docker容器配置固定IP,需要将宿主机网卡配置为网桥模式,然后给容器配置和宿主机同网段的ip,详细可以baidu参考使用pipework给容器配固定ip;

 pipework br0 ov500_fs1 11.12.117.201/20@11.12.117.68


12、复制镜像和复制容器都是通过保存为新镜像而进行的。

具体为:

保存镜像

docker save ID > xxx.tar

docker load < xxx.tar

保存容器

docker export ID >xxx.tar

docker import xxx.tar containr:v1

然后再docker run -it containr:v1 bash


呱牛笔记

请先登录后发表评论
  • 最新评论
  • 总共0条评论