https://hub.docker.com/

linux安装

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh
docker version

图形化容器管理工具

docker run -d -p 9000:9000 \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
--name prtainer-test \
portainer/portainer-ce

镜像加速

cat /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

systemctl daemon-reload
systemctl restart docker

阿里云:
https://cr.console.aliyun.com/?spm=a2c4g.11186623.0.0.19e6a42dFzVyyI

重启docker服务  systemctl restart docker
关闭docker服务  systemctl stop docker
开启docker服务 systemctl start docker
开机启动docker服务 systemctl enable docker –now

搜索仓库镜像:docker search 镜像名
从仓库下载镜像:docker pull 镜像名
docker image pull 镜像名

查看镜像:docker images
docker image ls

查看镜像信息:docker image inspect id号
查看容器信息:docker container inspect id号

镜像的导出

docker image save `镜像名:latest` -o `导出名`

镜像的导入

docker image load -i `镜像名`

删除镜像

docker image rm  镜像id

强制删除镜像

docker image rm -f  镜像id

查看当前运行的容器

docker ps
docker container ls
docker container ls -q 只显示已运行的id号

查询存在所有容器

docker ps -a
docker container ls -a
docker container ls -aq 显示所有容器的id

创建容器

> docker container run `镜像名`

> docker run -itd --name `自定名` -p 80:80 `镜像名`
- -i:交互式模式
- -t:终端
- -d:后台运行
- --name:容器名
- -p(小写):内网端口:外网端口
- -P(大写): 将容器内部使用的网络端口随机映射到我们使用的主机上
- --rm:停止容器后删除
--privileged=true 特权模式root

启动容器

docker container start xxx
docker container start $(docker container ls -aq) 批量执行

重启容器:

docker container restart xxx
docker container restart $(docker container ls -aq) 批量执行

停止容器:

docker stop xxxID
docker container stop xxxID
docker container stop $(docker container ls -q) 批量执行

删除容器

docker container rm xxxID
docker container rm xxxID -f 强制删除
docker container rm $(docker container ls -aq) -f 批量执行

后台模式转前台模式

docker container attach xxxID

日志:

docker container logs xxxID
docker contauner logs -f xxxID 实时模式

进入命令行

-it 交互模式(sh进入命令行)

docker exec -it xxxID sh

把物理机的文件传入容器:

docker cp 物理机的文件 容器ID的前三位:容器内的路径

docker cp 1.txt 容器ID:/var/www/html

把容器内的文件传给物理机

docker cp 容器ID的前三位:容器内的文件 物理机的路径

docker cp 容器ID:/var/www/html/login.php ./

docker网络模式

docker默认网络模式
bridge 网桥模式(默认网络)
docker container run -d -p 80:80 nginx

host 主机模式
docker run -itd
-v /mnt/data/ttnodeA:/mnts \ 给容器挂在存储卷 本机挂载目录:容器目录
–name ttnodeA \ 容器名字
–hostname ttnodeA \ host名
–net=host \ 网络类型host
–privileged=true \ 特权模式,可以有效避免权限不够
–restart=always \ 容器退出后的重启策略,意外推出后重启容器
dvwa 镜像名称

none 仅主机模式
docker run -d –network none nginx

查看网络模式
docker network ls

查看网络详细信息
docker network inspect ID

新建网络
docker network create -d macvlan
–subnet=192.168.2.0/24 \ #局域网的ip段
–gateway=192.168.2.254 \ #主路由ip地址
-o parent=eth0 \ #设置对应网卡名
-o macvlan_mode=bridge
macnet #网络名

删除网络
docker network rm 网络id
删除所有未使用的网络
docker network prune

将正在运行的容器连接到网络
docker network connect 网络名 容器名
将正在运行的容器连接到网络并设置ip
docker network connect –ip 192.168.1.111 网络名 容器名
运行容器指定ip
docker run -itd –network=网络名 容器名

断开容器与网络的连接
docker network disconnect 网络名 容器名

mac vlan网络模式
docker network create -d macvlan
–subnet=192.168.2.0/24 \ #局域网的ip段
–gateway=192.168.2.254 \ #主路由ip地址
-o parent=eth0 \ #设置对应网卡名
-o macvlan_mode=bridge
macnet #网络名

docker run -itd
-v /mnt/data/ttnodeA:/mnts \ 给容器挂在存储卷 本机挂载目录:容器目录
–name ttnodeA \ 容器名字
–hostname ttnodeA \ host名
–net=macnet \ 网络类型macnet
–ip=192.168.2.201
–dns=114.114.114.114
–mac-address C2:F2:9C:C5:B3:94
–privileged=true \ 特权模式,可以有效避免权限不够
–restart=always \ 容器退出后的重启策略,意外推出后重启容器
dvwa 镜像名称