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


删除镜像:

[root@izwz9it79rawg1924174lkz ~]# docker images

REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE

zulip/docker-zulip   latest              00da4620a549        6 weeks ago         1.58GB

[root@izwz9it79rawg1924174lkz ~]# docker rmi 00da4620a549


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)


$ docker ps // 查看所有正在运行容器

$ docker stop containerId // containerId 是容器的ID


$ docker ps -a // 查看所有容器

$ docker ps -a -q // 查看所有容器ID


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

$ docker  rm $(docker ps -a -q) //   remove删除所有容器


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


使用 docker save 命令根据 ID 将镜像保存成一个文件。

1
docker save 0fdf2b4c26d3 > hangge_server.tar


还可以同时将多个 image 打包成一个文件,比如下面将镜像库中的 postgres 和 mongo 打包:

1
docker save -o images.tar postgres:9.6 mongo:3.4


13. docker-composer的安装与使用:

- sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

- pip install docker-compose

理解docker-compose.yml的结构,使用下面的命令启动或停止;

$ sudo docker-compose up -d

$ sudo docker-compose -f ./compose/docker-compose.yml -p myapp up -d

$ sudo docker-compose down

呱牛笔记

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