Docker #
教程手册 #
Install #
略过~ 😁
打镜像和跑 #
docker build -t server:v0 . -f server.dockerfile
跑 #
docker run -p 9080:80 --name server server:v0
指定启动命令 #
sudo docker run -it -p 9080:80 --name nova_server nova_server:v0 sh -c "echo hello"
加入自定义网络 #
--network {{network name}}
详见:[[#Network]]
跑出问题-进入容器排查 #
sudo docker run -it -p 9080:80 --name nova_server nova_server:v0 sh -c "bash"
使用-it
进入容器手动执行命令进行调试
启动全部容器 #
docker ps -a | grep "Exited" | awk '{print $1}' | xargs docker start
Network #
- docker run时容器加入方法-redis为例
- 后期加入方式
- 创建一个新网
- 检测
init_redis:
docker run -p 6379:6379 \\
--network websafe-network \\
--name redislatest redis:latest --requirepass 3b21d032a7fd8eb51fa7bd8a2e812b78b7b3a36f
join_network:
docker network connect websafe-network mysql56
docker network connect websafe-network daemon-xxx
init_network:
docker network create websafe-network
check_network:
docker network inspect websafe-network
docker network inspect websafe-network | findStr IPv4Address
删除 #
可视化 #
go install github.com/jesseduffield/lazydocker@latest
如果需要
sudo
权限的话无法直接执行命令,只能where获取原始路径后sudo
+原始路径执行 如:
- ✓
sudo /home/ian/go/bin/lazydocker
- ✗
sudo lazydocker
常见问题和模板 #
用户sudo问题 #
debian增加docker用户组,优化每次sudo问题 或
sudo groupadd docker # 安装完docker.io之后一般都会自动创建所以这一步其实没啥用
sudo gpasswd -a $USERNAME docker
newgrp docker # 更新
Docker Mysql编码 #
version: "2.2"
services:
redis:
image: "redis"
# ports:
# - 6379:6379
command: redis-server --appendonly yes #一个容器启动时要运行的命令
restart: always # 自动重启
myserver:
image: mainName/myserver
restart: always # 自动重启
mainServer:
image: mainName/mainServer
# container_name: mainServerv1.0.0
depends_on:
- redis
ports:
- 9001:9001
restart: always
volumes:
- "./logs:/src/build/logs"
links:
- redis
- myserver
mysql 编码问题|单条: docker run --name predix_mysql -e MYSQL_ROOT_PASSWORD=predix123predix -p 33061:3306 -e LANG=C.UTF-8 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
时间修改 #
FROM alpine:3.14
RUN apk add -U tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
ENV TZ=Asia/Shanghai \
GO111MODULE=on \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64 \
PROGRAM_ENV=pro
WORKDIR /src/build
# 复制构建应用程序所需的代码
COPY ./build .
EXPOSE 8088
CMD ["./main"]
bash进入某App内 #
docker exec -it webserver bash
webserver
为APP名称
Swarm #
Docker Compose Docker Machine: Mac、Windows区别预先安装。 Linux直接安装 Win10 Hyper-V 发布镜像 镜像充当已部署容器,填写必要信息:username、repo、tag dockers-compose.yml 副本
其实以上在官方教程有很好说明在这里,但毕竟高级应用,暂且记下。
创建虚拟机来试验一下 #
$ docker-machine create --driver virtualbox myvm1
$ docker-machine create --driver virtualbox myvm2
第一个管理节点:docker swarm init
,第二个工作节点`docker swarm join``
should like this show: #
$ docker-machine ssh myvm1 "docker swarm init"
Swarm initialized: current node <node ID> is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token <token> \
<ip>:<port>
通过运行 docker-machine ls 来复制 myvm1 的 IP 地址,然后使用 该 IP 地址并通过 –advertise-addr 指定端口 2377(用于 swarm join 的端口), 以便再次运行 docker swarm init 命令。例如:
docker-machine ssh myvm1 "docker swarm init --advertise-addr 192.168.99.100:2377"
复制此命令,然后通过 docker-machine ssh 将其发送给 myvm2,从而让 myvm2 加入 #
$ docker-machine ssh myvm2 "docker swarm join \
--token <token> \
<ip>:<port>"
This node joined a swarm as a worker.
至此, 创建swarm完成。 #
连接 #
使用ssh
连接docker-machine ssh myvm1
,运行docker node ls
查看此中节点。
Mybe like this. #
docker@myvm1:~$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
brtu9urxwfd5j0zrmkubhpkbd myvm2 Ready Active
rihwohkh3ph38fhillhhb84sk * myvm1 Ready Active Leader
mybe not you are ture. 😂
之后,其余东西z有用到再去官网查看吧。 记录与否,取决于俺。