Docker 常用操作命令

Docker的常用操作命令

docker服务启动,重启,关闭命令

启动docker服务

#启动docker服务
systemctl start docker

重启docker服务

#重启docker服务   
systemctl restart  docker

停止Docker服务

#停止docker服务:
systemctl stop docker

#非root用户停止docker服务:
sudo systemctl stop docker
  • 执行 systemctl stop docker 后提示“Warning: Stopping docker.service, but it can still be activated by: docker.socket”
  • 解释:这是docker在关闭状态下被访问自动唤醒机制,即这时再执行任意docker命令会直接启动。
  • 若不希望docker被访问自动唤醒,执行 systemctl stop docker 后再执行systemctl stop docker.socket即可。

docker帮助命令

docker version       #显示docker的版本信息

docker info          #显示docker的系统信息,包括镜像和容器的数量

docker 命令 --help   #帮助命令

docker镜像命令

docker images     #查看所有本地主机上的镜像 可以使用docker image ls代替

docker search     #搜索镜像  docker search mysql

docker pull       #下载镜像  docker pull tomcat:8

docker rmi        #删除镜像  docker rmi -f f19c56ce92a8(镜像id)

docker容器命令

# 新建容器并启动
docker run 镜像id    # docker run -it centos /bin/bash

# 列出所有运行的容器
docker ps     

# 启动和停止容器
docker start 容器id	    #启动容器
docker restart 容器id	#重启容器
docker stop 容器id	    #停止当前正在运行的容器
docker kill 容器id	    #强制停止当前容器

# 退出容器
exit 		#容器直接退出
ctrl +P +Q  #容器不停止退出 	---注意:这个很有用的操作

# 删除容器
docker rm 容器id   	#删除指定的容器,不能删除正在运行的容器,若强制删除 rm -rf
docker rm -f $(docker ps -aq)  	 #删除所有的容器
docker ps -a -q|xargs docker rm  #删除所有的容器

docker其他命令

# 查看日志
docker logs --help

docker logs -t --tail n 容器id 	#查看n行日志
docker logs -ft 容器id 			#跟着日志

# 查看镜像的元数据
docker inspect 容器id  

# 两种进入容器的方法:进行查看日志、调试、启动其他进程等
# 方式一
docker exec -it 容器id bashshell  # docker exec -it 55321bcae33d /bin/bash
# 方式二
docker attach 容器id		# docker attach 55321bcae33d 
  • 区别:attach直接进入容器正在执行的终端,不会启动新的进程。
    exec进入容器后开启一个新的终端,可以启动新的进程。

容器内文件拷贝到主机上

docker cp 容器id:容器内路径  主机目的路径

[root@qqq ~]# docker ps
CONTAINER ID     IMAGE    COMMAND     CREATED         STATUS       PORTS      NAMES
56a5583b25b4     centos   "/bin/bash" 9seconds ago    Up 6 seconds      

#1. 进入docker容器内部
[root@qqq ~]# docker exec -it 56a5583b25b4 /bin/bash
[root@55321bcae33d /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

#新建一个文件
[root@55321bcae33d /]# echo "hello" > java.java
[root@55321bcae33d /]# cat hello.java 
hello
[root@55321bcae33d /]# exit
exit

#hello.java拷贝到home文件加下
[root@qqq /]# docker cp 56a5583b25b4:/hello.java /home 
[root@qqq /]# cd /home
[root@qqq home]# ls -l	#可以看见java.java存在
total 8
-rw-r--r-- 1 root root    0 May 19 22:09 haust.java
-rw-r--r-- 1 root root    6 May 22 11:12 java.java
drwx------ 3 www  www  4096 May  8 12:14 www

启动常用容器的命令

# 启动nginx (d 后台运行 --name 给容器命名 -p 宿主机端口:容器内部端口)
docker run -d --name nginx01 -p 3344:80 nginx

# 进入nginx01容器
docker exec -it nginx01 /bin/bash #进入
#根据容器id进入容器
docker exec -it 645596565d3f /bin/bash

# 退出容器
exit

# 停止容器
docker ps # 查看正在启动的容器(有容器id)
docker stop aa664b0c8ed9(容器id)

#commit镜像,保存当前容器的状态,获得一个镜像,好比虚拟机的快照
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[版本TAG]
docker commit -a="kuangshen" -m="add webapps app" 容器id tomcat02.1.0

常用容器

# 运行 nginx 容器:
docker run --name nginx-test -p 8080:80 -d nginx

--name nginx-test:容器名称。
-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。


# 运行 mysql 容器:
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。


# 运行Tomcat容器
docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat

-p 8080:8080:将主机的 8080 端口映射到容器的 8080 端口。
-v $PWD/test:/usr/local/tomcat/webapps/test:将主机中当前目录下的 test 挂载到容器的 /test。


# 运行 redis 容器
docker run -itd --name redis-test -p 6379:6379 redis

docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /home/redis/myredis/myredis.conf:/etc/redis/redis.conf -v /home/redis/myredis/data:/data -d redis redis-server /etc/redis/redis.conf  --appendonly yes  --requirepass 123456

–restart=always 总是开机启动
–log是日志方面的
-p 6379:6379 将6379端口挂载出去
–name 给这个容器取一个名字
-v 数据卷挂载
/home/redis/myredis/myredis.conf:/etc/redis/redis.conf 这里是将 liunx 路径下的myredis.conf 和redis下的redis.conf 挂载在一起。
/home/redis/myredis/data:/data 这个同上
-d redis 表示后台启动redis
redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf
–appendonly yes 开启redis 持久化
–requirepass 123456 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置。)

# 通过 redis-cli 连接测试使用 redis 服务
docker exec -it redis-test /bin/bash
docker exec -it myredis redis-cli

#验证密码:
auth xxxx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值