1、运行一个容器
docker run -d ljx/my-nginx:v1 /usr/local/nginx/sbin/nginx
-d #表示后台运行
2、指定端口号运行一个容器
docker run -d -p 90:80 ljx/my-nginx:v1 /usr/local/nginx/sbin/nginx
-p #指定端口号,90表示宿主机的端口号,80表示容器的端口号
-P #随机映射端口
-p #hostPort:containerPort 指定要映射的端口:容器端口
-p #ip:hostPort:containerPort 指定要映射的ip地址:端口:容器端口
-p #ip::containerPort 指定要映射的ip地址:容器端口
-p #hostPort:containerPort -p hostPort:containerPort 指定多个要映射的端口:多个容器端口
3、指定容器名称及数据卷位置
docker run -d --name mynginx2 -v /root/ljx:/usr/local/nginx/html -p 98:80 ljx/my-nginx:v1 /usr/local/nginx/sbin/nginx
-v #指定数据卷,/root/ljx 表示宿主机的挂载位置,/usr/local/nginx/html 表示容器的挂载位置
--name #指定容器启动后名称,方便记忆
4、docker挂载数据卷容器
docker run -it --name mycentos3 --volumes-from mycentos2 centos
参数解释:
--volumes-from 后面接需要挂载的容器名称
5、查看容器
[root@docker ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a44336e186ac ljx/my-nginx:v1 "/usr/local/nginx/sb…" 5 seconds ago Up 3 seconds 0.0.0.0:90->80/tcp elegant_mayer
-l #表示查看最近启动的容器状态
-a #表示所有容器的状态,包括未运行的容器
6、进入容器
docker exec -it (容器的id) /bin/bash
7、查看镜像
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ljx/my-nginx v1 224adc4e6cd1 58 seconds ago 516MB
8、查看容器的映射端口
docker port (容器名称或id)
9、查看未运行容器的id号
docker ps -a|grep Exited|awk '{print $1}'
10、删除未运行的所有容器
docker rm `docker ps -a|grep Exited|awk '{print $1}'`
11、查看docker容器数据卷位置
docker inspect -f {{.Volumes}} mycentos
12、查看docker容器pid
[root@docker ~]# docker inspect --format "{{.State.Pid}}" 3c0468a64c27
10717
13、使用docker容器pid进入容器
[root@docker ~]# nsenter --target 10717 --mount --uts --ipc --net --pid
14、查看容器ip地址
14.1、方法1:
[root@docker ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' 0275ff643a18
172.17.0.2
14.2、方法2:
[root@docker ~]# docker inspect 0275ff643a18 |grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
15、查看docker容器数据卷位置
docker inspect -f {{.Volumes}} mycentos
16、以json格式打印容器的详细信息
docker inspect (容器名称\ID)
17、查看容器的详细信息
docker inspect (容器名称或ID)
18、查看容器的映射端口
docker port (容器名称)
19、查看容器的日志
docker logs -f -t --since="2017-05-31" --tail=10 edu_web_1
--since #此参数指定了输出日志开始日期,即只输出指定日期之后的日志。
-f #查看实时日志
-t #查看日志产生的日期
-tail=10 #查看最后的10条日志。
edu_web_1 #容器名称
20、手动构建镜像
docker commit -m "my_nginx" 70dad80fc88f ljx/my-nginx:v1
说明:如果对容器镜像修改后可以使用commit来提交,保存修改后的信息,只对修改的配置文件或创建的目录生效。添加的数据不生效。
21、使用Dockerfile构建镜像(一处构建到处使用)
创建目录
mkdir /opt/docker-file/nginx
cd /opt/docker-file/nginx
vim /opt/docker-file/nginx/Dockerfile
# This is My first Dockerfile
# Version 1.0
# Author: ljx
# Base images
FROM centos
# MAINTAINER
MAINTAINER Jason Liu
# ADD
ADD nginx-1.15.1.tar.gz /usr/local/src
#RUN
RUN yum -y install wget gcc gcc-c++ make openssl-devel pcre-devel
RUN useradd nginx -s /sbin/nologin -M
#WORKDIR
WORKDIR /usr/local/src/nginx-1.15.1
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module && make && make install
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
CMD ["nginx"]
22、构建镜像
docker build -t mynginx1:v1 /opt/docker-file/nginx
build #构建
-t #指定构建后镜像的名称
/opt/docker-file/nginx #Dockerfile文件所在的位置,也可以使用.(点)表示
23、搭建私有仓库
[root@docker ~]# docker pull registry
#下载registry镜像,用于搭建私有仓库
24、检查是否下载成功
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest b2b03e9146e1 45 hours ago 33.3MB
25、启动registry
[root@docker ~]# docker run -d -p 5000:5000 registry
[root@docker ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
328a0a7b9948 registry "/entrypoint.sh /etc…" 5 seconds ago Up 4 seconds 0.0.0.0:5000->5000/tcp loving_kowalevski
-p5000:5000 #表示将容器的5000端口映射到本地的5000端口,前者表示本地的端口,后者表示容器的端口
26、重命名镜像名称
[root@docker ~]# docker tag ljx/my-nginx:v1 10.0.0.10:5000/test/nginx:v1
tag #为新的镜像打一个标签(相当于重命名镜像名称)
10.0.0.10:5000 #表示私有仓库的地址
27、上传到私有仓库
docker push 10.0.0.10:5000/test/nginx:v1
push #上传镜像到私有仓库
pull #拉取镜像到本地
28、docker阿里云加速器(用于提高镜像的下载速度)
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://1lys06bi.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
29、容器到宿主机文件拷贝
docker cp 15f285437203:/usr/local/tomcat/conf /root/
#说明:此命令是将容器的conf目录拷贝到本地的/root目录下面
30、宿主机到容器的文件拷贝
docker cp ROOT 8d4603544cbe:/usr/local/tomcat/webapps
#说明:此命令是将宿主机的ROOT目录拷贝到容器的webapps下面