1
| sudo yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io
|
1 2 3
| #进入DOCKER容器 docker exec -it d497dcfd6062 /bin/bash(这里也可以直接用 bash)或者下面都行 docker exec -it baota /bin/bash
|
1 2 3
| #启动 FRPS服务器 docker run -itd --restart=always --name="ssfrps" --net=host alpine docker run -itd -p 7777:7777 -p 3399:3399 --name frps frps nohup /home/frp/frps -c /home/frp/frps.ini > /dev/null 2>&1 &
|
1 2 3 4 5 6
| #创建自定义网络 docker network create --subnet=172.18.0.0/16 webserver
docker network ls #查询IP docker inspect #容器name或者id |grep IPAddress
|
1 2
| # 启动nginx服务器 docker run -itd --restart=always --name nginx --net webserver --ip 172.18.0.2 -p 80:80 -p 443:443 nginx:latest
|
1 2
| # 启动webserver服务器 docker run -itd --restart=always --name webserver --net webserver --ip 172.18.0.3 -p 80:80 -p 443:443 -v /www:/www --privileged=true webserver:20220116
|
1 2
| # 启动mysql docker run -itd --restart=always --name mysql --net webserver --ip 172.18.0.8 -p 3306:3306 -v /mysqldata:/var/lib/mysql --privileged=true mysql:20220116
|
1 2 3
| # 启动宝塔服务 docker run -itd --name btserver --net webserver --ip 172.18.0.2 --restart=always -p 20:20 -p 21:21 -p 81:80 -p 444:443 -p 888:888 -p 8888:8888 --privileged=true btserver:latest /usr/sbin/init
|
1 2 3 4
| #启动git服务 docker run -itd --restart=always --name gitserver --net webserver --ip 172.18.0.5 -p 23:22 -v /www:/www gitserver:20211217
/usr/sbin/sshd -D &
|
1 2 3 4 5 6 7 8 9
| #启动FRPC服务 docker run -itd --restart=always --name frpc --net webserver --ip 172.18.0.4 frpc:20211217 /sbin/init nohup /home/frpc -c /home/frpc.ini > /dev/null 2>&1 &
docker run -itd --restart=always --name frpc --link btserver:btserver frpc:gsbtfrpc /usr/sbin/init nohup /home/frpc -c /home/frpc.ini > /dev/null 2>&1 &
#启动命令 nohup ./frps -c ./frps.ini > /dev/null 2>&1 &
nohup /usr/bin/ss-server -s 47.243.195.230 -p 9030 -k a@111111 -m aes-256-gcm -d 8.8.8.8 -u > /dev/null 2>&1 &
|
1 2 3
| # 虚拟机重启后服务 mkdir /sys/fs/cgroup/systemd mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
|
1 2
| # 启动kuboard docker run -d --restart=unless-stopped --name=kuboard -p 1080:80/tcp -p 10081:10081/udp -p 10081:10081/tcp -e KUBOARD_ENDPOINT="http://192.168.99.100" -e KUBOARD_AGENT_SERVER_UDP_PORT="10081" -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3.3.0.3
|
1 2
| #启动 SS 服务 docker run -e PASSWORD=a@111111 -p 9030:8388 -p 9030:8388/udp -d shadowsocks/shadowsocks-libev
|
docker 普通命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| 1 docker ps # 仅列出当前运行的容器 2 docker ps -l # 列出最新创建得容器 3 docker ps -a # 列出素有容器(包括 未运行的) 4 docker inspect web4 # 列出指定容器的详细信息 5 6 #### 持久化容器 7 8 docker exec -it web4 bash # 进入容器web4中 9 touch 1.txt 2.txt # 对容器进行修改 10 docker commit web4 nginx:web4 # 将修改后的web4容器提交为一个新镜像 nginx:web4 11 docker images # 可以看到 多了一个 TAG标记为 web4 的镜像 12 docker run -d --name web4-1 nginx:web4 # 使用刚刚提交的镜像web4创建一个容器web4-1 13 docker exec -it web4-1 bash # 进入web4-1的bash环境 14 15 #### 从宿主机复制文件到docker容器 16 docker cp nginx.tar web4-1:/home # 将宿主机nginx.tar文件拷贝到容器web4-1的/home目录中 17 docker exec -it web4-1 ls /home # 在容器web4-1中执行 "ls /home" 命令 18 19 #### 容器常用查询命令 20 docker logs web4-1 # 查看web4-1中控制台日志 21 docker port 55f870061ed9 # 查看指定容器端口映射 22 docker top 00f7ddc96622 # 查看容器中有哪些进程 23 docker stats 00f7ddc96622 # 查看容器资源使用情况 24 25 ##### 启动、停止、删除 容器 26 docker ps -a # 列出素有容器(包括 未运行的) 27 docker start web # 启动容器web 28 docker stop web # 停止容器web 29 docker rm web # 删除容器web
|
2. 镜像常用命令
1 2 3 4 5 6 7
| 1 [root@linux-node4 diff]# docker help # 查看docker帮助 2 [root@linux-node4 diff]# docker image --help # 查看 docker中 镜像相关帮助 3 [root@linux-node4 diff]# docker image ls # 查看当前所有镜像 4 [root@linux-node4 diff]# docker image inspect nginx # 查看指定镜像(nginx镜像)详细信息 5 [root@linux-node4 diff]# docker pull nginx:1.14 # 下载指定版本镜像 nginx 6 [root@linux-node4 diff]# docker image rm nginx:1.14 # 删除nginx 1.14版本 7 [root@linux-node4 diff]# docker image save nginx > nginx.tar # 导出niginx镜像
|
Docker run 常用参数详解
命令格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
Usage: Run a command in a new container
中文意思为:通过run命令创建一个新的容器(container)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| 常用选项说明 -d, --detach=false, 指定容器运行于前台还是后台,默认为false -i, --interactive=false, 打开STDIN,用于控制台交互 -t, --tty=false, 分配tty设备,该可以支持终端登录,默认为false -u, --user="", 指定容器的用户 -a, --attach=[], 登录容器(必须是以docker run -d启动的容器) -w, --workdir="", 指定容器的工作目录 -c, --cpu-shares=0, 设置容器CPU权重,在CPU共享场景使用 -e, --env=[], 指定环境变量,容器中可以使用该环境变量 -m, --memory="", 指定容器的内存上限 -P, --publish-all=false, 指定容器暴露的端口 -p, --publish=[], 指定容器暴露的端口 -h, --hostname="", 指定容器的主机名 -v, --volume=[], 给容器挂载存储卷,挂载到容器的某个目录 --volumes-from=[], 给容器挂载其他容器上的卷,挂载到容器的某个目录 --cap-add=[], 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities --cap-drop=[], 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities --cidfile="", 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法 --cpuset="", 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU --device=[], 添加主机设备给容器,相当于设备直通 --dns=[], 指定容器的dns服务器 --dns-search=[], 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件 --entrypoint="", 覆盖image的入口点 --env-file=[], 指定环境变量文件,文件格式为每行一个环境变量 --expose=[], 指定容器暴露的端口,即修改镜像的暴露端口 --link=[], 指定容器间的关联,使用其他容器的IP、env等信息 --lxc-conf=[], 指定容器的配置文件,只有在指定--exec-driver=lxc时使用 --name="", 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字 --net="bridge", 容器网络设置: bridge 使用docker daemon指定的网桥 host //容器使用主机的网络 container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源 none 容器使用自己的网络(类似--net=bridge),但是不进行配置 --privileged=false, 指定容器是否为特权容器,特权容器拥有所有的capabilities --restart="no", 指定容器停止后的重启策略: no:容器退出时不重启 on-failure:容器故障退出(返回值非零)时重启 always:容器退出时总是重启 --rm=false, 指定容器停止后自动删除容器(不支持以docker run -d启动的容器) --sig-proxy=true, 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理 示例 运行一个在后台执行的容器,同时,还能用控制台管理:docker run -i -t -d ubuntu:latest 运行一个带命令在后台不断执行的容器,不直接展示容器内部信息:docker run -d ubuntu:latest ping www.docker.com 运行一个在后台不断执行的容器,同时带有命令,程序被终止后还能重启继续跑,还能用控制台管理,docker run -d --restart=always ubuntu:latest ping www.docker.com 为容器指定一个名字,docker run -d --name=ubuntu_server ubuntu:latest 容器暴露80端口,并指定宿主机80端口与其通信(: 之前是宿主机端口,之后是容器需暴露的端口),docker run -d --name=ubuntu_server -p 80:80 ubuntu:latest 指定容器内目录与宿主机目录共享(: 之前是宿主机文件夹,之后是容器需共享的文件夹),docker run -d --name=ubuntu_server -v /etc/www:/var/www ubuntu:latest
|
3. 运行容器常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [root@linux-node4 ]# docker run --help # 查看创建容器帮助 [root@linux-node4 ]# docker run -it centos # 创建centos镜像并进入终端 [root@linux-node4 ]# docker run -d nginx # 后台启动nginx容器 [root@linux-node4 ]# docker stop 6bb09dce461f # 关闭一个容器 [root@linux-node4 ]# docker ps -l # 查看最近运行的容器 [root@linux-node4 ]# docker run -itd centos # 启用一个伪终端守护centos容器 [root@linux-node4 ]# docker container run -d --name web3 -e test=123456 -p 8800:80 -h webhostname --restart always nginx -d # 后台启动nginx容器 --name web3 # 自定义容器名字(默认会是一段随机字符串) -e test=123456 # 启动容器添加变量 test=123456 (echo $test) -p 8800:80 # 宿主机的8800端口映射到docker容器的80端口中 -h webhostname # docker容器主机名 (a300f394af88) --restart always # 宿主机重启自动拉起这个docker容器 nginx # 使用这个nginx镜像启动容器 注:http://192.168.56.12:8800/ 访问这个docker nginx [root@linux-node4 ]# docker logs web # 查看上面启动的web容器的日志 [root@linux-node4 ]# docker exec -it web bash # 进入容器web
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 1 [root@linux-node1 /]# docker run -itd nginx # 在后台启动一个docker容器 2 [root@linux-node1 /]# docker inspect 5a3ad030a621 # 查看docker运行容器的详细信息 3 [root@linux-node1 /]# curl http://172.17.0.2 # 4 [root@linux-node1 /]# docker run -itd --name=web2 -p 192.168.56.11:8800:80 nginx 5 使用--itd参数(指定后台启动这个容器),--name=web2(指定这个web容器的名字叫web2) 6 7 8 -d: 后台运行容器,并返回容器ID; 9 -i: 以交互模式运行容器,通常与 -t 同时使用; 10 -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用; 11 -P: 随机端口映射,容器内部端口随机映射到主机的高端口 12 -p: 指定端口映射,格式为:主机(宿主)端口:容器端口 13 --name="nginx-lb": 为容器指定一个名称 14 --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致; 15 [root@linux-node1 /]# docker exec -it c9b7a480ee68 bash # 进入docker环境
|
停止运行容器,删除运行容器,删除镜像
1 2 3 4 5 6 7 8
| # 停止容器运行(CONTAINER ID) docker stop 容器ID
# 删除 容器(CONTAINER ID) docker rm 容器ID
# 删除 镜像(IMAGE ID) docker images 镜像ID
|