Docker 常用命令

 创建容器并启动 docker run -e TZ="Asia/Shanghai" -d -t -i -p 3307:3306  --restart=always -v /dir/docker/mysql5.7:/etc/mysql/conf.d -v /dir/docker/mysql5.7:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql5.7 镜像ID

docker中常用的命令:

1、docker search image_name:搜查镜像

2、docker pull image_name:从镜像库中拉去镜像

3、docker run image_name:运行容器

  --restart=always:容器退出后重新启动

  --name:自定容器名字

  --d:后台运行容器

  --i:交互模式

  --t:打开一个伪终端

  --v:将容器中某个文件(目录)影射到主机上的某个文件(目录)

  --p:将容器中的某个端口号影射到主机上的某个端口号

4、docker logs container:查看某个容器运行日志

5、docker (start | stop | restart) container:启动、停止、重启某个容器

6、docker rmi imager:删除某个镜像

7、docker rm container:删除某个容器

8、docker ps:查看运行的容器

  --a:查看所有容器

9、docker exec container bash:在容器中运行shell命令

  -i -t:进入容器的shell终端

10、docker build:通过Dockerfile构建一个镜像

  --t:镜像名称

  --rm=true:构建完成后,删除中间容器

    --no-cache=false:构建过程中不使用缓存

11、docker inspect container:查看容器低层信息

12、镜像重命名  docker tag 镜像ID 仓库:标签

13、docker update --restart=always 容器ID:更改容器启动方式

--restart具体参数值详细信息: 
no - 容器退出时,不重启容器; 
on-failure - 只有在非0状态退出时才从新启动容器; 
always - 无论退出状态是如何,都重启容器;

导入导出镜像:

  导入:docker load < /test/nginx.tar.gz

  导出:docker save nginx > /test/nginx.tar.gz

docker run -it -d --name web2 --link web1 -p 9092:80 nginx

--link:链接到web1这个容器


进入容器不退出
1、进入容器
docker run --name mydocker -it docker.io/centos /bin/bash
2、退出
3、启动容器
docker ps -a查询ID号
docker start ID号
4、获取Pid号
docker inspect --format "{{.State.Pid}}" 68e5c66ee5c9
5、进入容器而不退出【快捷操作:ctrl+p+q】
nsenter --target 19205 --mount --uts --ipc --net --pid 退出不停止运行容器
如果没有这个命令,需要安装util-linux包 nsenter

6、懒人写法
nsenter --target `docker inspect --format "{{.State.Pid}}" ID` --mount --uts --ipc --net --pid
docker 网络访问
docker run -P
-P 随机映射
-p hostport:containerPort
-p ip:hostPort:containerPort
-p ip::containerPort
-p hostPort:containerPort
-p hostPort:containerPort

数据卷管理

docker run -it --name node --rm -v /data centos bash 将系统根映射到容器data目录【可读写】

docker run -it --name node --rm -v /opt/:/opt/:ro centos bash 将系统opt目录映射到容器opt目录【ro表示只读】


docker
-v /data
-v /src:/dsrc
-v /src:/src:ro

容器的制作
docker commit -m "my nginx" f443e801f545 test/my-nginx:v1
Docker file 的方式构建docker镜像

FROM 他的妈妈是谁(基础镜像)
MAINTAINER 告诉被人,你创造了他(维护者信息)
RUN 你想让他干啥(把命令前面加上RUN)
ADD 相当于cp命令(COPY文件,会自动解压)
WORKDIR 相当于cd命令(当前工作目录)
VOLUME 给我一个放行李的地方(目录挂载)
EXPOSE 我要打开的门是啥(端口)
RUN 奔跑吧,兄弟!(进程要一直运行下去)

Dockerfile 案例
vim /root/docker/Dockerfile

# This is My first Dockerfile

#Base images
FROM centos

#维护者信息
MAINTAINER test

#添加文件
ADD pcre-8.37.tar.gz /usr/local/src
ADD nginx-1.9.3.tar.gz /usr/local/src

#RUN
RUN yum -y install wget gcc gcc-c++ make openssl-devel
RUN useradd -s /sbin/nologin -M www

#WORKDIR
WORKDIR /usr/local/src/nginx-1.9.3

#RUN
RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.37 && make && make install

RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf

ENV PATH=/usr/local/nginx/sbin:$PATH
EXPOSE 80

CMD ["nginx"]

运行Dockerfile
docker build -t nginx-file:v1 /opt/docker-file/nginx/
其他命令
docker run -it --rm stree --cpu 1
--rm 容器运行完即可删除
--cpu 指定分多少颗CPU

PS:docker pull nginx后,需要在nginx.conf中添加daemon off; 意为不允许nginx后台运行,因为docker不支持。

原文地址:https://www.cnblogs.com/cpw6/p/9509975.html