Docker的常用操作命令
docker服务启动,重启,关闭命令
启动docker服务
systemctl start docker
重启docker服务
systemctl restart docker
停止Docker服务
systemctl stop 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 info
docker 命令 --help
docker镜像命令
docker images
docker search
docker pull
docker rmi
docker容器命令
docker run 镜像id
docker ps
docker start 容器id
docker restart 容器id
docker stop 容器id
docker kill 容器id
exit
ctrl +P +Q
docker rm 容器id
docker rm -f $(docker ps -aq)
docker ps -a -q|xargs docker rm
docker其他命令
docker logs --help
docker logs -t --tail n 容器id
docker logs -ft 容器id
docker inspect 容器id
docker exec -it 容器id bashshell
docker attach 容器id
- 区别:attach直接进入容器正在执行的终端,不会启动新的进程。
exec进入容器后开启一个新的终端,可以启动新的进程。
容器内文件拷贝到主机上
docker cp 容器id:容器内路径 主机目的路径
[root@qqq ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
56a5583b25b4 centos "/bin/bash" 9seconds ago Up 6 seconds
[root@qqq ~]
[root@55321bcae33d /]
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@55321bcae33d /]
[root@55321bcae33d /]
hello
[root@55321bcae33d /]
exit
[root@qqq /]
[root@qqq /]
[root@qqq home]
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
启动常用容器的命令
docker run -d --name nginx01 -p 3344:80 nginx
docker exec -it nginx01 /bin/bash
docker exec -it 645596565d3f /bin/bash
exit
docker ps
docker stop aa664b0c8ed9(容器id)
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[版本TAG]
docker commit -a="kuangshen" -m="add webapps app" 容器id tomcat02.1.0
常用容器
docker run --name nginx-test -p 8080:80 -d nginx
--name nginx-test:容器名称。
-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。
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 用户的密码。
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。
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 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置。)
docker exec -it redis-test /bin/bash
docker exec -it myredis redis-cli
auth xxxx