Alex Guo
文章36
标签33
分类10
docker 启动常用容器命令

docker 启动常用容器命令

redis

docker run -p 6379:6379 -v $PWD/data:/data  -d redis:3.2 redis-server --appendonly yes

命令说明:

-p 6379:6379 : 将容器的6379端口映射到主机的6379端口

-v $PWD/data:/data : 将主机中当前目录下的data挂载到容器的/data

redis-server –appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置

rabbitmq

docker run -d --name rabbitmq --publish 5671:5671  --publish 5672:5672 --publish 4369:4369 --publish 25672:25672 --publish 15671:15671 --publish 15672:15672 rabbitmq

常见启动错误

Cannot start container web: iptables failed: iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 32797

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

pkill docker 
iptables -t nat -F 
ifconfig docker0 down 
brctl delbr docker0 
docker -d 
service docker restart
docker常用命令

docker常用命令

关键字:

  • 镜像 images
  • 镜像名 image_name
  • 镜像id image_id
  • 容器 container
  • 容器名 con_name
  • 容器id con_id

从公网拉取一个镜像

docker pull images_name

查看已有的docker镜像

[root@docker ~]# docker images

查看帮助

docker command --help

查看镜像列表

docker search nginx

启动一个容器

基于hello-world镜像启动一个容器,如果本地没有镜像会从公网拉取过来,这次做为测试用

docker run hello-world

导出镜像

docker save -o image_name.tar image_name

删除镜像

docker rm image_name

启动一个容器

docker run --name=con_name images
# --name  #设置容器名

基于创建好的容器自定义docker镜像

docker commit -m "con_name" con_id image_name

创建一个容器的同时进入这个容器

docker run -it --name=con_name images
# -it     #在启动之后进入这个容器

创建一个容器,放入后台运行,把物理机80端口映射到容器的80端口

docker run -d -p 81:80 image_name

-p 参数说明

-p hostPort:containerPort
-p ip:hostPort:containerPort
-p ip::containerPort
-p hostPort:containerPort:udp

看容器的端口映射情况

docker port con_id

查看正在运行的容器

docker ps 

查看所有的容器

docker ps -a

动态查看容器日志

docker logs -f con_name

进入容器

docker attach con_name

退出容器

方法一

exit

方法二

ctrl+p && ctrl+q (一起按,注意顺序,退出后容器依然保持启动状态)

删除容器

docker rm  con_name

强制删除需要加-f,不加-f不能删除正在运行中的容器,非常危险,最好不用

查看docker网络

[root@docker ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
3f91f2097286        bridge              bridge              local
d7675dbd247c        docker_gwbridge     bridge              local
5b36c7e947fd        host                host                local
ims6qkpikafu        ingress             overlay             swarm
85ba10e7ef79        none                null                local

创建一个docker网络my-docker

docker network create -d bridge \
--subnet=192.168.0.0/24 \
--gateway=192.168.0.100 \
--ip-range=192.168.0.0/24 \
my-docker

利用刚才创建的网络启动一个容器

docker run --network=my-docker --ip=192.168.0.5 -itd --name=con_name -h lb01 image_name

–network #指定容器网络
–ip #设定容器ip地址
-h #给容器设置主机名

查看容器pid

方法一:

docker top con_name

方法二:

docker inspect --format "{{.State.Pid}}" con_name

运行dockerfile并给dockerfile创建的镜像建立名字

docker build -t mysql:3.6.34 pwd

mariadb容器启动前需先设置密码方法

docker run -d -P -e MYSQL_ROOT_PASSWORD=password img_id

docker修改镜像名

docker tag imageid name:tag

进入docker容器脚本

[root@docker ~]# cat nsenter.sh 
PID=`docker inspect --format "{{.State.Pid}}" $1`
nsenter -t $PID -u --mount -i -n -p

创建一个网络

docker network create --driver bridge --subnet 172.22.16.0/24 --gateway 172.22.16.1 my_net2

将容器添加到my_net2网络 connect

docker network connect my_net2 oldboy1

docker日志模块 使用filebeat收集日志

{
  "registry-mirrors": ["https://56px195b.mirror.aliyuncs.com"],
  "cluster-store":"consul://192.168.56.13:8500",
  "cluster-advertise": "192.168.56.11:2375",
  "log-driver": "fluentd",
  "log-opts": {
        "fluentd-address":"192.168.56.13:24224",
        "tag":"linux-node1.example.com"
        }
}