Centos7.6x64最新版 Docker 及docker-compose常用命令及问题解决

直接进入主题: 基础命令search pull 以及 tag 命令、inspect 命令、history 命令的作用

docker images # 查看pull下来的镜像或 docker image ls  或 docker images | grep tomcat # 查看tomcat 相关镜像

docker search tomcat # 查询tomcat镜像 

docker pull tomcat # 拉取tomcat镜像 无tag 则默认最新latest

使用 tag 命令为镜像添加标签 如: docker search tomcat:8.5

使用 inspect 命令查看镜像详细信息 docker inspect docker.io/mysql:5.7

使用 history 命令查看镜像历史 docker history docker.io/mysql:5.7

但显示的信息过长,为了方便展示,后面都省略了,如果您想要看具体信息,可以通过添加 --no-trunc 选项,如下面命令:docker history --no-trunc docker.io/mysql:5.7

通过docker-compose安装nginx-tomcat-mysql-redis等之前需pull对应镜像:

docker pull centos     # 默认最新版本 
docker pull tomcat     # 默认最新版本 
docker pull nginx      # 默认最新版本 或nginx:1.2.2加tag指定版本
docker pull mysql:5.7  # mysql5.7版本
docker pull redis:4.0  # redis4.0版本

docke 简单常用命令:

docker volume create redis-data # 创建数据卷进行数据持久化
docker volume ls # 查看创建的volume
#启动容器:
docker container run -p 6379:6379  --restart=always  --mount source=redis-data,destination=/var/lib/redis  -v /etc/localtime:/etc/localtime  --name my_redis  -d redis redis-server --appendonly yes
命令说明:
1.docker container run :启动一个容器并运行。以前版本直接用docker run,后来我估计是为了更细分职责,docker添加了manager command,即docker container,docker image等等。这样更明确标准。
2. -p 6379:6379 :宿主机的6379端口与容器的6379端口进行绑定。这样外部可以通过访问宿主机的6379端口进而访问到容器中的6379端口。
3. --mount source=redis-data,destination=/var/lib/redis :数据卷进行绑定。source是指的上面我们在宿主机创建出来的volume,destination即我们要与容器中的哪个数据卷进行绑定。当然绑定数据卷还可以用-v 宿主机数据卷:容器数据卷进行绑定。
4. -v /etc/localtime:/etc/localtime :设定容器的时间与宿主机保持一致。
5. --name my_redis :设置容器的名称my_redis。注意:容器名称是唯一的。
6. -d redis :告诉容器在后台运行 redis


#获取运行my_redis容器IP 端口
docker container port my_redis

#进入启动的容器中: 
docker exec -it 4f4891cdad34(容器ID可用docker ps 查看对应容器ID) /bin/bash


# 容器中登录 redis,如开启redis容器为my_redis:
docker container exec -it my_redis  /bin/bash
命令说明:
docker container exec 进入容器
-t 让docker分配一个伪终端,并绑定到容器的标准输入上
-i 让容器的标准输入保持打开
my_redis 是容器的名字

命令进入如下:
root@my-redis:/data# redis-cli
127.0.0.1:6379> 
退出容器: exit

容器<->宿主机文件拷贝:
容器-->宿主机 :docker cp 容器名:要拷贝的文件在容器里面的路径   要拷贝到宿主机的相应路径
宿主机-->容器 :docker cp 宿主机要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

然后就是docker-compose.yml 以及nginx-tomcat-mysql-redis 各自对应的配置文件目录地址 以便容器挂在映射

Docker Compose 常用命令与配置

docker-compose ps     # ps:列出当前有哪些容器(docker-compose.yml 所在文件夹下执行)
docker-compose logs   # logs:查看服务日志输出
docker-compose build  # build:构建或者重新构建服务
docker-compose start eureka #  启动指定服务已存在的容器eureka 同理 start 启动 stop 停止 rm 删除
docker-compose port eureka 8761 # port:打印绑定的公共端口,下面命令可以输出 eureka 服务 8761 端口所绑定的公共端口

docker-compose up    # 启动容器 加-d 后台运行

docker-compose --help #你会看到如下这么多命令
build               Build or rebuild services
bundle              Generate a Docker bundle from the Compose file
config              Validate and view the Compose file
create              Create services
down                Stop and remove containers, networks, images, and volumes
events              Receive real time events from containers
exec                Execute a command in a running container
help                Get help on a command
images              List images
kill                Kill containers
logs                View output from containers
pause               Pause services
port                Print the public port for a port binding
ps                  List containers
pull                Pull service images
push                Push service images
restart             Restart services
rm                  Remove stopped containers
run                 Run a one-off command
scale               Set number of containers for a service
start               Start services
stop                Stop services
top                 Display the running processes
unpause             Unpause services
up                  Create and start containers
version             Show the Docker-Compose version information

一般常用命令:
docker-compose up -d nginx                # 构建建启动nignx容器

docker-compose exec nginx bash            # 登录到nginx容器中

docker-compose down                       # 删除所有nginx容器,镜像

docker-compose ps                         # 显示所有容器

docker-compose restart nginx              # 重新启动nginx容器

docker-compose run --no-deps --rm php-fpm php -v # 在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器

docker-compose build nginx                     # 构建镜像        

docker-compose build --no-cache nginx          # 不带缓存的构建。

docker-compose logs  nginx                     # 查看nginx的日志 

docker-compose logs -f nginx                   # 查看nginx的实时日志

 

docker-compose config  -q                      # 验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。 

docker-compose events --json nginx           # 以json的形式输出nginx的docker日志

docker-compose pause nginx                   # 暂停nignx容器

docker-compose unpause nginx                 # 恢复ningx容器

docker-compose rm nginx                      # 删除容器(删除前必须关闭容器)

docker-compose stop nginx                    # 停止nignx容器

docker-compose start nginx                   # 启动nignx容器

docker-compose exec nginx bash  # 进入nginx服务下容器

docker-compose exec --index=1 nginx bash # 进入nginx服务下容器 多台 需要加参数 --index=xxx

相关异常:

docker-compose ps # 出现

/usr/lib/python2.7/site-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.24.1)  

原因:python库中urllib3 (1.22) or chardet (2.2.1) 的版本不兼容

解决如下:
[root@ixx ~]# pip uninstall urllib3
[root@ixx ~]# pip uninstall chardet
[root@ixx ~]# pip install requests

问题二: 执行 docker-compose up -d  # 里面含有多个服务

Creating network "xx_default" with the default driver
ERROR: unable to insert jump to DOCKER-ISOLATION-STAGE-1 rule in FORWARD chain:  (iptables failed: iptables --wait -I FORWARD -j DOCKER-ISOLATION-STAGE-1: iptables v1.4.21: Couldn't load target `DOCKER-ISOLATION-STAGE-1':No such file or directory

docker容器iptables failed: iptables --wait -t nat -A DOCKER&n

解决如下:

pkill docker  # 我执行此行后 问题解决

iptables -t nat -F 

ifconfig docker0 down 

brctl delbr docker0 

docker -d 

systmctl restart docker ```
重启docker服务
问题即可解决。。
发布了45 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/cfm_gavin/article/details/93629077
今日推荐