docker安装去官网
- 装完了得启动它systemctl start docker
- 卸载yum remove docker rm -rf /var/lib/docker
- 由于docker仓库又是在国外,淘宝又自己做了一个自己的,可以修改配置让自己pull的时候快一点
- 镜像相关命令:
ls 查看全部镜像 docker image ls
search 查找镜像 docker search [imageName]
history 查看镜像历史 docker history [imageName]
inspect 显示一个或多个镜像详细信息 docker inspect [imageName]
pull 拉取镜像 docker pull [imageName]
push 推送一个镜像到镜像仓库 docker push [imageName]
rmi 删除镜像 docker rmi [imageName] docker image rmi 2
prune 移除未使用的镜像,没有标记或补任何容器引用 docker image prune docker image prune
tag 标记本地镜像,将其归入某一仓库 docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG] docker tag centos:7 zhangrenyang/centos:v1
export 将容器文件系统作为一个tar归档文件导出到STDOUT docker export [OPTIONS] CONTAINER docker export -o hello-world.tar b2712f1067a3
import 导入容器快照文件系统tar归档文件并创建镜像 docker import [OPTIONS] file/URL/- [REPOSITORY[:TAG]] docker import hello-world.tar
save 将指定镜像保存成tar文件 docker save [OPTIONS] IMAGE [IMAGE...] docker save -o hello-world.tar hello-world:latest
load 加载tar文件并创建镜像 docker load -i hello-world.tar
build 根据Dockerfile构建镜像 docker build [OPTIONS] PATH / URL / - docker build -t zf/ubuntu:v1 .
特殊用于批量删除
docker image ls -a -q
- 容器相关
run 从镜像运行一个容器 docker run ubuntu /bin/echo 'hello-world'
ls 列出容器 docker container ls
inspect 显示一个或多个容器详细信息 docker inspect
attach 要attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕 docker attach [OPTIONS] CONTAINER docker attach 6d1a25f95132
stats 显示容器资源使用统计 docker container stats
top 显示一个容器运行的进程 docker container top
update 更新一个或多个容器配置 docker update -m 500m --memory-swap -1 6d1a25f95132
port 列出指定的容器的端口映射 docker run -d -p 8080:80 nginx docker container port containerID
ps 查看当前运行的容器 docker ps -a -l
kill [containerId] 终止容器(发送SIGKILL ) docker kill [containerId]
rm [containerId] 删除容器 docker rm [containerId]
start [containerId] 启动已经生成、已经停止运行的容器文件 docker start [containerId]
stop [containerId] 终止容器运行 (发送 SIGTERM ) docker stop [containerId] docker container stop $(docker container ps -aq)
logs [containerId] 查看 docker 容器的输出 docker logs [containerId]
exec [containerId] 进入一个正在运行的 docker 容器执行命令 docker container exec -it f6a53629488b /bin/bash
cp [containerId] 从正在运行的 Docker 容器里面,将文件拷贝到本机 docker container cp f6a53629488b:/root/root.txt .
commit [containerId] 根据一个现有容器创建一个新的镜像 docker commit -a "zhufeng" -m "mynginx" a404c6c174a2 mynginx:v1
- 运行容器时的参数
-i --interactive 交互式
-t --tty 分配一个伪终端
-d --detach 运行容器到后台
-a --attach list 附加到运行的容器
-e --env list 设置环境变量 docker run -d -p 1010:80 -e username="zhufeng" nginx \ docker container exec -it 3695dc5b9c2d /bin/bash
-p --publish list 发布容器端口到主机
-P --publish-all
- commit制作个性化镜像,比如我们在centos里装了一个nginx服务
我可以将容器搞成镜像,下次直接run就行了。
docker container commit -m"我的nginx" -a "lirenjie" 3695dc5b9c2d jack/mynginx
docker image ls
docker container run jack/mynginx /bin/bash
- 指定数据卷,让宿主机跟容器共享文件夹。不然我们的log等一些有用的文件还得去容器里找
docker run -it -v /root/test:/usr/share/xixi centos
也可以创建数据卷(默认是/var/lib/docker/volume/xxx)
docker volume create xxxtest
docker volume ls
docker volume inspect xxxtest
docker run -it -mount xxxtest:/usr/share/xixi centos
- 网络,因为docker容器里跑的也是系统,所以就会有网络~类似虚拟机。三种模式bridge(创建容器默认连接到此网络)、 none 、host
使用--net来指定bridge、none 、host
通过启动的时候给容器起名,使用link指定,可以直接ping容器的名字
docker run -d --name mNx nginx
docker run -d --name nginx2 --link mNx nginx
- 创建自定义网络
可以创建多个网络,每个网络IP范围均不相同
docker的自定义网络里面有一个DNS服务,可以通过容器名称访问主机
# 创建自定义网络
docker network create --driver bridge myweb
# 查看自定义网络中的主机
docker network inspect myweb
# 创建容器的时候指定网络
docker run -d --name mynginx1 --net myweb nginx
d
制作个性化镜像,一般我们选择创建Dockerfile来制作个性化镜像
mkdir nodeapp
vi .dockerignore里面写入当前目录下不需要打进来的那些文件比如.git之类的
mkdir app
vi Dockerfile 里面写入
FROM node 拉取啥镜像
COPY ./app /app 拷贝当前目录到镜像里的根目录
WORKDIR /app cd到/app
RUN npm install 执行装包(到此为止都是在镜像制作的阶段)
EXPOSE 3000 -暴露容器的300端口
CMD node server.js(进入到容器后,执行的脚本)
ps:node安装
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
source /root/.bashrc
nvm install stable
容器管理