Docker笔记

docker命令大全(https://www.runoob.com/docker/docker-command-manual.html)

https://alanhou.org/docker-compose/

安装

安装docker

#法一
#国内推荐
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 
#国外推荐
curl -fsSL https://get.docker.com | bash -s docker --mirror	

#法二,推荐
apt-get install docker.io docker-compose -y

安装docker-compose
docker-compose是基于docker的快捷容器管理工具,可以通过yaml文件快捷管理docker容器,使用时要先安装docker,后安装docker-compose工具

sudo apt install python3-pip -y
#国内推荐
sudo pip3 install docker-compose -i https://pypi.tuna.tsinghua.edu.cn/simple
#国外推荐
sudo pip3 install docker-compose

报错:Command "python setup.py egg_info" failed with error code 
解决:
pip3 install --upgrade setuptools
python3 -m pip install --upgrade pip

配置国内源

https://github.com/silenceshell/docker_mirror 查找国内最快的docker镜像源

自动配置(问题比较多)

git clone https://github.com/silenceshell/docker_mirror.git
#python2环境
sudo apt install python-pip
sudo pip2 install docker -i https://mirrors.aliyun.com/pypi/simple
sudo python ./docker_mirror.py

手动配置

配置docker为国内源

vim /etc/docker/daemon.json	# 没有就创建
{
          "registry-mirrors": [
                  "https://mirror.baidubce.com/",
                  "https://docker.mirrors.ustc.edu.cn/",
                  "https://hub-mirror.c.163.com/"
          ]
}

sudo systemctl daemon-reload
sudo service docker restart
sudo docker info	# 查看是否更换成功

docker语法

docker -h

标志速记 -h 已被弃用,请使用 --help

用法:docker [OPTIONS] 命令

容器的自给自足运行时

 >选项:
 --config string 客户端配置文件的位置(默认“/root/.docker”)
 -D, --debug 启用调试模式
 -H, --host list要连接到的守护程序套接字
 -l, --log-level string 设置日志记录级别 ("debug"|"info"|"warn"|"error"|"fatal") (default "info ")
 --tls 使用 TLS; --tlsverify
 隐含 --tlscacert string 仅由该 CA 签名的信任证书(默认为“/root/.docker/ca.pem”)
 --tlscert string TLS 证书文件的路径(默认为“ /root/.docker/cert.pem")
 --tlskey 字符串 TLS 密钥文件的路径(默认为“/root/.docker/key.pem”)
 --tlsverify 使用 TLS 并验证remote
 -v, --version 打印版本信息并退出

管理命令:
 builder 管理构建
 config 管理Docker配置
 container 管理容器< br/> engine 管理docker引擎
 image 管理镜像
 network 管理网络
 node 管理Swarm节点
 plugin 管理插件
 secret 管理Docker secrets
 service管理服务
栈管理Docker堆栈
群管理群
系统管理Docker
信任管理对Docker镜像的信任
卷管理volu mes

命令:
 attach 将本地标准输入、输出和错误流附加到正在运行的容器
 build 从 Dockerfile 构建图像
 commit 创建一个新图像从容器的更改
 cp 在容器和本地文件系统之间复制文件/文件夹
 create 创建一个新容器
 diff 检查容器文件系统上文件或目录的更改
 events Get来自服务器的实时事件
 exec 在正在运行的容器中运行命令
 export 将容器的文件系统导出为 tar 存档
 history 显示图像的历史
 images 列出图像< br/> import 从 tarball 导入内容以创建文件系统映像
 info 显示系统范围的信息
 inspect 返回有关 Docker 对象的低级信息
 kill 杀死一个或多个正在运行的容器< br/> load 从 tar 存档加载图像 o r STDIN
 login 登录到 Docker 注册表
 logout 从 Docker 注册表注销
 logs 获取容器的日志
 pause 暂停一个或多个容器中的所有进程<br /> port 列出容器的端口映射或特定映射
 ps 列出容器
 pull 从注册表中拉取图像或存储库
 push 将图像或存储库推送到注册表
 /> rename 重命名容器
 restart 重启一个或多个容器
 rm 删除一个或多个容器
 rmi 删除一个或多个图像
 run 在新容器中运行命令
 /> save 将一个或多个图像保存到 tar 存档(默认流式传输到 STDOUT)
 search 在 Docker Hub 中搜索图像
 start 启动一个或多个停止的容器
 stats 显示实时流of container(s) 资源使用统计
 stop 停止一个或多个 r unning containers
 tag 创建一个引用 SOURCE_IMAGE 的标签 TARGET_IMAGE
 top 显示容器的运行进程
 unpause 取消暂停一个或多个容器内的所有进程
 update 更新一个或多个容器的配置更多容器
版本显示Docker版本信息
等待阻塞直到一个或多个容器停止,然后打印它们的退出代码

运行'docker COMMAND --help'以获得更多信息一个命令。

docker run :创建一个新的容器并运行一个命令

语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷,格式为 系统目录:容器目录	
--rm	容器停止时,自动删除该容器
–privileged  使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。甚至允许你在docker容器中启动docker容器。
chroot /mnt 把根目录换成/mnt

docker start :启动一个或多个已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器
	语法
	docker start [OPTIONS] CONTAINER [CONTAINER...]
	docker stop [OPTIONS] CONTAINER [CONTAINER...]
	docker restart [OPTIONS] CONTAINER [CONTAINER...]
	实例
	启动已被停止的容器myrunoob
	docker start myrunoob
	停止运行中的容器myrunoob
	docker stop myrunoob
	重启容器myrunoob
	docker restart myrunoob
	
docker kill :杀掉一个运行中的容器。
	语法
	docker kill [OPTIONS] CONTAINER [CONTAINER...]
	OPTIONS说明:
	-s :向容器发送一个信号
	实例
	杀掉运行中的容器mynginx
	runoob@runoob:~$ docker kill -s KILL mynginx
	mynginx

docker 常用命令

#docker创建容器(名称testname,挂载文件夹)
docker run -it --name="testname" -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash

#docker常用创建容器
docker run -d --name="redis" -p 6379:6379 redis

#查看docker网络:
docker network list

#查看容器信息:
docker inspect 容器id

#docker创建网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 自定义name

#docker 进入容器
docker exec -it 容器name /bin/bash

#docker 查看所有容器
docker ps -a

#docker 关闭容器
docker stop <id>

#docker 删除容器(删除前必须关闭容器)
docker rm <ports/names>

#docker 查看镜像
docker images

#docker 删除镜像
docker image rm <IMAGE ID>

#docker宿主机向容器传输文件
docker ps -a
docker inspect -f '{{.Id}}' 容器名字
docker cp index.php 3def7287ad59e336eca6fef6596c0bf72cbcba271befa375645c934616193d9e:/var/www/html/index.php

docker-compose 常用命令

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网络详解

https://www.jianshu.com/p/d84cdfe2ea86

docker修改容器启动参数

https://www.jianshu.com/p/25fe204b1acf

方法一. update 命令

eg:

docker container update --restart=always 容器名字

方法二. 修改container的配置文件

先停止容器

  1. 停止docker:
systemctl stop docker
  1. 修改配置文件,配置文件路径为/var/lib/docker/containers/容器ID,对应的配置文件为hostconfig.jsonconfig.v2.json
  2. 启动docker:
systemctl start docker
  1. 启动容器
    *注意,重启docker很重要,否则修改完的配置文件,重启容器后会被还原*

故障解决:

Linux Docker systemctl 命令无法使用的解决方案

https://blog.csdn.net/f_zyj/article/details/93378737

据说在 Linux Docker \text{Linux Docker}Linux Docker 中无法使用 systemd(systemctl)相关命令的原因是 0号进程不是 init,而是其他例如 /bin/bash,所以导致缺少相关文件无法运行。

具体的解决方案是通过 init \text{init}init 在后台运行一个 docker 容器,然后再通过 exec 的方式进入到容器中,不过需要注意的是不同的系统 init程序的路径不同。

例如 CentOS 7,

docker run -tid --name test_1 --privileged=true centos:latest /usr/sbin/init
docker exec -it test_1 /bin/bash

再例如 Ubuntu 16.04 \text{Ubuntu 16.04}Ubuntu 16.04,

docker run -tid --name test_2 --privileged=true ubuntu:16.04 /sbin/init
docker exec -it test_2 /bin/bash

需要注意的是,第一个命令除了要通过 init \text{init}init 后台启动 docker \text{docker}docker 容器以外,–privileged=true \text{--privileged=true}–privileged=true 是必须的。

快速开始

启动redis

docker pull redis:5.0.14
docker run --name="redis" -d -p 6379:6379 redis:5.0.14
docker exec -it redis redis-cli
>config set requirepass pwd
posted @ 2024-06-13 17:02  DumpInfou  阅读(23)  评论(0编辑  收藏  举报